GESP C++ 编程二级 · 2026 年 9 月卷
GESP · C++ · 共 27 题 · 满分 100 分
姓名:____________日期:____________得分:____________
- 1.单选题2 分
第二届世界人形机器人运动会开幕式上,机器人方阵通过控制程序来完成整场表演。表演前,工程师们使用集成开发环境(IDE)编写并调试方阵的控制程序。下列关于 IDE 功能的描述,错误的是( )。
- A.可以提供代码自动补全,提高编程效率
- B.可以提供辅助信息,帮助排查程序逻辑错误
- C.可以直接控制机器人电机转动
- D.支持语法高亮,使代码更易阅读
- 2.单选题2 分
计算机 CPU 中的高速缓冲存储器(Cache)主要为提升系统性能而设计。下列关于 Cache 的说法中正确的是( )。
- A.Cache 的容量比主存大,速度比主存快
- B.Cache 通常用于暂存 CPU 频繁访问的数据
- C.Cache 中的数据断电后不会丢失,属于非易失性存储器
- D.Cache 的访问速度比 CPU 寄存器还要快
- 3.单选题2 分
执行如下 C++ 代码,其输出是( )。 cout << (3 == 3.0);
- A.1
- B.1.0
- C.0
- D.-1
- 4.单选题2 分
执行如下 C++ 代码,其输出是( )。 cout << (bool(5) + bool(-5) + bool(5.0));
- A.0
- B.1
- C.2
- D.3 1 / 10
- 5.单选题2 分
判断年份N是否为闰年的规则是:能被4整除但不能被100整除,或者能被400整除。以下 C++ 表达式中,能正确判断N是否为闰年的是( )。
- A.(N % 4 == 0 && N % 100 != 0) || (N % 400 == 0)
- B.N % 4 == 0 && N % 100 == 0 || N % 400 == 0
- C.(N / 4 == 0 && N / 100 != 0) || (N / 400 == 0)
- D.(N % 4 == 0 && N % 100 != 0) && (N % 400 == 0)
- 6.单选题2 分
执行如下 C++ 代码,其输出是( )。 int tot, i; tot = 0; for (i = 0; i < 10; i++) if (i) tot += 1; cout << tot;
- A.0
- B.8
- C.9
- D.10
- 7.单选题2 分
执行如下 C++ 代码,当输入4时,其输出是( )。 int n, tot, i, j; cin >> n; tot = 0; for (i = 1; i < n; i++) for (j = 1; j < i; j++) tot += 1; cout << tot;
- A.1
- B.3
- C.6
- D.10
- 8.单选题2 分
下面的 C++ 代码执行后其输出是( )。 int tnt, i; tnt = 0; for (i = 0; i < 10; i++) if (i % 3) tnt += i; cout << tnt;
- A.12
- B.18
- C.22
- D.27
- 9.单选题2 分
下面的 C++ 代码之后的输出是( )。2 / 10 int tot = 0, i; for (i = -5; i < 5; i++) if (not(i % 3 != 0)) tot += 1; cout << tot;
- A.2
- B.3
- C.7
- D.9
- 10.单选题2 分
有关如下 C++ 代码描述,变量都是整型,错误的是( )。次数增多,效率有所影响。 int n, limit, i; cout << "请输入一个正整数: "; cin >> n; if (n <= 1) printf("%d非素数", n); else if (n == 2) printf("2是素数"); else { limit = sqrt(n) + 1; for (i = 2; i < limit; i++) if (n % i == 0) { printf("%d非素数", n); break; } if (i >= limit) printf("%d是素数", n); }
- A.n <= 1条件用于判断输入0、1以及负数时的情况,不能省略。
- B.n == 2条件及其相关代码省略,程序的输出结果没有区别。
- C.break语句不可以省略,否则非素数还将执行最后一行的语句。
- D.limit = sqrt(n) + 1语句中的1可以修改为其他大于等于1的正整数,执行结果不会有错误,但循环
- 11.单选题2 分
执行以下 C++ 代码后,最终的输出结果是( )。 int total, i, j; total = 0; i = 1; while (i <= 3) { for (j = 1; j < i + 1; j++) total += i * j; i += 1; } cout << total;
- A.9
- B.11
- C.23
- D.25
- 12.单选题2 分
下面 C++ 代码执行后其输出是( )。3 / 10 int count, i, j; count = 0; for (i = 1; i < 4; i++) for (j = 0; j < i; j++) { if (j % 3 == 0) continue; count += 1; if (i * j >= 2) break; } printf("%d %d %d", i, j, count);
- A.2 3 2
- B.3 0 2
- C.4 1 2
- D.4 2 3
- 13.单选题2 分
如下的 C++ 代码执行时输入12将输出如下数字图形。注意:最后一行之前没有空格。横线处应填入的代码是( )。 0 12 345 6789 01234 567890 1234567 89012345 678901234 5678901234 56789012345 678901234567 int line, i, j, k; i = 0; cout << "请输入行数:"; cin >> line; for (j = 0; j < line; j++) { for (k = 0; k < ___________; k++) // L1 cout << " "; for (k = 0; k < j + 1; k++) { cout << i; i += 1; if (i >= 10) i = 0; } cout << endl; }
- A.line - j - 1
- B.line - j
- C.line
- D.line + 1
- 14.单选题2 分
小北的身高是1.65米。班上有n个小朋友,小北想和身高最接近自己的人交朋友。如果有多个小朋友与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是( )。4 / 10 int n, i; float target, h, best_height, min_diff, diff; cout << "请输入小朋友的人数: "; cin >> n; target = 1.65; best_height = 0.0; min_diff = 100.0; for (i = 0; i < n; i++) { cout << "请输入第 " << i << " 个小朋友的身高: "; cin >> h; diff = abs(h - target); if (____________________) { // L1 min_diff = diff; best_height = h; } } cout << "小北的朋友身高为: " << best_height;
- A.diff < min_diff || (diff == min_diff && h < best_height)
- B.diff <= min_diff && h < best_height
- C.diff < min_diff && h < best_height
- D.diff < min_diff || h < best_height
- 15.单选题2 分
小北的身高是1.65米。班上有n个小朋友,小北想和身高最接近自己的人交朋友。如果有多个小朋友与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是( )。5 / 10 int n, i; float target, h, best_height, min_diff, diff; cout << "请输入小朋友的人数: "; cin >> n; target = 1.65; best_height = 0.0; min_diff = 100.0; for (i = 0; i < n; i++) { cout << "请输入第 " << (i + 1) << " 个小朋友的身高: "; cin >> h; if (h > target) diff = h - target; else diff = target - h; if (diff < min_diff) { min_diff = diff; best_height = h; } else if (diff == min_diff) { __________________ __________________ } } cout << "小北的朋友身高为:" << best_height;
- A.if (h < best_height) best_height = h;
- B.if (h > best_height) best_height = h;
- C.if (h > target) best_height = h;
- D.if (h >= best_height) best_height = h;
- 16.判断题2 分
C++ 程序执行cin或scanf语句时通常是使用键盘等输入设备来输入某个变量的值。
- 17.判断题2 分
执行 C++ 语句cout << ( 5 && 2 );将输出1。
- 18.判断题2 分
C++ 表达式2 * - '2' / 4的值是-1。
- 19.判断题2 分
如下 C++ 代码执行后的输出是10。 int a; a = 5; a == +5; cout << a;
- 20.判断题2 分
执行 C++ 代码cout << (not not 5)将输出5。
- 21.判断题2 分
下面 C++ 代码执行后将输出369。 for (int i = 1; i < 10; i++) if (not(i % 3)) cout << i;
- 22.判断题2 分
N是整数,执行如下 C++ 代码,将能输出0到N之间(包含N )所有数之和。 int N, tot, i; cin >> N; tot = 0; for (i = 0; i < N + 1; i++) tot += i; cout << tot;
- 23.判断题2 分
如下 C++ 代码执行后,输出值为0。6 / 10 int cnt, i, j; cnt = 0; for (i = 0; i < 10; i++) { continue; for (j = 0; j < i; j++) cnt += 1; } cout << i * cnt;
- 24.判断题2 分
求解鸡兔同笼。在如下 C++ 代码中,tou代表鸡和兔的头总数,jiao代表鸡和兔的脚总数。先后两个输入均为正整数。该程序能求解鸡兔同笼。 int tou, jiao, tu_tou, ji_tou; cout << "请输入鸡和兔的头总数:"; cin >> tou; cout << "请输入鸡和兔的脚总数:"; cin >> jiao; for (tu_tou = 0; tu_tou < tou + 1; tu_tou++) { ji_tou = tou - tu_tou; if (tu_tou * 4 + ji_tou * 2 == jiao) printf("兔的数量=%d,鸡的数量=%d\n", tu_tou, ji_tou); } if (tu_tou == tou) printf("无解\n");
- 25.判断题2 分
如果N和M均为整数,下列 C++ 代码则可以判断正整数N是M的平方。比如9是3的平方。 int N, M; cout << "请输入正整数N:"; cin >> N; cout << "请输入整数M:"; cin >> M; if (int(sqrt(N)) == abs(M)) printf("%d是%d的平方\n", N, M);
- 26.编程题25 分
试题名称:直角三角形 时间限制:1.0 s 内存限制:512.0 MB 题目描述:小双刚学会勾股定理,得知直角三角形的斜边的平方等于两直角边的平方和。 小双创造了直角三角形数列:数列前两项由小双指定,从第三项开始,数列中的每个数字的平方等于前两项的平方和。 例如,第一项是 3.0,第二项是 4.0,则第三项是 √(3.0^2 + 4.0^2) = 5.0。其中 √x 表示 x 的算术平方根,可以使用 C/C++/Python 标准库中对应函数计算。 小双给定了数列的前两项,并给定一个数列上限,想让你算算数列的第几项会超过小双给定的数列上限? 输入格式:输入三行,第一行一个浮点数是数列第一项,第二行一个浮点数是数列第二项,第三行一个浮点数表示数列上限。 输出格式:输出一个正整数,表示第几项开始会超过小双给定的数列上限。 输入样例1: 3.0 4.0 10.0 输出样例1: 6 样例解释:数列依次为 3.0, 4.0, √(3.0^2 + 4.0^2) = 5.0, √(4.0^2 + 5.0^2) = 6.403124…, √(5.0^2 + 6.403124^2) = 8.124038…, √(6.403124^2 + 8.124038^2) = 10.344080…,因此第 6 项会超过上限。 数据范围:输入均为不超过 10000 的正数。题目保证给定第一项小于第二项。
作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。
- 27.编程题25 分
试题名称:字符变换 时间限制:1.0 s 内存限制:512.0 MB 题目描述:小明有一个 8 × 16 的画布(8 行 16 列),画布中的格子从上到下从左到右编号,左上的编号为 1,第一排最后一个的编号为 16,最后一排第一个编号为 113,右下为 128。 初始画布中的每个格子都是 *,随后小明会给定三个正整数,小明会将对应编号的格子变为该正整数对应的 ASCII 编码字符。 最后请帮小明输出整个画布。 输入格式:输入包含三行,每行一个正整数,表示需要替换的画布格子编号。 输出格式:输出 8 × 16 的画布。 输入样例1: 48 65 97 输出样例1: **************** **************** ***************0 **************** A*************** **************** a*************** **************** 数据范围:输入范围是 48 到 57,65 到 90,以及 97 到 122(即 ASCII 编码的 0 到 9,A 到 Z,以及 a 到 z)。
作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。