2025年6月 GESP C++ 2级
2025年6月 GESP C++ 2级认证考试真题(含编程操作题部分)
// questions
题目预览
2025年4月19日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间,跑动着的机器人会利用身上安装的多个传感器所反馈的数据来调整姿态、保持平衡等,那么这类传感器类似于计算机的( )。
处理器
存储器
输入设备
输出设备
小明购置的计算机使用一年后觉得内存不够用了,想购置一个容量更大的内存条,这时他需要的内存条是( )。
RAM
ROM
CACHE
EPROM
下面 C++ 代码执行后的输出是( )。
int a=3;
float b = 3.5;
cout << (a *= b);
333
3.53.53.5
101010
111111
下面 C++ 代码用于获得正整数的第 3 位数,如 123412341234 则输出 222。如果是一位数或两位数,则输出 000。横线处应填入的代码是( )。
int N, remainder;
cout << "请输入正整数:";
cin >> N;
cout << _________________;
N % 1000 / 100
N / 1000 % 100
N / 1000 / 100
N % 100 / 100
下面 C++ 代码执行,其输出是( )。
int a, b = (6, 28);
b == a;
a = b;
cout << a << ' ' << b;
666 282828
666 666
282828 666
282828 282828
今天星期六,其后第 NNN 天星期几?如果是星期一到星期六输出形如:星期 111 、星期 222 等,星期天则输出星期天。下面的 C++ 代码用于完成上述要求,横线处应填上的代码是( )。
int N, remainder;
cin >> N;
remainder = _____________;
if(remainder == 0)
printf("星期六后第%d天是星期天\n", N);
else
printf("星期六后第%d天是星期%d\n", N, remainder);
(N + 6) / 7
(N + 6) // 7
N % 7
(N + 6) % 7
下面的 C++ 代码执行后其输出是( )。
int i, Sum = 0;
for (i = 1; i < 10; i++){
Sum += i;
if(i % 2) continue;
if(i % 7) break;
}
cout << Sum;
454545
282828
333
000
下面 C++ 代码执行后其输出是( )。
int i, j;
for(i = 1; i < 12; i++)
for(j = 1; j < i; j++)
if(i * j % 2 == 1)
break;
cout << i * j;
110110110
222222
121212
333
下面 C++ 代码执行后输出是( )。
int i, cnt = 0;
for(i = -99; i < 100; i += 2)
cnt = 1 + cnt;
cout << cnt;
101101101
100100100
999999
989898
下面 C++ 代码执行后输出是( )。
int i;
for(i = 1; i < 10; i++){
if(i % 3 != 0){
printf("A#");
continue;
}
else
break;
printf("0#");
}
if(i == 10) cout << "1";
A#A#
A#0#A#0
A#A#1
A#0#A#0#1
下面 C++ 代码执行后的输出是( )。
int i,j;
for(i = 0; i < 3; i++)
for(j = 0; j < i; j++)
printf("%d#%d-", i, j);
printf("END");
0#0-1#0-2#0-2#1-END
0#0-1#0-1#1-2#0-2#1-2#2-3#0-3#1-3#2-END
0#0-1#0-1#1-2#0-2#1-2#2-END
1#0-2#0-2#1-END
下面 C++ 代码执行后,将输出不能被 333 整除且除以 555 余数为 222 的数。下列选项不能实现的是( )。
int i,j;
for(i = 0; i < 100; i++)
if(______________________)
cout << i << endl;
(i % 3 != 0) && (i % 5 == 2)
(i % 3) && (i % 5 == 2)
(i % 3) && !(i % 5 != 2)
!(i % 3) && (i % 5 == 2)
下面 C++ 代码用于判断一个大于 000 的正整数是几位数,横线处应填入代码先后是( )。
int N, cnt;
cout << "请输入大于0的正整数:";
cin >> N;
cnt = 0;
while (_________){
cnt += 1;
______________;
}
cout << cnt;
N > 1
N = N / 10
N > 1
N /= 10
N == 0
N /= 10
N > 0
N /= 10
判断一个数是否为自守数。自守数的定义是如果一个数的平方其尾数与该数相同,则为自守数,如 252525 的平方是 625625625,其尾数是 252525,所以 252525 是自守数。相关说法错误的是( )。
int N, N1, M1;
cout << "输入一个正整数:";
cin >> N;
N1 = N, M1 = N * N;
bool Flag = true;
while (N1 > 0){
if (N1 % 10 != M1 % 10){
Flag = false;
break;
}
else{
N1 = N1 / 10, M1 = M1 / 10;
}
}
if (Flag == true)
printf("%d的平方是%d,是自守数", N, N * N);
else
printf("%d的平方是%d,不是自守数", N, N * N);
如果 Flag 在循环中不被改为 false,则说明该数是自守数
代码 if (N1 % 10 != M1 % 10) 用于判断其个位数是否相等,如果不等,则表明不是自守数
代码 N1 = N1 / 10, M1 = M1 / 10 将个位数去掉
将 N1 > 0 改为 N > 0 效果相同
下面 C++ 代码实现输出如下图形,相关说法错误的是( )。
请输入层数: 10
0
12
345
6789
01234
567890
1234567
89012345
678901234
5678901234
int line_number, now_number;
int i,row;
cout << "请输入行数: ";
cin >> line_number;
now_number = 0;
for (row = 1; row < line_number + 1; row++){ // L1
for (i = 0; i < row; i++){ // L2
cout << now_number;
now_number += 1;
if (now_number == 10) now_number = 0; // L3
}
cout << endl;
}
代码 now_number = 0 移动到 L1 和 L2 标记的两行代码之间,效果维持不变
代码 now_number += 1 修改为 now_number = 1 + now_number 效果维持不变
将代码 now_number == 10 调整为 now_number > 9 效果维持不变
将最后一行的 cout << endl 修改为 cout << "\n" ,效果维持不变
人们现在参加很多闭卷考试时通常都不允许带智能手机、平板电脑等,此外很多种智能手表同样因为具有嵌入操作系统及通信等功能,所以也不允许随身携带。( )
在 C++ 代码中,假设 NNN 为正整数,则 N / 10 舍弃个位数。如果 NNN 小于 101010,则其值为 000,大于 101010 则是舍弃个位数的数。( )
下列 C++ 代码执行后,其输出为 10 20,即 a == b 和 b == a 对 aaa 和 bbb 的值没有任何影响。( )
int a = 10, b = 20;
a == b;
b == a;
cout << (a, b);
aaa 和 bbb 分别是 C++ 的整型变量,如果表达式 max(a, b) == min(a, b) 的值为真,则说明 aaa 和 bbb 相等。
( )
下面 C++ 代码编译时将报错,因为字符变量 aaa 被赋值了浮点值。 ( )
char a = '1';
a = 45.6;
cout << a;
下面 C++ 代码执行时如输入 59.9959.9959.99 ,将输出及格两个汉字。( )
int score;
cout << "请输入学生成绩: ";
cin >> score;
if (score < 60)
cout << "不及格";
else
cout << "及格";
在下面的 C++ 代码中,因为 continue 将被执行,因此不会有输出。( )
int i;
for (i = 1; i < 10; i++)
if (i % 2 == 0)
continue;
if (i == 10)
cout << "END";
下面的 C++ 代码执行后将输出 151515。( )
int Sum = 0;
for (int i = 0; i < 5; i++)
Sum += i;
cout << Sum;
将下面 C++ 代码中的 (int i = 5; i > 1; i--) 调整为 (int i = 1; i < 5; i++) 输出结果相同,因为 555 到 111 与 111 到 555 的求和相同。( )
int tnt;
tnt = 0;
for (int i = 5; i > 1; i--)
tnt += i;
cout << tnt;
cout << endl;
为实现如下效果,即 NNN 行 NNN 列字符。当输入是奇数时,中间列为 *,其他是 -;当输入是偶数时,则中间两列是 *,其他是 -。字符阵列后的代码能实现其效果。( )
/*
5
--*--
--*--
--*--
--*--
--*--
*/
int N;
cin >> N;
int i,j;
for (i = 0; i < N; i++){
for (j = 0; j < N; j++)
if ((j == N / 2) || (j == (N-1) / 2))
cout << "*";
else
cout << "-";
cout << endl;
}
试题名称:数三角形
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
直角三角形有两条直角边与一条斜边,设两条直角边的长度分别为 a,ba, ba,b,则直角三角形的面积为 ab2\frac{ab}{2}2ab。
请你计算当直角边长 a,ba, ba,b 均取不超过 nnn 的正整数时,有多少个不同的面积为整数的直角三角形。直角边长分别为 a,ba, ba,b 和 a′,b′a', b'a′,b′ 的两个直角三角形相同,当且仅当 a=a′a = a'a=a′, b=b′b = b'b=b′ 或者 a=b′a = b'a=b′, b=a′b = a'b=a′。
输入格式
一行,一个整数 nnn,表示直角边长的最大值。
输出格式
输出一行,一个整数,表示不同的直角三角形数量。
样例输入 #1
3
样例输出 #1
3
样例输入 #2
5
样例输出 #2
9
说明/提示
对于所有测试点,保证 1≤n≤10001 \leq n \leq 10001≤n≤1000。
试题名称:幂和数
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
对于正整数 nnn,如果 nnn 可以表为两个 222 的次幂之和,即 n=2x+2yn = 2^x + 2^yn=2x+2y(x,yx, yx,y 均为非负整数),那么称 nnn 为幂和数。
给定正整数 l,rl, rl,r,请你求出满足 l≤n≤rl \leq n \leq rl≤n≤r 的整数 nnn 中有多少个幂和数。
输入格式
一行,两个正整数 l,rl, rl,r,含义如上。
输出格式
输出一行,一个整数,表示 l,rl, rl,r 之间幂和数的数量。
样例输入 #1
2 8
样例输出 #1
6
样例输入 #2
10 100
样例输出 #2
20
说明/提示
对于所有测试点,保证 1≤l≤r≤1041 \leq l \leq r \leq 10^41≤l≤r≤104。