C++ GESP 2026年9月二级真题与解析

四季读书网 12 0
C++ GESP 2026年9月二级真题与解析

一、单项选择题

  1. 第二届世界人形机器人运动会开幕式上,机器人方阵通过控制程序来完成整场表演。表演前,工程师们使用集成开发环境(IDE)编写并调试方阵的控制程序。下列关于 IDE 功能的描述,错误的是(  )。

A. 可以提供代码自动补全,提高编程效率

B. 可以提供辅助信息,帮助排查程序逻辑错误

C. 可以直接控制机器人电机转动

D. 支持语法高亮,使代码更易阅读

【解析】IDE 提供代码编辑、自动补全、语法高亮、调试辅助(帮助排查逻辑错误)等功能,但不能直接控制机器人电机转动——控制电机需将编译好的程序部署到机器人控制器上运行,IDE 本身不具备该功能。

【答案】C

  1. 计算机 CPU 中的高速缓冲存储器(Cache)主要为提升系统性能而设计。下列关于 Cache 的说法中正确的是(  )。

A. Cache 的容量比主存大,速度比主存快

B. Cache 通常用于暂存 CPU 频繁访问的数据

C. Cache 中的数据断电后不会丢失,属于非易失性存储器

D. Cache 的访问速度比 CPU 寄存器还要快

【解析】Cache 存在的意义就是暂存 CPU 频繁访问的数据,利用程序的时间/空间局部性提升性能。A 错:

Cache 容量远小于主存;C 错:

Cache 是易失性存储器,断电数据丢失;D 错:

访问速度最快的是 CPU 寄存器,Cache 比寄存器慢、比主存快。

【答案】B

  1. 执行如下 C++ 代码,其输出是(  )。
cout << (3 == 3.0);

A. 1

B. 1.0

C. 0

D. -1

【解析】int 与 double 进行比较时,int 自动转换为 double,3 与 3.0 相等,结果为 true;cout 输出 bool 时默认显示为数字,true 输出 1。

【答案】A

  1. 执行如下 C++ 代码,其输出是(  )。
cout << (bool(5) + bool(-5) + bool(5.0));

A. 0

B. 1

C. 2

D. 3

【解析】bool 参与算术运算时提升为 int:bool(5) = 1,bool(-5) = 1,bool(5.0) = 1(非 0 即 true),三者相加得 3。

【答案】D

  1. 判断年份 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)

【解析】A 完整对应闰年规则:"能被 4 整除但不能被 100 整除"或"能被 400 整除"。

【答案】A

  1. 执行如下 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

【解析】for 循环 i 取 0~9 共 10 次;if (i) 在 i 非 0 时为真,i = 0 时不计数,其余 9 次各加 1,tot = 9。

【答案】C

  1. 执行如下 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

【解析】n = 4:i = 1 时内层不执行;i = 2 时 j 取 1,加 1 次;i = 3 时 j 取 1、2,加 2 次。共 3 次,tot = 3。

【答案】B

  1. 下面的 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

【解析】i % 3 非 0 时累加,即累加 0~9 中不是 3 的倍数的数:1 + 2 + 4 + 5 + 7 + 8 = 27。

【答案】D

  1. 下面的 C++ 代码之后的输出是(  )。
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

【解析】not(i % 3 != 0) 等价于 i % 3 == 0。i 取 -5~4 中 3 的倍数:-3、0、3,共 3 个,tot = 3。

【答案】B

  1. 有关如下 C++ 代码描述,变量都是整型,错误的是(  )。
int n, limit, i;
cout << "请输入一个正整数: ";
cin >> n;
if (n <= 1)
printf("%d非素数", n);
elseif (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 的正整数,执行结果不会有错误,但循环次数增多,效率有所影响。

【解析】D选项,把 1 改大后,limit 可能超过 n,循环会枚举到 i = n,而 n % n == 0 必然成立,素数会被误判为非素数——例如 n = 3、把 1 改成 3 时 limit = 4,i 取到 3 时 3 % 3 == 0,错误输出"3非素数"。

【答案】D

  1. 执行以下 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

【解析】i = 1:j 取 1,total += 1;i = 2:j 取 1、2,total += 2 + 4 = 6,累计 7;i = 3:j 取 1、2、3,total += 3 + 6 + 9 = 18,累计 25。

【答案】D

  1. 下面 C++ 代码执行后其输出是(  )。
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

【解析】i = 1:j = 0,j % 3 == 0,continue。

i = 2:j = 0 continue;j = 1 时 count = 1,i * j = 2 >= 2,break,j 保持 1。

i = 3:j = 0 continue;j = 1 时 count = 2,i * j = 3 >= 2,break,j 保持 1。外层 i 自增到 4 后结束。输出 4 1 2。

【答案】C

  1. 如下的 C++ 代码执行时输入 12 将输出如下数字图形。注意:最后一行之前没有空格。横线处应填入的代码是(  )。
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;
}

输出效果(输入 12 时):

           0
          12
         345
        6789
       01234
      567890
     1234567
    89012345
   678901234
  5678901234
 56789012345
678901234567

A. line - j - 1

B. line - j

C. line

D. line + 1

【解析】每行"空格数 + 数字个数 = line"。第 j 行(从 0 开始)输出 j + 1 个数字,因此空格数为 line - j - 1:最后一行 j = line - 1 时空格数为 0(与题意相符),倒数第二行 1 个空格,第二行 10 个空格,均与输出效果一致。

【答案】A

  1. 小北的身高是 1.65 米。班上有 n 个小朋友,小北想和身高最接近自己的人交朋友。如果有多个小朋友与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是(  )。
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

【解析】更新条件应满足:当前小朋友的身高差 diff 严格小于最小值 min_diff;或者 diff 与最小值相等,但身高比当前最优的 best_height 更矮。A 完整表达了两条规则;B、C 要求"更矮"与"更接近"同时成立,会漏掉纯粹更接近的人;D 的后半部分与身高差无关,任何身高更矮的人都会覆盖结果。

【答案】A

  1. 小北的身高是 1.65 米。班上有 n 个小朋友,小北想和身高最接近自己的人交朋友。如果有多个小朋友与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是(  )。
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;
    } elseif (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;

【解析】进入 else if 分支说明身高差相同,按规则应保留较矮者:当 h 小于当前 best_height 时更新。A 正确;B 取了更高的;C 的比较对象错成了 target;D 用 >= 会在身高相等时也更新,且同样没有体现"较矮"的规则。

【答案】A

C++ GESP 2026年9月二级真题与解析-第1张图片-四季读书网
C++ GESP 2026年9月二级真题与解析-第2张图片-四季读书网
C++ GESP 2026年9月二级真题与解析-第3张图片-四季读书网
C++ GESP 2026年9月二级真题与解析-第4张图片-四季读书网

抱歉,评论功能暂时关闭!