试卷解析 · 理解每一步
2025-03-Level-1
2025-03-Level-1
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题,2 分)
2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是()。
正确答案D
解析详情
DeepSeek是人工智能模型,可以根据给定场景生成文字内容,剧情脚本就属于这一类生成结果,所以 D 成立。A 把电影说成操作系统,B 把 DeepSeek 说成深海钻探软件,C 把电影说成能生成软件,这些都不符合题意。
第 2 题(单选题,2 分)
在某集成开发环境中编辑一个源代码文件时不可以执行下面()操作。
正确答案D
解析详情
在 IDE 中编辑源代码文件时,修改内容、保存、撤销都是常见编辑操作。把程序执行截图插入到代码文件里不属于这种编辑行为,所以 D 不可以执行。
第 3 题(单选题,2 分)
在C++中,下列可以做变量的是()。
正确答案D
解析详情
C++ 标识符可以由字母、数字和下划线组成,但不能包含减号等运算符,也不能用这道题中的特殊符号形式开头。`Var_1` 只用了字母、数字和下划线,符合规则,所以 D 正确;`Var-1` 中的 `-` 是减号,`$1` 和 `%%1` 也都不是本题允许的变量名写法。
第 4 题(单选题,2 分)
以下哪个是C++语言的关键字?()
正确答案C
解析详情
`do` 是 C++ 语言保留的关键字,用来构成 `do...while` 循环。`abs` 是常用函数名,`cin` 和 `endl` 是标准库中的名字,不是关键字,所以只有 C 正确。
第 5 题(单选题,2 分)
下面的框架在L1和L2标记的两行处分别填写选项中的代码,哪组不能通过编译()。
int main() {
int i = 0;
// L1
break;
// L2
return 0;
}do {
} while (i != 0);for (; i < 10; i++) {
}if (i == 0) {
}switch (i) {
}正确答案C
解析详情
`break` 只能出现在循环或 `switch` 语句内部。A 把 `break` 放进 `do...while`,B 放进 `for`,D 放进 `switch`,都能通过编译;C 只是普通的 `if` 语句块,`break` 不在循环或 `switch` 中,因此会编译报错。
第 6 题(单选题,2 分)
下面C++语句( )执行后的输出是___0322$。
正确答案B
解析详情
`%02d` 输出宽度至少为 2,不足时前面补 `0`,所以数字 3 会输出成 `03`;`%2d` 输出宽度至少为 2,数字 22 本身已有两位,仍输出 `22`。因此 `printf("___ %02d%2d", 3, 22)` 的结果正好是题目给出的 `___0322`,所以选 B。
第 7 题(单选题,2 分)
有关下列 C++ 代码的说法,错误的是()。
printf("我爱码代码!");正确答案C
解析详情
`printf("我爱码代码!");` 中双引号括起来的是字符串字面量。把其中内容换成英文或中英混合文本,只要仍然放在一对双引号内,A 和 B 都能正常执行;把每个双引号写成三个双引号,在 C++ 中会被拆成相邻的字符串字面量,也仍可通过编译。只有把双引号改成两个单引号会变成字符常量写法,不再是合法的字符串参数,所以错误选项是 C。
第 8 题(单选题,2 分)
C++表达式 16 / 4 % 2 的值是()。
正确答案D
解析详情
在 C++ 里,`/` 和 `%` 优先级相同,按从左到右计算。先算 `16 / 4 = 4`,再算 `4 % 2 = 0`,所以表达式结果是 0,对应 D。
第 9 题(单选题,2 分)
N是C++的正整数,值为12,则 cout << (N % 3 + N / 5) 的输出是()。
正确答案D
解析详情
当 `N = 12` 时,`12 % 3 = 0`,`12 / 5 = 2`,这里是整型除法,小数部分会直接舍去。于是括号里的值是 `0 + 2 = 2`,输出结果为 2,所以选 D。
第 10 题(单选题,2 分)
下面 C++ 代码执行后的输出是()。
int N = 10;
printf("%d*%d", N, N, N * N);正确答案D
解析详情
格式串里只有两个 `%d`,所以真正会输出的只有前两个参数 `N` 和 `N`,结果是 `10*10`;第三个参数 `N * N` 不会显示出来。当前 Markdown 中本题四个选项文字存在明显 OCR 损坏,只能确定正确输出应为 `10*10`,并按答案表记录为 D。
第 11 题(单选题,2 分)
执行下面的 C++ 代码,在键盘上先后输入 100 和 200,输出是()。
int first, second;
cout << "请输入第1个正整数:";
cin >> first;
cout << "请输入第2个正整数:";
cin >> second;
cout << (first / second * second) << endl;正确答案D
解析详情
输入后 `first = 100`,`second = 200`。表达式先算 `first / second`,由于都是整型,`100 / 200 = 0`;再算 `0 * 200 = 0`,所以最终输出 0,选 D。
第 12 题(单选题,2 分)
下面C++代码执行后,将输出能被2整除且除以7余数为2的数。下列选项不能实现的是()。
for (int i = 0; i < 100; i++)
if _____
cout << i << " ";正确答案C
解析详情
题目要求同时满足“能被 2 整除”和“除以 7 余 2”。A 直接写出了这两个条件;B 中 `!(i % 2)` 等价于 `i % 2 == 0`;D 中 `i % 2 != 1` 对偶数也成立,因此 A、B、D 都能实现。C 的后半部分 `!(i % 7)` 表示 `i % 7 == 0`,要求变成“除以 7 余 0”,不符合题意,所以不能实现。
第 13 题(单选题,2 分)
下面 C++ 代码执行后输出是()。
int tnt = 0;
for (int i = -1000; i < 1000; i++)
tnt += i;
cout << tnt << endl;正确答案A
解析详情
循环把 `-1000` 到 `999` 全部加起来。`-999` 到 `999` 可以两两配对成 0,最后只剩下最前面的 `-1000` 没有正数与之抵消,所以总和是 `-1000`,选 A。
第 14 题(单选题,2 分)
下面 C++ 代码执行后输出的是()。
int i;
for (i = 1; i < 100; i += 5)
continue;
cout << i << endl;正确答案A
解析详情
循环中 `i` 依次取 `1, 6, 11, ..., 96`。当 `i = 96` 时仍满足 `i < 100`,执行完本轮后再加 5,`i` 变成 101;下一次判断 `101 < 100` 为假,循环结束,因此最后输出 101,选 A。
第 15 题(单选题,2 分)
下面C++代码执行后输出的是()。
int tnt = 0;
for (int i = 5; i < 100; i += 5) {
if (i % 2 == 0)
continue;
tnt += 1;
if (i % 3 == 0 && i % 7 == 0)
break;
}
cout << tnt << endl;正确答案C
解析详情
循环枚举 5 到 95 的 5 的倍数。偶数倍数会被 `continue` 跳过,只统计奇数倍数,所以被计数的是 `5, 15, 25, ..., 95`,一共 10 个。`i % 3 == 0 && i % 7 == 0` 等价于能被 21 整除,而区间内既是 5 的倍数又是 21 的倍数的最小正数是 105,循环到 95 就结束了,`break` 不会触发,因此输出 10,选 C。
判断题
第 1 题(判断题,2 分)
C++、Python 都是高级编程语言,它们的每条语句最终都要通过机器指令来完成。()
正确答案正确
解析详情
C++ 和 Python 都属于高级编程语言,人写的源代码最终都不能被硬件直接执行。它们都必须经过编译或解释等过程,转化为机器能够执行的指令,所以题目说法正确。
第 2 题(判断题,2 分)
在 C++ 中表达式 N * 2 % N 中如果 N 的值为正整数,则其值为 2。()
正确答案错误
解析详情
当 `N` 为正整数时,`N * 2` 一定能被 `N` 整除,所以 `(N * 2) % N = 0`,不会等于 2。题目断言与实际运算结果不符,因此错误。
第 3 题(判断题,2 分)
执行如下 C++ 代码如果在键盘上输入 10,执行后将输出 20。()
char N;
printf("请输入正整数:");
cin >> N;
printf("%d\n", N * 2);正确答案错误
解析详情
变量 `N` 的类型是 `char`,输入 `10` 时首先读入的是字符 `'1'`,不是整数 10。字符 `'1'` 的编码值乘以 2 后输出的也不是 20,所以题目断言错误。
第 4 题(判断题,2 分)
删除下面 C++ 代码中的 continue 不影响程序的执行效果。()
for (int i = 0; i < 100; i++) {
if (i % 2 == 0) {
printf("偶数");
continue;
}
else
printf("奇数");
}正确答案正确
解析详情
当 `i % 2 == 0` 时,程序已经进入 `if` 分支并输出“偶数”,此时就算删掉 `continue`,也不会去执行后面的 `else` 分支,因为 `if...else` 结构本来就只会二选一。每轮循环输出结果不变,所以题目说法正确。
第 5 题(判断题,2 分)
下面C++代码执行时将报错,因为所在位置应该是变量名,而 _ 不可以做变量名。()
for (int _ = 0; _ < 100; _++)
cout << "*" << endl;正确答案错误
解析详情
下划线 `_` 可以作为合法标识符使用,这段 `for` 循环中的变量名 `_` 在语法上没有问题。程序不会因为变量名是 `_` 而报错,所以题目说法错误。
第 6 题(判断题,2 分)
下面C++代码被执行后,将先后输出3和5。()
for (int i = 3; i < 5; i += 2)
printf("%d ", i);正确答案错误
解析详情
循环开始时 `i = 3`,满足 `i < 5`,先输出 3;随后执行 `i += 2`,`i` 变成 5。再次判断时 `5 < 5` 不成立,循环结束,因此只会输出 3,不会再输出 5,所以题目说法错误。
第 7 题(判断题,2 分)
下面的 C++ 代码执行后将先后输出 7 个 true。()
for (int i = 0; i < 10; i++)
cout << (i * 2 < i * i) << "";正确答案错误
解析详情
对 `i = 0` 到 `9` 而言,不等式 `i * 2 < i * i` 在 `i = 3` 到 `9` 时成立,一共成立 7 次。但 `cout` 直接输出布尔值时,默认打印的是 `1` 和 `0`,不是单词 `true` 和 `false`。所以程序会输出 7 个 `1`,题目说“输出 7 个 true”是错误的。
第 8 题(判断题,2 分)
在C++代码中,user_Name、_userName、user-Name、userName_都是合法的变量名。()
正确答案错误
解析详情
`user_Name`、`_userName` 和 `userName_` 都由字母与下划线组成,可以作为变量名. `user-Name` 中包含减号 `-`,减号在 C++ 中是运算符,不能出现在标识符里,所以“四个都合法”这个说法错误。
第 9 题(判断题,2 分)
C++语言中 continue 语句可以来提前结束循环。()
正确答案错误
解析详情
`continue` 只会结束当前这一轮循环,跳到下一轮继续执行;真正提前结束整个循环的是 `break`。因此题目把 `continue` 说成“提前结束循环”是不准确的,结论应为错误。
第 10 题(判断题,2 分)
C++中定义整型变量N,执行语句 scanf("%d", &N); cout << N / 3 * 5; 时输入 3.6,则输出是6。()
正确答案错误
解析详情
`scanf("%d", &N)` 读入整型时,输入 `3.6` 会先读到整数部分 3,遇到小数点就停止。此时 `N = 3`,接着计算 `N / 3 * 5 = 3 / 3 * 5 = 1 * 5 = 5`,不是 6,所以题目说法错误。