GESP C++ 编程二级 · 2026 年 6 月卷
GESP · C++ · 共 27 题 · 满分 100 分
姓名:____________日期:____________得分:____________
- 1.单选题2 分
学校组织到未来农场参观,小明听讲解员介绍,在智能温室中,湿度传感器可以连续检测土壤的湿度变化,并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问,这里的湿度传感器所发挥的作用,类似于计算机系统中的哪一类组件?()
- A.处理器
- B.存储器
- C.输入设备
- D.输出设备
- 2.单选题2 分
小明去农场参观回来后就在自己的电脑上安装了一个 3D 农场仿真模拟系统,因为他今年买的二手电脑有点老旧,系统运行时经常弹出“系统内存不足”的警告,导致系统卡顿严重。他计划通过增加物理内存来解决问题。请问他应该购买以下哪种硬件组件?()
- A.机械硬盘
- B.内存条
- C.图形显卡
- D.移动硬盘
- 3.单选题2 分
有关如下 C++ 代码的说法,正确的是()。 1 float a = 3 + 3.5; 2 cout << a;
- A.代码执行将报错。如果将a = 3 + 3.5改为a = float(3) + 3.5将能正常执行。
- B.代码执行将报错。如果将a = 3 + 3.5改为a = 3.0 + 3.5将能正常执行。
- C.代码能正常执行,将输出6。
- D.代码能正常执行,将输出6.5。
- 4.单选题2 分
下面选择项中,与 C++ 表达式not (x > 5 or y <= 10)等价的是()。
- A.x <= 5 or y > 10
- B.x > 5 and y <= 10
- C.x <= 5 and y > 10
- D.not x > 5 and not y <= 10
- 5.单选题2 分
小明在某开发环境中执行 C++ 代码 cout << (2.5 + 2.25) << ' ' << (2.2 + 2.1) 时输出 4.75 4.300000000000001,其原因最可能是( )。
- A.C++ 的 + 运算符在处理浮点数时有时正确,有时错误
- B.某些浮点数难以精确表示,导致微小误差
- C.+ 运算符不能用于浮点数,只能用于整数
- D.因为 cout 函数难以输出太长的数值
- 6.单选题2 分
执行如下 C++ 程序后,当输入4时,输出的最后一行是()。 1 int n; 2 cin >> n; 3 for (int i = n; i > 0; i--) { 4 for (int j = 0; j < i; j++) 5 cout << j + 1 << ' '; 6 cout << endl; 7 }
- A.0
- B.1
- C.1 2
- D.1 2 3 4
- 7.单选题2 分
下面的 C++ 代码执行后其输出是()。 1 int tnt = 0; 2 for (int i = 1; i < 5; i += 3) { 3 for (int j = 0; j < i; j++) 4 tnt += 1; 5 cout << tnt << "#"; 6 } 7 cout << tnt;
- A.1#5#5
- B.1#5#5#
- C.1#5#12#12
- D.0
- 8.单选题2 分
下面的 C++ 代码执行之后的输出是()。 1 int i; 2 for (i = -2; i < 2; i++) 3 if (not i % 3 == 0) 4 cout << i << "#"; 5 cout << i;
- A.-2#-1#1#2
- B.-2#-1#1#2#3
- C.1#2#3
- D.0#1#2#3
- 9.单选题2 分
下面的 C++ 代码执行后其输出是( )。 1 int cnt = 0, i, j; 2 for (i = 0; i < 3; i++) { 3 j = i; 4 while (j) { 5 cnt += 1; 6 j -= 1; 7 } 8 } 9 cout << i << ' ' << j << ' ' << cnt;
- A.3 0 3
- B.2 0 4
- C.2 0 5
- D.3 0 5
- 10.单选题2 分
下面 C++ 代码执行后其输出是()。 1 int count = 0, i, j; 2 for (i = 1; i < 4; i++) 3 for (j = 0; j < i; j++) { 4 if (j % 3 != 0) 5 continue; 6 count += 1; 7 break; 8 } 9 cout << i << ' ' << j << ' ' << count;
- A.4 0 4
- B.3 0 0
- C.3 2 0
- D.4 0 3
- 11.单选题2 分
如下 C++ 代码执行后输出是 1 2 3 4 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7。横线处应该填入的运算符是( )。 1 8 9 10 11 5 6 7。横线处应该填入的运算符是()。 2 int num = 1; 3 for (int i = 0; i < 35; i++) { 4 cout << num << " "; 5 if (num _______ 10) 6 num _______ 2; 7 else 8 num _______ 1; 9 }
- A.> /= +=
- B.>= %= +=
- C.> /= =+
- D.>= %= =+
- 12.单选题2 分
如下数字图形在通过执行后续的 C++ 代码时,输入 10 来输出。横线处应填入的代码是( )。 1 1 1 1 1 1 1 1 1 1 1 2 1 1 0 0 0 0 0 0 0 1 3 1 0 1 0 0 0 0 0 0 1 4 1 0 0 1 0 0 0 0 0 1 5 1 0 0 0 1 0 0 0 0 1 6 1 0 0 0 0 1 0 0 0 1 7 1 0 0 0 0 0 1 0 0 1 8 1 0 0 0 0 0 0 1 0 1 9 1 0 0 0 0 0 0 0 1 1 10 1 1 1 1 1 1 1 1 1 1 11 int N; 12 cin >> N; 13 for (int i = 1; i < N + 1; i++) { 14 for (int j = 1; j < N + 1; j++) 15 if (________) 16 cout << "1 "; 17 else 18 cout << "0 "; 19 cout << endl; 20 }
- A.i == j and i == 1 and j == 1 and i == N and j == N
- B.i == j or i == 1 or j == 1 or i == N or j == N
- C.i == j or i == 0 or j == 0 or i == (N + 1) or j == (N + 1)
- D.i == j and i == 1 and j == 1 and i == (N + 1) and j == (N + 1)
- 13.单选题2 分
英文 corner case 通常翻译为极端案例或边角案例,通常指正常范围以外的问题或者情形。在如下 C++ 代码中,变量都是整型,则 corner case 最应该是( )。
- A.tnt = 0, cnt = 0是corner case,应分为两行
- B.while(1)是corner case,因为while(1)将会导致死循环
- C.cin >> score是corner case,因为输入数据前应该提示整型数据
- D.cout << tnt / cnt是corner case,因为如果直接输入-1,将导致执行错误,虽然这种情况较为罕
- 14.单选题2 分
如下 C++ 代码执行后,输入 4 后,输出的数字图形是( )。 1 int n; 2 cin >> n; 3 for (int i = n; i > 0; i--) { 4 for (int j = 0; j < n - i; j++) 5 cout << "0 "; 6 for (int k = 0; k < i; k++) 7 cout << k + 1 << " "; 8 cout << endl; 9 } 10 1 2 3 4 11 1 2 3 0 12 1 2 0 0 13 1 0 0 0 14 1 2 3 4 15 0 1 2 3 16 0 0 1 2 17 0 0 0 1 18 1 2 3 4 19 2 3 4 0 20 3 4 0 0 21 4 0 0 0 22 0 0 0 1 23 0 0 1 2 24 0 1 2 3 25 1 2 3 4
- A.

- B.

- C.

- D.

- A.
- 15.单选题2 分
某学校举办“校园演讲比赛”,每位选手由 8 位评委打分(分数为 0 ~ 10 的整数),且每位评委必须打分。计分规则:去掉一个最高分,去掉一个最低分。如下程序通过键盘先输入选手编号,然后依次输入 8 个分数,并计算最终得分。下列说法正确的是( )。 1 for (int i = 0; i < 10; i++) { 2 int id, score; 3 printf("输入选手编号: "); 4 scanf("%d", &id); 5 int max_score = 0, min_score = 100; // 最高分和最低分 6 int total_score = 0; // 总分 7 for (int j = 1; j < 9; j++) { 8 printf("输入选手第%d个成绩:", j); 9 scanf("%d", &score); 10 if (max_score < score) 11 max_score = score; 12 if (min_score > score) 13 min_score = score; 14 total_score += score; 15 } 16 total_score = total_score - max_score - min_score; 17 printf("%d号选手的成绩:\ 18 去掉一个最高分%d,\ 19 去掉一个最低分%d,\ 20 最后成绩是:%d", id, max_score, min_score, total_score); 21 }
- A.上述代码能完成题目要求
- B.max_score = 0, min_score = 100 应修改为 max_score = 0, min_score = 0
- C.max_score < score 和 min_score > score 必须相应修改为 <= 和 >=
- D.total_score = total_score - max_score - min_score 不能达到预期,可修改如下: int total = total_score - max_score - min_score; total_score = total;
- 16.判断题2 分
又到期末考试周,小明发现这次许多闭卷考试不仅禁止携带手机、平板电脑,还有最近比较时髦的各类 AI眼镜(也有叫智能眼镜)也同样不允许带入考场。这些 AI 眼镜应该也是内置了操作系统并可能支持 Wi-Fi 或蓝牙连接。
- 17.判断题2 分
C++ 代码cout << (not ('5' % 2 == 0) == ((not '5' % 2) == 0))执行后的输出是1。
- 18.判断题2 分
执行 C++ 语句cout << (int(3.5) * 2)将输出6。
- 19.判断题2 分
下面 C++ 代码执行后将输出1-4-7-。 1 for (int i = 1; i < 10; i += 3) { 2 if (not i % 3) 3 break; 4 cout << i << "-"; 5 }
- 20.判断题2 分
执行如下 C++ 代码,将从小到大依次输出abs(N)个整数,并在最后输出1。 1 int N; 2 cin >> N; 3 int start_num = 1, end_num = N + 1, i; 4 if (N < 0) 5 start_num = N, end_num = 0; 6 for (i = start_num; i < end_num; i++) 7 cout << i << " "; 8 cout << endl << ((i - 1) == abs(N)) << endl;
- 21.判断题2 分
如下 C++ 代码执行后,输出值为9。 1 int cnt = 0, i; 2 for (i = 0; i < 10; i++) { 3 for (int j = 0; j < i; j++) 4 cnt += 1; 5 break; 6 } 7 cout << i;
- 22.判断题2 分
如下 C++ 代码执行时如输入10,输出将是100。 1 int cnt = 0, N; 2 cout << "请输入正整数:"; 3 cin >> N; 4 for (int i = 0; i < N; i++) 5 for (int j = -i; j < i; j++) 6 cnt += 1; 7 cout << cnt;
- 23.判断题2 分
如下 C++ 代码执行其输出是3。 1 int count = 0; 2 int i = 0; 3 while (i < 3) { 4 int j = 0; 5 while (j < 3) { 6 if (i + j >= 3) 7 count += 1; 8 j += 1; 9 } 10 i += 1; 11 } 12 cout << count;
- 24.判断题2 分
如下 C++ 代码执行时如果输入正整数,其输出将是输入的正整数。 1 int N; 2 cin >> N; 3 int i = 0, Nbase = 1; 4 int rst = 0; 5 while (N != 0) { 6 rst = rst + N % 10 * Nbase; 7 N /= 10, Nbase *= 10; 8 i += 1; 9 } 10 cout << rst;
- 25.判断题2 分
如下 C++ 代码执行时如输入5,将输出代码后的字符图形。 1 int n; 2 cin >> n; 3 for (int i = 1; i < n + 1; i++) { 4 for (int j = 1; j < n - i + 1; j++) 5 cout << 0; 6 for (int k = 1; k < 2 * i; k++) { 7 if (k <= i) 8 cout << k; 9 else 10 cout << 2 * i - k; 11 } 12 for (int j = 1; j < n - i + 1; j++) 13 cout << 0; 14 cout << endl; 15 } 16 000010000 17 000121000 18 001232100 19 012343210 20 123454321
- 26.编程题25 分
试题名称:完全平方数计数 时间限制:1.0 s 内存限制:512.0 MB 题目描述:小杨同学正在研究完全平方数。 平方:一个数的平方等于这个数乘以这个数本身。 完全平方数:指可以恰好表示为某个正整数的平方的数。 例如,9 是完全平方数,因为 9 = 3² = 3 × 3;但 27 不是,因为 27 不能表示为任何正整数的平方。 给定两个正整数 l 和 r(保证 l ≤ r),小杨同学想知道 l 到 r 之间的所有正整数中(包含 l 和 r),有多少个数是完全平方数。 输入格式:输入两行,第一行为一个正整数 l,第二行为一个正整数 r。 输出格式:输出一个非负整数,表示 l 到 r 中,有多少个正整数是完全平方数。如果 l 到 r 中没有完全平方数,则输出 0。 输入样例1:1 21 输出样例1:4 样例解释1:在 1 到 21 中,有以下 4 个整数是完全平方数: 1, 4, 9, 16 数据范围:1 ≤ l ≤ r ≤ 2000。
作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。
- 27.编程题25 分
试题名称:菱形 时间限制:1.0 s 内存限制:512.0 MB 题目描述:给定正整数 n,在 (2n − 1) × (2n − 1) 个网格的画布中,使用字符画一个边长为 n 个网格的菱形。其中,空白网格使用 . 表示,菱形边所在的网格用 + 表示。 例如当 n = 3 时,图形如下: ..+.. .+.+. +...+ .+.+. ..+.. 输入格式:输入一个正整数 n; 输出格式:输出 2n − 1 行,表示按要求画的菱形。 输入样例1:4 输出样例1:...+... ..+.+.. .+.+.+. +.....+ .+.+.+. ..+.+.. ...+... 数据范围:3 ≤ n ≤ 15。
作答说明:按题目要求完成程序或作品;需要在线运行与自动判分时,可在站内选择「在线考试」。