GESP 客观题评测系统

2025-03-Level-1

2025-03-Level-1

试卷解析总览,可直接查看每题答案与解析。

单选题(每题 2 分)

1 题(单选题

2025年春节有两件轰动全球的事件,一个是DeepSeek横空出世,另一个是贺岁片《哪吒2》票房惊人,入了全球票房榜。下面关于DeepSeek与《哪吒2》的描述成立的是()。

A.
《哪吒2》是一款新型操作系统
B.
DeepSeek是深海钻探软件
C.
《哪吒2》可以生成新的软件
D.
DeepSeek可以根据《哪吒2》的场景生成剧情脚本

正确答案D

解析详情

【答案】D

【考点】人工智能应用常识

【解析】 DeepSeek是人工智能模型,可以根据给定场景生成文字内容,剧情脚本就属于这一类生成结果,所以 D 成立。A 把电影说成操作系统,B 把 DeepSeek 说成深海钻探软件,C 把电影说成能生成软件,这些都不符合题意。

【易错点】 容易把热门名词和软件类别混淆。

2 题(单选题

在某集成开发环境中编辑一个源代码文件时不可以执行下面()操作。

A.
修改变量定义
B.
保存代码修改
C.
撤销代码修改
D.
插入执行截图

正确答案D

解析详情

【答案】D

【考点】集成开发环境的基本功能

【解析】 在 IDE 中编辑源代码文件时,修改内容、保存、撤销都是常见编辑操作。把程序执行截图插入到代码文件里不属于这种编辑行为,所以 D 不可以执行。

【易错点】 容易把“代码编辑功能”和“文档排版功能”混为一谈。

3 题(单选题

在C++中,下列可以做变量的是()。

A.
Var-1
B.
$1
C.
%%1
D.
Var_1

正确答案D

解析详情

【答案】D

【考点】标识符命名规则

【解析】 C++ 标识符可以由字母、数字和下划线组成,但不能包含减号等运算符,也不能用这道题中的特殊符号形式开头。`Var_1` 只用了字母、数字和下划线,符合规则,所以 D 正确;`Var-1` 中的 `-` 是减号,`$1` 和 `%%1` 也都不是本题允许的变量名写法。

【易错点】 容易把下划线和减号都当成“连接符”而误判。

4 题(单选题

以下哪个是C++语言的关键字?()

A.
abs
B.
cin
C.
do
D.
endl

正确答案C

解析详情

【答案】C

【考点】C++ 关键字识别

【解析】 `do` 是 C++ 语言保留的关键字,用来构成 `do...while` 循环。`abs` 是常用函数名,`cin` 和 `endl` 是标准库中的名字,不是关键字,所以只有 C 正确。

【易错点】 容易把常见库名或对象名误当成语言关键字。

5 题(单选题

下面的框架在L1和L2标记的两行处分别填写选项中的代码,哪组不能通过编译()。

int main() {
    int i = 0;
    // L1
    break;
    // L2
    return 0;
}
A.
do {
} while (i != 0);
B.
for (; i < 10; i++) {
}
C.
if (i == 0) {
}
D.
switch (i) {
}

正确答案C

解析详情

【答案】C

【考点】`break` 的合法位置

【解析】 `break` 只能出现在循环或 `switch` 语句内部。A 把 `break` 放进 `do...while`,B 放进 `for`,D 放进 `switch`,都能通过编译;C 只是普通的 `if` 语句块,`break` 不在循环或 `switch` 中,因此会编译报错。

【易错点】 容易误以为 `break` 只要在花括号里就能使用。

6 题(单选题

下面C++语句( )执行后的输出是___0322$。

A.
printf("___ %2d%02d$", 3, 22)
B.
printf("___ %02d%2d$", 3, 22)
C.
printf("___ %02d%02d$$$", 3, 22)
D.
printf("___ %02d%02d$$$, 3, 22)

正确答案B

解析详情

【答案】B

【考点】`printf` 格式控制

【解析】 `%02d` 输出宽度至少为 2,不足时前面补 `0`,所以数字 3 会输出成 `03`;`%2d` 输出宽度至少为 2,数字 22 本身已有两位,仍输出 `22`。因此 `printf("___ %02d%2d", 3, 22)` 的结果正好是题目给出的 `___0322`,所以选 B。

【易错点】 容易把 `%2d` 和 `%02d` 都看成同样会补零。

7 题(单选题

有关下列 C++ 代码的说法,错误的是()。

printf("我爱码代码!");
A.
配对双引号内的汉字改为英文 Hello, C++代码能正确执行
B.
配对双引号内的汉字改为 Hello代码!, C++代码能正确执行
C.
代码中的每个双引号,都可以改为两个单引号
D.
代码中的每个双引号,都可以改为三个双引号

正确答案C

解析详情

【答案】C

【考点】字符串字面量与引号

【解析】 `printf("我爱码代码!");` 中双引号括起来的是字符串字面量。把其中内容换成英文或中英混合文本,只要仍然放在一对双引号内,A 和 B 都能正常执行;把每个双引号写成三个双引号,在 C++ 中会被拆成相邻的字符串字面量,也仍可通过编译。只有把双引号改成两个单引号会变成字符常量写法,不再是合法的字符串参数,所以错误选项是 C。

【易错点】 容易把单引号和双引号都当成“字符串引号”使用。

8 题(单选题

C++表达式 16 / 4 % 2 的值是()。

A.
8
B.
4
C.
2
D.
0

正确答案D

解析详情

【答案】D

【考点】整数运算顺序

【解析】 在 C++ 里,`/` 和 `%` 优先级相同,按从左到右计算。先算 `16 / 4 = 4`,再算 `4 % 2 = 0`,所以表达式结果是 0,对应 D。

【易错点】 容易把 `%` 当成比除法更先算。

9 题(单选题

N是C++的正整数,值为12,则 cout << (N % 3 + N / 5) 的输出是()。

A.
6.4
B.
2.4
C.
6
D.
2

正确答案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);
A.
1010={1010}10*10 = \{10*10\}
B.
100 = 10
C.
NN=100N*N = 100
D.
{N}{N}={1010}\{N\}*\{N\} = \{10*10\}

正确答案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;
A.
200
B.
100
C.
1
D.
0

正确答案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 << " ";
A.
((i % 2 == 0) && (i % 7 == 2))
B.
((!(i % 2)) && (i % 7 == 2))
C.
((!(i % 2)) && (!(i % 7)))
D.
((i % 2 != 1) && (i % 7 == 2))

正确答案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.
-1000
B.
0
C.
999
D.
1000

正确答案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.
101
B.
100
C.
99
D.
96

正确答案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;
A.
500
B.
450
C.
10
D.
1

正确答案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 或直接按实数参与运算。