试卷解析 · 理解每一步
2026-09-Level-1
2026-09-Level-1
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题,2 分)
第二届世界人形机器人运动会开幕式上,机器人方阵通过控制程序来完成整场表演。表演前,工程师们使用集成开发环境(IDE)编写并调试方阵的控制程序。下列关于 IDE 功能的描述,错误的是()。
正确答案C
解析详情
IDE 用于编写、编译和调试程序,自动补全、调试辅助信息和语法高亮都属于常见功能。电机转动由运行中的控制程序配合控制器实现,不是 IDE 本身直接完成的,因此 C 错误。
第 2 题(单选题,2 分)
现代计算机自问世至今,已经经历了四个时代,即:电子管计算机(1946—1958年)、晶体管计算机(1958—1964年)、中小规模集成电路计算机(1965—1970年)以及大规模和超大规模集成电路计算机(1971年至今)。那么这里划分计算机时代所采用的主要依据是()。
正确答案D
解析详情
电子管、晶体管、集成电路都是计算机采用的核心电子元器件。题干按这些元器件的变化划分时代,因此选 D。
第 3 题(单选题,2 分)
下列 C++ 代码执行的输出是()。
int a = 4 + -2 * 3;
cout << a;正确答案A
解析详情
先计算 -2 * 3 = -6,再计算 4 + (-6) = -2,故输出 -2。
第 4 题(单选题,2 分)
下列 C++ 表达式与 2 * - 2 % 3 的值相同的是()。
(2 * - 2) % 32 * (- 2 % 3)2 * - (2 % 3)2 % - 2 * 3正确答案A
解析详情
乘法与取余同级,按从左到右结合:2 * -2 % 3 等价于 (2 * -2) % 3,值为 -1。例如 B 先算 -2 % 3 = -2,再乘 2 得到 -4,与题式不同。
第 5 题(单选题,2 分)
如下C++代码执行后,其输出是()。
int a = 3;
int b = 4;
printf("%d#%d\n", a, b);3 43#43 # 43
4正确答案B
解析详情
两个 %d 分别输出 a 和 b,格式串中的 # 原样输出,最后换行。因此显示 3#4。
第 6 题(单选题,2 分)
下列 C++ 代码执行后的输出是()。
int a = 8;
int b = 10;
cout << (a % b) << " " << (a * 1 / b) << " " << (a * 1.0 / b);正确答案C
解析详情
8 % 10 为 8;8 * 1 / 10 是整数运算,结果为 0;8 * 1.0 / 10 是浮点运算,结果为 0.8。因此输出 8 0 0.8。
第 7 题(单选题,2 分)
执行下面代码后,b 的值会是()。
int b = 8;
++b *= 2 + 1;正确答案D
解析详情
++b 先把 b 从 8 增加到 9;右侧 2 + 1 得到 3;随后对该变量执行乘法赋值,b 变为 9 * 3 = 27。
第 8 题(单选题,2 分)
执行如下C++代码,其输出是()。
int i, cnt = 0;
for (i = 0; i < 10; i++)
cnt += 1;
cout << i << ' ' << cnt;正确答案A
解析详情
i 从 0 到 9 共循环 10 次,cnt 增加到 10。最后一次 i++ 使 i 变为 10,条件失败退出,因此输出 10 10。
第 9 题(单选题,2 分)
执行如下C++代码,变量都是整型,则其输出是()。
int cnt, i;
cnt = 0;
for (i = -10; i < 0; i++)
cnt += 1;
cout << (i * cnt);正确答案C
解析详情
i 依次取 -10 到 -1,共循环 10 次;退出时 i 为 0、cnt 为 10,所以 i * cnt 为 0。
第 10 题(单选题,2 分)
如下C++代码执行输出是()。
int i;
for (i = 1; i < 5; i++) {
if (i % 3 == 0) {
printf("%d+", i);
continue;
} else {
printf("%d-", i);
break;
}
}
printf("%dEND*", i);1-11 - 1 END*1+1-2-2END*1-1END*正确答案D
解析详情
第一次循环 i = 1,不满足 i % 3 == 0,先输出 1-,随后 break 退出循环。循环外继续输出 1END*,合起来为 1-1END*。
第 11 题(单选题,2 分)
如下 C++ 代码执行时,下列说法错误的是()。
int N, tot;
cin >> N;
tot = 0;
while (N > 0) {
cout << N << "#";
tot += 1;
N -= 1;
}
cout << tot << "-END";正确答案D
解析详情
输入 1 时循环执行一次,先输出 1#,tot 变为 1,N 变为 0。最后输出 1-END,完整结果是 1#1-END,因此 D 的说法错误。
第 12 题(单选题,2 分)
下列 C++ 代码执行时如输入 35,输出如下图所示。横线处应填入的代码是()。

int N, tot, i;
cin >> N;
tot = 0;
for (i = 0; i < N; i++) {
printf(__________);
tot = tot + 1;
if (tot % 10 == 0)
printf("\n");
}"%3d", N"%3d", N - iN - iN正确答案B
解析详情
i 从 0 增加到 N - 1,N - i 依次为 N、N - 1、…、1。%3d 让每个整数至少占 3 列,再由已有代码每输出 10 个数换行,因此填 "%3d", N - i。
第 13 题(单选题,2 分)
下面 C++ 代码执行后输出是()。
int k = 0;
while (k < 8) {
k += 2;
continue;
if (k > 5)
break;
cout << k << "#";
}
if (k >= 8)
cout << "FINISH";正确答案A
解析详情
k 每次加 2 后立即 continue,所以后面的 break 和带 # 的输出都不会执行。k 依次变为 2、4、6、8,退出后满足 k >= 8,只输出 FINISH。
第 14 题(单选题,2 分)
在下列 C++ 代码中,如果 N 和 M 均输入大于 0 的整数,则可以取得正整数 N 的从右到左第 M 位置的数。个位数为第 1 位置。则横线处应填入()。
int N, M, M10;
cout << "请输入正整数:";
cin >> N;
cout << "从右到左第几位?";
cin >> M;
M10 = 1;
for (; M > 1; M--)
M10 *= 10;
cout << ______________; // L1N / M10 % 10N / M10 / 10N % M10 % 10N % M10 / 10正确答案A
解析详情
循环把 M10 从 1 连乘 10,得到目标位对应的位权(如第 3 位对应 100)。先用 N / M10 去掉目标位右侧的数字,再 % 10 取出目标位,因此选 A。
第 15 题(单选题,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++) { // L1
ji_tou = tou - tu_tou;
if (tu_tou * 4 + ji_tou * 2 == jiao) {
printf("兔的数量=%d,鸡的数量=%d\n", tu_tou, ji_tou);
break;
}
}
if (tu_tou == tou) // L2
printf("无解\n");正确答案D
解析详情
兔数依次枚举 0 到 tou;找到解时 break,兔数不超过 tou。若全部尝试仍无解,循环结束后 tu_tou 为 tou + 1,因此 L2 应判断 tu_tou == tou + 1。
判断题
第 1 题(判断题,2 分)
C++程序执行 cin 或 scanf 语句时通常是使用键盘等输入设备来输入某个变量的值。
正确答案正确
解析详情
cin 和 scanf 通常从标准输入读取数据,常见情形是用户通过键盘输入,因此该说法正确。
第 2 题(判断题,2 分)
如果 n 为 3 位数的正整数,则 C++ 表达式 n % 100 将能得到最高位。如 n 为 123,则该表达式的值为 1。
正确答案错误
解析详情
123 % 100 的结果是 23,得到的是末两位;三位正整数的最高位应使用 n / 100 获取。
第 3 题(判断题,2 分)
下面 C++ 代码执行后将输出 20 。
int i;
for (i = 0; i < 20; i += 3)
if (i % 3 != 0)
continue;
cout << i;正确答案错误
解析详情
i 在循环中依次为 0、3、6、9、12、15、18;下一次增加到 21 才退出,因此输出 21,不是 20。
第 4 题(判断题,2 分)
下列C++代码执行时如果先后输入10和10,则将输出10小于10。
int N, M;
cin >> N >> M;
if (N > M)
printf("%d大于%d", N, M);
else
printf("%d小于%d", N, M);正确答案正确
解析详情
当 N 和 M 都为 10 时,N > M 为假,程序执行 else 并输出 10小于10,因此题干对实际输出的描述正确。
第 5 题(判断题,2 分)
如下 C++ 代码如果输入大于 0 的整数,则可以求 1 到 N 之和。
int N, tot;
cout << "请输入正整数:";
cin >> N;
tot = 0;
while (N > 0) {
tot += N;
N += -1;
}
cout << tot;正确答案正确
解析详情
循环依次把 N、N - 1、…、1 加入 tot;N += -1 等价于 N 减 1,因此在 int 可表示的范围内能计算 1 到 N 的和。
第 6 题(判断题,2 分)
在 C++ 中,表达式 2 % 2 与 (-2) % 2 的值相同。
正确答案正确
解析详情
2 和 -2 都能被 2 整除,所以 2 % 2 与 (-2) % 2 都是 0。
第 7 题(判断题,2 分)
试图编译并执行下面C++代码,会输出2。
float z = 12.0;
z = z / 4;
z--;
cout << z++;正确答案正确
解析详情
z 先由 12.0 / 4 变为 3,再由 z-- 变为 2。cout << z++ 先输出旧值 2,再使 z 变为 3,因此说法正确。
第 8 题(判断题,2 分)
在 C++ 代码中,如果两个变量 __ 和 ____ 都只包含下划线(_),但数目不同,则可能导致编译器无法识别,而报告变量重复定义。
正确答案错误
解析详情
__ 与 ____ 字符数不同,是不同的标识符,不会因仅由下划线组成就被当成同名变量。它们都含双下划线,属于实现保留名称,实际编程应避免使用。
第 9 题(判断题,2 分)
C++的变量 X 是 double 型,则表达式 X = 27 % 12 的结果不可预测。
正确答案错误
解析详情
27 % 12 先按整数运算得到 3,再赋给 double 型变量 X,得到 3.0;该结果是确定的。
第 10 题(判断题,2 分)
下面 C++ 代码执行后输出的是 3。
int ans = 0;
for (int idx = 1; idx <= 7; idx += 2) {
if (idx == 5)
continue;
if (idx * idx > 30)
break;
ans += idx;
}
cout << ans;正确答案错误
解析详情
idx = 1、3 时分别累加,ans 变为 4;idx = 5 时 continue 跳过累加;idx = 7 时因 49 > 30 而 break,最终输出 4。