GESP 3月认证C++三级真题
GESP 3月认证C++三级真题
- 场次:2024年3月
- 满分:100 分
- 题目来源:官方直发原件
1 单选题(每题 2 分,共 30 分)
整数 −5 的 16 位补码表示是( )。
如果 16 位短整数 −2 的二进制是"FFFE",则短整数 −4 的十六进制是( )。
下面 C++ 代码执行后的输出是( )。
int main()
{
cout << (3|16) << endl;
cout << endl;
return 0;
}
定义整数 int x = -5,则执行C++代码 cout << (x == (x << 1 >> 1)) 输出是( )。
已知字符 '0' 的ASCII编码的十进制表示为 48,则执行下面 C++ 代码后,输出是( )。
int main()
{
string s="316";
int n=s.length();
int x=0;
for(int i = 0; i < n; i++)
x += s[i];
cout << x << endl;
cout << endl;
return 0;
}
下面 C++ 代码执行后数组中大于 0 的数的特征是( )。
int main()
{
int a[20],i;
for(i = 0; i < 20; i++)
a[i] = i+1;
for(int i = 0; i < 20; i++)
if((a[i]%2)&&(a[i]%3))
a[i] = 0;
for(i = 0; i < 20; i++)
if(a[i])
cout << a[i] << " ";
cout << endl;
return 0;
}
执行下面 C++ 代码后输出的第一个数是( )。
int main()
{
int a[20],i;
for(i = 0; i < 20; i++)
a[i] = i+1;
for( ; i > 0; i--)
cout << a[i-1] << " ";
cout << endl;
return 0;
}
在下列代码的横线处填写( ),可以使得输出是 GESP IS INTERESTING。
int main()
{
string str="gEsP is Interesting";
int x = str.length();
for(int i = 0; i < x; i++)
if ((str[i]>='a') && (str[i]<='z'))
________________________;
cout << str << endl;
cout << endl;
return 0;
}
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写版式题干
原卷作
________________________;,常规写法应为___________________;洛谷压短填空下划线并去掉 length() 后空行;已按官方 PDF 第 3 页列位恢复。
已按官方原件恢复:现为原卷原文
假设英文句子由若干词构成。下面 C++ 代码统计输出的词数是( )。
int main()
{
string str="gEsP is Interesting !";
int x = str.length();
int nwords = 0;
for(int i = 0; i < x; i++)
if (str[i]==' '){
nwords++;
while(str[++i]==' ') ;
}
cout << nwords << endl;
cout << endl;
return 0;
}
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写数值印错题干
原卷作
string str="gEsP is Interesting !";,常规写法应为string str = "gEsP is Interesting !";洛谷把原卷字符串里 Interesting 两侧的双空格压成单空格;已按官方 PDF 第 3–4 页列位恢复。
已按官方原件恢复:现为原卷原文
C++ 的字符变量的码值是整数,下面字面量形式的字符码值最大的是( )。
下面 C++ 程序执行的结果是( )。
int main()
{
int a[20],i;
int cnt=0;
for(i = 0; i < 20; i++)
a[i] = i+1;
for( ; i > 1; i--)
if((a[i-1]+a[i-2])%3)
cnt++;
cout << cnt << endl;
cout << endl;
return 0;
}
定义字符数组 char str[20] = {'G', 'E', 'S', 'P'};,则 str 的字符串长度为( )。
定义整型变量 int a=3, b=16,则 a|b 的值和 a+b 的关系是( )。
小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是( )。
中国计算机学会(CCF)在 2024 年 1 月 27 日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是( )。
2 判断题(每题 2 分,共 20 分)
判断题「√」表示正确,「×」表示错误
任意整数 a 的二进制反码与补码都有 1 位不同。( )
对整型变量 int a = 3,执行 C++ 代码 a<<2 将把 2 输出到 a 中。( )
下面 C++ 代码可以计算 1 到 100 的累加和,采用的是穷举法。
int main()
{
int i,sum=0;
for(int i = 1; i <= 100 ; i++)
sum += i;
cout << sum << endl;
cout << endl;
return 0;
}
一个 int 类型变量 a,执行操作 (a<<2>>2) 后的值一定是 a。( )
在C++语言中,(010<<1) 执行结果是 100。( )
执行下面 C++ 代码后将输出 2。( )
int main()
{
string str="gEsP is Interesting";
int x = str.find("s");
cout << x << endl;
cout << endl;
return 0;
}
在 C++ 语言中,字符数组被定义时,它的大小可以调整。( )
对定义的数组 int a[7] = {2, 0, 2, 4, 3, 1, 6},可以用简单循环就找到其中最小的整数。( )
小杨今年春节回奶奶家了,奶奶家的数字电视要设置 ip 地址并接入到 WIFI 盒子才能收看节目,那这个 WIFI 盒子具有路由器的功能。( )
任何一个 for 循环都可以转化为等价的 while 循环( )。
3 编程题(每题 25 分,共 50 分)
字母求和
C++时间 1 s内存 512 MB标准输入输出
小杨同学发明了一种新型密码,对于每一个小写英文字母,该小写字母代表了一个正整数,即该字母在字母顺序中的位置,例如字母 a 代表了正整数 1,字母 b 代表了正整数 2;对于每一个大写英文字母,该大写字母代表了一个负整数,即该字母的 ASCII 码的相反数,例如字母 A 代表了正整数 −65。小杨同学利用这种方式对一个整数进行了加密并得到了一个由大写字母和小写字母组成的字符串,该字符串中每个字母所代表数字的总和即为加密前的整数,例如 aAc 对应的加密前的整数为 1+(−65)+3=−61。
对于给定的字符串,请你计算出它对应的加密前的整数是多少。
输入格式
第一行一个正整数 n,表示字符串中字母的个数。
第二行一个由大写字母和小写字母的字符串 T,代表加密后得到的字符串。
输出格式
输出一行一个整数,代表加密前的整数。
样例
3 aAc
-61
数据范围
对于全部数据,保证有 1≤n≤105。
原文保真说明:来源改写 2 处(照原卷保留,未作修改)
来源题面被改写错字题面描述
原卷作
利用这种方式对一个整数进行了加密,常规写法应为利用这种放缩对一个整数进行了加密洛谷 B3956 题面作「放缩」;官方 PDF 第 6 页作「方式」,已恢复。
已按官方原件恢复:现为原卷原文
来源题面被改写数值印错题面描述
原卷作
例如字母 `A` 代表了正整数 $-65$,常规写法应为例如字母 `A` 代表了负整数 $-65$洛谷把原卷「正整数 -65」改成「负整数 $-65$」;第 6 页图像仍作「正整数 -65」,已按原卷恢复。
已按官方原件恢复:现为原卷原文
你的代码(C++)
提交后由评测机编译运行,结果见下方76 B / 64 KB
判题结果
完全平方数
C++时间 1 s内存 512 MB标准输入输出
小杨同学有一个包含 n 个非负整数的序列 A,他想要知道其中有多少对下标组合 ⟨i,j⟩(1≤i<j≤n),使得 Ai+Aj 是完全平方数。
如果 x 是完全平方数,则存在非负整数 y 使得 y×y=x。
输入格式
第一行一个非负整数 n,表示非负整数个数。
第二行包含 n 个非负整数 A1,A2,…An,表示序列 A 包含的非负整数。
输出格式
输出一行一个整数表示答案。
样例
5 1 4 3 3 5
3
数据范围
对于全部数据,保证有 1≤n≤1000,0≤Ai≤105。
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写错字输入格式
原卷作
第二行包含 $n$ 个非负整数,常规写法应为第二入行包含 $n$ 个非负整数洛谷 B3957 输入格式 OCR 作「第二入行」;官方 PDF 第 8 页作「第二行」,已恢复。其余题面/样例仍以洛谷为准。
已按官方原件恢复:现为原卷原文
你的代码(C++)
提交后由评测机编译运行,结果见下方76 B / 64 KB