2026年3月 GESP C++ 2级
2026年3月 GESP C++ 2级认证考试真题(含编程操作题部分)
// questions
题目预览
2026年春节联欢晚会上一个武术表演节目《武 BOT》。节目中多个⼈形机器⼈会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器⼈保持原来队列。如果将机器⼈视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。
检测重心的重⼒传感器
预装的AI算法程序
接收动作指令的遥控器
拍摄其他机器⼈的摄像头
下面代码用来找出输入的 NNN 个正整数中最大的一个。如果将代码段用流程图来表⽰,则 L1 标记的代码行应该使用的图形是( )。
int N, max=0, val;
cin >> N;
while(N){
cin >> val;
if(val > max) // L1
max = val;
N--;
}
cout << max;
圆形框
椭圆形框
平行四边形框
菱形框
下面 C++ 代码可以执行,有关说法正确的是( )。
double PI = 3.1415926;
cout << (PI);
为了方便初学者,cout << (PI)和cout << (pi)效果相同,即变量的大小写不敏感
将cout << (PI)修改为cout << (Pi)能正常执行
不能用 PI 做变量名,因为要保存圆周率这个常量
将程序中全部PI都改写为Pai,将能正常执行,不会报错
下面选择项中,与C++表达式!(x > 5 && y <= 10)等价的是( )。
x <= 5 && y > 10
x > 5 || y <= 10
x <= 5 || y > 10
! x > 5 && ! y <= 10
某同学执行C++代码cout << ((0.1 + 0.2) == 0.3)时输出 000,下面最可能的原因是( )。
C++的+运算符在处理小数时存在bug
0.10.10.1 、0.20.20.2 和 0.30.30.3 在计算机中无法用二进制浮点数精确表⽰,导致 0.1+0.20.1 + 0.20.1+0.2 的结果与 0.30.30.3 存在微小误差
==运算符不能用于比较浮点数,只能用于整数
因为 0.1+0.20.1 + 0.20.1+0.2 的数学结果不等于 0.30.30.3
下面的 C++ 代码段执行后其输出是( )。
tnt = 0;
for (int i = 0; i < 5; i++){
for (int j = 0; j < i; j++)
tnt += 1;
cout << tnt << "#";
}
cout << tnt;
0#1#3#6#10#10
1#2#3#4#5#6#7#8#9#10#10
10#10
10
下面的 C++ 代码执行之后的输出是( )。
for ( int i = -2; i < 2; i++)
if (not i % 3)
cout << i << "#";
0#
-2#-1#1#
-1#0#
-2#0#1#
下面的 C++ 代码执行后其输出是( )。
int cnt = 0, i, j;
for (i =1; i < 5; i++){
for (j =0; j < i; j++)
cout << j << "#";
break;
}
if(i >= 5)
cout << (i*j);
0#0#1#0#1#2#0#1#2#3#12
0#0#1#0#1#2#0#1#2#3#
0#
1#
下面 C++ 代码执行后其输出是( )。
int count = 0;
for (int i = 1; i < 4; i++)
for (int j = 1; j < 5; j++){
if (j == 3)
continue;
if (i == 2)
break;
count += 1;
}
cout << (count);
2
4
6
8
下面 444 个选项中,与下面 C++ 代码段具有相同效果的是( )。
i = 0;
while (i < 5){
cout << i;
i += 1;
}
for (i = 0; i < 5; i++)
cout << i;
for (i = 1; i < 5; i++)
cout << i;
for (i = 0; i < 6; i++)
cout << i;
for (i = 1; i < 6; i++)
cout << i;
下面 C++ 代码执行后输出是( )。
int n = 10;
while (n > 0){
n -= 1;
if (n % 3 == 0)
continue;
if (n == 5)
break;
}
cout << n;
0
5
6
7
下面 C++ 代码段执行后,其输出是( )。
int i, j, cnt;
cnt = 0;
for (i = 0; i < 5; i++){
i = -i;
for (j = i; j < -i; j++)
cnt += 1;
i = -i;
}
cout << cnt;
5
15
20
30
某学校图书馆的借阅卡号由 666 位整数组成。前 555 位是顺序编号,第 666 位是校验码,用于防⽌输错。校验码规则如下:将前 555 位数字相加,然后除以 101010 的余数,就是第 666 位数字。如卡号 123455123455123455 的前 555 位之和为 151515,除以 101010 的余数是 555,故第 666 位为 555。下面的C++代码段用于判断卡号是否正确,横线处应填入的代码是( )。
cout << "请输入卡号:";
cin >> N;
order_num = N / 10; // 获得前5位顺序号,假设录入一定为6位正整数
check_num = N % 10; // 获得最后一位
tnt = 0; // 保存前5位之和
for (i = 0; i < 5; i++){
________________;
order_num /= 10;
}
if (__________________)
cout << "符合校验规则";
else
cout << "不符合校验规则";
tnt += order_num / 10
tnt / 10 == check_num
tnt += order_num % 10
tnt % 10 == check_num
tnt = order_num / 10 + tnt
tnt % 10 == check_num
tnt = order_num % 10
tnt / 10 == check_num
下面的 C++ 代码段正常执行后其输出的数字图形是( )。
for (i = 1; i < 5; i++){
for (j = 1; j < i+1; j++)
cout << j;
cout << endl;
}
1
12
123
1234
1
22
333
4444
1
21
321
4321
4
34
234
1234
某学校举办“校园演讲比赛”,每位选手由 888 位评委打分(分数为 000 ~ 101010 的整数),且每位评委必须打分。计分规则:若至少有 555 位评委给出大于等于 666 分,则成绩有效,最终得分为所有 888 位评委的总分;如给出低于 666 分的评委数量超过 555 位,则记为 000 分。以下核心程序段依次输入 888 个分数,并计算最终得分。横线处应填入( )。
total_score = 0; // 所有分数之和
high_count = 0; // ≥6分的评委数量
for (i = 0; i < 8; i++){
cout << "请输入评委分数: ";
cin >> score;
____________________;
if (score >= 6)
________________;
}
if (high_count >= 5)
cout << total_score;
else
cout << 0;
total_score += score
high_count += 1
total_score += score
high_count += score
high_count += 1
total_score += score
total_score *= score
high_count *= 1
小明的妈妈最近刚刚给他买了一块电话手表,除了可以看时间,小明也可以用它和妈妈打电话、收发信息, 那么可以推测这块手表中装有一款特定操作系统。( )
C++ 语句cout << ('4' % '2' == '2' * '2' % 2);执行后的输出是 111。( )
下面的 C++ 代码段执行时将报错,因为 101010 是整数类型, aaa 是布尔类型。由于类型不同,不能进行加法运算。( )
bool a = true;
cout << (10 + a);
下面C++代码段执行后将输出0-3-6-9-。 ( )
for (int i = 0; i < 10; i++){
if (i % 3)
continue;
cout << i << "-";
}
执行下面的 C++ 代码段,如果NNN是基本数据类型,则语句cout << (N);将被执行 000 次或无数次(即死循环)。( )
cin >> N;
while (N)
cout << (N);
下面的 C++ 代码段可正常执行,删除continue不影响执行效果。( )
for (i = 0; i < 10; i++){
i += 1;
continue;
}
cout << (i);
下面的 C++ 代码段用于计算 111 到 NNN 之间且包含N的所有数字中含有的 333 的个数,如 111 到 404040 含有 141414 个 333, ⽽ 111 到 202020 则只含有 222 个 333。如果将while (i != 0)改为while (abs(i)),则执行结果相同。( )
cout << "请输入正整数N:";
cin >> N;
cnt = 0; // 保存3的个数
for (k = 1; k < N + 1; k++){
i = k;
while (i != 0){
if (i % 10 == 3)
cnt += 1;
i /= 10;
}
}
cout << cnt;
下面的 C++ 代码段执行将不会有输出,因为内层循环 jjj 总是 000 开始,i * j % 10 == 0将会被满足,执
行break,故⽽ iii 小于 101010,不会满足if判断条件。( )
for (i = 1; i < 10; i++)
for (j = 0; j < i; j++)
if (i * j % 10 == 0)
break;
if(i >= 10)
cout << (i*j);
下列 C++ 代码执行后将输出1#4#9#16#16。( )
cnt = 0;
for (i = 1; i < 5; i++){
for (j = 1; j < i + 1; j++)
if (i * j % 10 == 0)
break;
if (j >= i + 1)
cout << (i * j) << "#";
}
if(i >= 5)
cout << (i * j);
下面 C++ 代码执行后输出如左图所⽰,将" %d"修改为"%3d"即可实现右图输出。( )
/*
// 左图 // 右图
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18 2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27 3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36 4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45 5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54 6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63 7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72 8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81 9 18 27 36 45 54 63 72 81
*/
for (i = 1; i < 10; i++){
for (j = 1; j < 10; j++)
printf(" %d", i*j);
printf("\n");
}
试题名称:数数
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
对于正整数 nnn,如果 nnn 的所有数位中包含恰好 333 个 222,Alice 会认为这个正整数是美丽的。例如,正整数 241222412224122 中包含 333 个 222,所以 241222412224122 是美丽的;正整数 132132132 中包含 111 个 222,所以 132132132 不是美丽的;正整数 212322212322212322 中包含 444 个 222,所以 212322212322212322 不是美丽的。
Alice 想知道正整数 LLL 到正整数 RRR(包括 LLL 和 RRR)中有多少美丽的正整数,你能帮她数一数吗?
输入格式
输入共 222 行,第一行为正整数 LLL,第二行为正整数 RRR。
输出格式
输出一行,包含一个整数 CCC,表示 LLL 到 RRR 中 CCC 美丽数的数量。
样例输入 #1
2221
2223
样例输出 #1
2
说明/提示
样例解释
222122212221 到 222322232223 中,222122212221 与 222322232223 是美丽的,222222222222 不是美丽的。
数据范围
保证 1≤L≤R≤1061 \leq L \leq R \leq 10^61≤L≤R≤106。
试题名称:画画
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
输入一个正整数 nnn,你需要绘制一个 nnn 行 nnn 列的正方形,绘制规则如下:
- 正方形的四个顶点使用
+绘制; - 除顶点外,第 111 行与第 nnn 行使用
-绘制; - 除顶点外,第 111 列与第 nnn 列使用
|绘制; - 正方形内部使用
*绘制。
输入格式
一行,一个正整数 nnn。
输出格式
输出共 nnn 行,表示对应的正方形。
样例输入 #1
5
样例输出 #1
+---+
|***|
|***|
|***|
+---+
说明/提示
数据范围
保证 3≤n≤1003 \leq n \leq 1003≤n≤100。