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