GESP 客观题评测系统

2024-12-Level-1

2024-12-Level-1

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

单选题(每题 2 分)

1 题(单选题

2024年10月8日,诺贝尔物理学奖“意外地”颁给了两位计算机科学家约翰·霍普菲尔德(John J. Hopfield)和杰弗里·辛顿(Geoffrey E. Hinton)。这两位科学家的主要研究方向是()。

A.
天体物理
B.
流体力学
C.
人工智能
D.
量子理论

正确答案C

解析详情

【答案】C 【考点】计算机基础与大事件 【解析】2024年诺贝尔物理学奖授予了约翰·霍普菲尔德和杰弗里·辛顿,以表彰他们在人工神经网络和机器学习方面的基础性发现。这两位科学家是深度学习和人工智能领域的先驱。 【易错点】误以为诺贝尔物理学奖只会颁给传统物理学领域。

2 题(单选题

下列软件中是操作系统的是()。

A.
高德地图
B.
腾讯会议
C.
纯血鸿蒙
D.
金山永中

正确答案C

解析详情

【答案】C 【考点】计算机操作系统基础 【解析】操作系统(OS)是管理计算机硬件与软件资源的程序。纯血鸿蒙(HarmonyOS NEXT)是华为开发的分布式操作系统。高德地图和腾讯会议属于应用软件,金山永中通常指办公套件软件。 【易错点】混淆应用软件与系统软件的概念。

3 题(单选题

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

printf("Hello,GESP!");
A.
配对双引号内,不可以有汉字
B.
配对双引号可以相应改变为英文单引号而输出效果不变
C.
配对双引号可以相应改变为三个连续英文单引号而输出效果不变
D.
配对双引号可以相应改变为三个连续英文双引号而输出效果不变

正确答案D

解析详情

【答案】D 【考点】C++ 字符串常量与输出 【解析】在C++中,相邻的字符串常量会自动拼接。因此 `"" "Hello" ""` 等价于 `"Hello"`。选项D提到的三个连续双引号在代码中表现为字符串拼接,输出效果不变。单引号用于字符常量,不能直接替换双引号输出字符串。 【易错点】对C++字符串常量的拼接特性不熟悉。

4 题(单选题

C++表达式 12 - 3 * 2 && 2 的值是()。

A.
0
B.
1
C.
6
D.
9

正确答案B

解析详情

【答案】B 【考点】C++ 运算符优先级与逻辑运算 【解析】表达式 `12 - 3 * 2 && 2` 的计算过程:先算乘法 `3 * 2 = 6`,再算减法 `12 - 6 = 6`,最后算逻辑与 `6 && 2`。在C++中,非零值视为真(true),`6 && 2` 结果为 `true`,在整数上下文中输出 1。 【易错点】混淆逻辑与运算符 `&&` 与算术运算符或位运算符。

5 题(单选题

在C++中,假设N为正整数2,则cout(N/3+N%3)\text{cout} \ll (N / 3 + N \% 3)将输出()。

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

正确答案B

解析详情

【答案】B 【考点】C++ 算术运算符与整数除法 【解析】当 N=2 时,表达式 `N / 3 + N % 3`:`2 / 3` 为整数除法,结果为 0;`2 % 3` 为取模运算,结果为 2。因此 `0 + 2 = 2`。 【易错点】误将整数除法 `2 / 3` 计算为浮点数 0.666...。

6 题(单选题

C++语句 cout << 7%3 << ' ' << "7%3" << ' ' << "7%3={7%3}" 执行后的输出是()。

A.
1 1 1 = 1
B.
1 7%3 1 = 1
C.
1 7%3 7%3 = 1
D.
1 7%3 7%3 = {7%3}

正确答案D

解析详情

【答案】D 【考点】C++ 输出格式与字符串字面量 【解析】`7%3` 结果为 1;`"7%3"` 是普通字符串;`"7%3={7%3}"` 也是普通字符串,C++ `cout` 不会自动解析大括号内的表达式。因此输出顺序为 `1`、`7%3`、`7%3={7%3}`。选项D的描述最接近该字面量输出。 【易错点】误认为C++支持类似Python的字符串插值功能。

7 题(单选题

下面C++代码执行后,求出几天后星期几。如果星期日则输出“星期天”否则输出形如“星期1”。横线上应填入的代码是( )。

int N, nowDay, afterDays;
cout << "今天星期几?" << endl;
cin >> nowDay;
cout << "求几天后星期几?" << endl;
cin >> afterDays;
N = nowDay + afterDays;
if(_____)
    printf("星期天");
else
    printf("星期%d", N % 7);
A.
N % 7 != 0
B.
N % 7 == 0
C.
N == 0
D.
N % 7

正确答案B

解析详情

【答案】B 【考点】C++ 条件分支与取模应用 【解析】计算几天后是星期几通常使用 `(nowDay + afterDays) % 7`。如果结果为 0,通常代表星期天。题目要求如果是星期日则输出“星期天”,因此判断条件应为 `N % 7 == 0`。 【易错点】混淆取模结果与星期几的对应关系。

8 题(单选题

下面 C++ 代码执行后输出是()。

int N=0,i;
for (i = 1; i < 10; i++)
    N += 1;
cout << (N + i);
A.
54
B.
20
C.
19
D.
18

正确答案C

解析详情

【答案】C 【考点】C++ 循环与变量作用域 【解析】循环 `for (i = 1; i < 10; i++)` 执行了 9 次(i从1到9),`N` 累加了 9 次,最终 `N = 9`。循环结束后,`i` 的值增加到 10 时退出。因此 `N + i = 9 + 10 = 19`。 【易错点】认为循环结束后 `i` 的值仍为 9。

9 题(单选题

下面 C++ 代码执行后输出的是()。

int tnt = 0;
for (i = 0; i < 100; i++)
    tnt += i % 10;
cout << tnt;
A.
4950
B.
5050
C.
450
D.
100

正确答案C

解析详情

【答案】C 【考点】C++ 循环与算术运算 【解析】循环 `i` 从 0 到 99,`i % 10` 的值依次为 `0, 1, 2, ..., 9`,每 10 个数循环一次,共循环 10 次。每一组的和为 `0+1+...+9 = 45`,总和为 `45 * 10 = 450`。 【易错点】错误计算取模累加的规律或循环次数。

10 题(单选题

下面 C++ 代码执行后输出的是()。

int N=0,i;
int tnt = 0;
for (i = 5; i < 100; i+=5){
    if (i % 2 == 0)
        continue;
    tnt += 1;
    if (i >= 50)
        break;
}
cout << tnt;
A.
10
B.
9
C.
6
D.
5

正确答案C

解析详情

【答案】C 【考点】C++ 循环控制(continue/break) 【解析】`i` 以 5 为步长递增:5(tnt=1), 10(偶数skip), 15(tnt=2), 20(skip), 25(tnt=3), 30(skip), 35(tnt=4), 40(skip), 45(tnt=5), 50(skip), 55(tnt=6, 满足 i>=50, break)。最终 `tnt` 为 6。 【易错点】忽略了 `50` 是偶数会触发 `continue`,而 `55` 才会触发 `break`。

11 题(单选题

下面的程序用于判断输入的整数N是否为能被3整除的偶数,横线处应填写代码是()。

int N;
cin >> N;
if(_____)
    cout << "能被3整除的偶数" << endl;
else
    cout << "其他情形" << endl;
cout << endl;
A.
(N%2)&&(N%3)
B.
(N%2==0)&&(N%3)
C.
(N%2)&&(N%3==0)
D.
(N%2==0)&&(N%3==0)

正确答案D

解析详情

【答案】D 【考点】C++ 逻辑表达式组合 【解析】“能被3整除”对应 `N % 3 == 0`,“偶数”对应 `N % 2 == 0`。两者需同时满足,使用逻辑与运算符 `&&`。因此填 `(N % 2 == 0) && (N % 3 == 0)`。 【易错点】逻辑运算符 `&&`(与)和 `||`(或)混淆。

12 题(单选题

下面 C++ 代码执行后的输出 is()。

int cnt;
cnt = 0;
for(int i = 1; i < 10; i++)
    cnt += i++;
cout << cnt;
cout << endl;
A.
54
B.
45
C.
25
D.
10

正确答案C

解析详情

【答案】C 【考点】C++ 循环中的复合运算 【解析】循环 `i` 初始为 1,每次执行 `cnt += i++`。第一次:`cnt += 1`, `i` 变为 2,随后 `for` 循环 `i++` 变为 3;第二次:`cnt += 3`, `i` 变为 4,随后变为 5;以此类推,累加的数为 1, 3, 5, 7, 9,和为 25。 【易错点】重复计算了循环体内部 and 循环头部的 `i++`。

13 题(单选题

int类型变量a的值是一个正方形的边长,如下图中的正方形的四条边长都为4,则下列哪个语句执行后能够使得正方形的周长(四条边长的和)增加4?( )。

+ + + + +
+
+
+
+ + + +
A.
a*4;
B.
a+4;
C.
a+1;
D.
++a;

正确答案D

解析详情

【答案】D 【考点】C++ 算术运算与自增应用 【解析】正方形周长 `P = 4 * a`。若周长增加 4,即 `P' = 4 * a + 4 = 4 * (a + 1)`,说明边长 `a` 需要增加 1。`++a;` 是前置自增运算符,能使 `a` 的值增加 1。 【易错点】误认为 `a + 1;` 这种不带赋值的表达式能修改变量的值。

14 题(单选题

C++ 表达式 (6 > 2) * 2 的值是()。

A.
1
B.
2
C.
true
D.
truetrue

正确答案B

解析详情

【答案】B 【考点】C++ 关系运算与类型转换 【解析】表达式 `(6 > 2)` 的值为真(true)。在参与乘法运算时,`true` 转换为整数 1。因此 `1 * 2 = 2`。 【易错点】认为关系运算的结果不能直接参与算术运算。

15 题(单选题

下面C++代码用于判断输入的整数是否为位增数,即从首位到个位逐渐增大,是则输出1。如123是一个位增数。下面横线处应填入的是( )。

int N;
int n1, n2;
cin >> N;
___;
while(N){
    n1 = N % 10;
    if(n1 >= n2){
        cout << 0;
        return 1;
    }
    n2 = n1, N /=10;
}
cout << 1;
cout << endl;
return 0;
A.
n2 = N%10
B.
N / = 10
C.
n2 = N/10, N % = 10
D.
n2 = N%10, N / = 10

正确答案D

解析详情

【答案】D 【考点】C++ 循环逻辑与数值处理 【解析】判断“位增数”需要从左往右(或从右往左)比较相邻位。代码中使用 `N % 10` 获取末位,并通过 `N /= 10` 移除末位。初始化时 `n2 = N % 10, N /= 10` 先保存并移除最右侧位,循环内比较 `n1`(当前位)与 `n2`(前一个位)。 【易错点】初始化 `n2` 的逻辑不完整导致循环首轮比较错误。

判断题(每题 2 分)

1 题(判断题

在Windows的资源管理器中为已有文件A建立副本的操作是Ctrl+C\underline{\text{Ctrl+C}},然后Ctrl+V\underline{\text{Ctrl+V}}。()

正确答案正确

解析详情

【答案】正确 【考点】计算机操作系统基本操作 【解析】在Windows系统中,Ctrl+C 是复制选定内容到剪贴板,Ctrl+V 是从剪贴板粘贴。对文件执行这两个操作可以创建该文件的副本。 【易错点】混淆剪切(Ctrl+X)与复制(Ctrl+C)的区别。

2 题(判断题

在 C++ 中,表达式 8/3 和 8%3 的值相同。()

正确答案正确

解析详情

【答案】正确 【考点】C++ 算术运算(除法与取模) 【解析】`8 / 3` 是整数除法,结果为 2;`8 % 3` 是取模运算,余数为 2。两者数值相等。 【易错点】误以为 `8 / 3` 结果会包含小数部分。

3 题(判断题

X 是 C++ 语言的基本类型变量,则语句 cin >> X,cout << X 能接收键盘输入并原样输出。()

正确答案错误

解析详情

【答案】错误 【考点】C++ 标准输入输出特性 【解析】`cin` 在读取不同类型数据时有特定行为,例如读取字符串时会忽略前导空白并以空白符结尾。对于基本类型,“原样输出”不一定成立,例如读取 `int` 时前导零会丢失。 【易错点】认为 `cin` and `cout` 只是简单的字符搬运。

4 题(判断题

下面 C++ 代码执行后将输出 10。()

int N = 0;
for (int i = 0; i < 10; i++) {
    continue;
    N += 1;
}
cout << N;

正确答案错误

解析详情

【答案】错误 【考点】C++ 循环控制(continue) 【解析】在循环中,`continue` 语句会跳过当前循环体中剩余的代码。因此 `N += 1` 永远不会被执行,`N` 的最终值始终为 0,不会输出 10。 【易错点】低估了 `continue` 对后续语句执行的影响。

5 题(判断题

下面 C++ 代码执行后将输出 100。()

int i;
for (i = 0; i <= 100; i++)
    continue;
cout << i;

正确答案错误

解析详情

【答案】错误 【考点】C++ 循环边界条件 【解析】循环条件是 `i <= 100`,当 `i` 等于 100 时仍会执行循环体并进行 `i++`。当 `i` 变为 101 时循环终止,因此最终输出 `i` 的值为 101 而非 100。 【易错点】忽略了循环退出时循环变量已经完成了最后一次增量。

6 题(判断题

下面 C++ 代码被执行时,将执行三次输出(即标记行 L2 将被执行一次)。()

for (int i = 0; i < 10; i+=3)
    cout << i; //L2

正确答案错误

解析详情

【答案】错误 【考点】C++ 循环执行次数计算 【解析】`i` 的取值序列为 0, 3, 6, 9。总共执行了 4 次循环输出。题目中说执行三次是错误的。 【易错点】错误计算步长累加导致的执行次数。

7 题(判断题

C++语句 cout << (3,2) 执行后,将输出3 and 2,且3 and 2之间有逗号间隔。()

正确答案错误

解析详情

【答案】错误 【考点】C++ 逗号运算符 【解析】`cout << (3, 2)` 中,`(3, 2)` 是逗号表达式,其值取最后一个子表达式的结果,即 2。因此只会输出 2,不会有逗号或输出两个数字。 【易错点】混淆逗号运算符与输出语句中的多个参数分隔符。

8 题(判断题

在C++代码中,studentName、student_name 以及 sStudentName 都是合法的变量名称。()

正确答案正确

解析详情

【答案】正确 【考点】C++ 变量命名规范 【解析】C++变量名可以由字母、数字 and 下划线组成,且不能以数字开头。`studentName`、`student_name` and `sStudentName` 均符合此规范且不是关键字。 【易错点】误以为驼峰命名或下划线命名在C++中有限制。

9 题(判断题

在C++中,对浮点变量 float f,则语句 cin >> f; cout << (f<1); 在输入是 2e-1 时,输出是0。()

正确答案错误

解析详情

【答案】错误 【考点】C++ 浮点数科学计数法输入 【解析】`2e-1` 在科学计数法中表示 `2 * 10^-1 = 0.2`。`0.2 < 1` 成立,布尔表达式 `(f < 1)` 的值为 `true`(输出 1)。题目中说输出 0 是错误的。 【易错点】对科学计数法 `2e-1` 的数值大小理解有误。

10 题(判断题

在C++的循环体内部,如果 break and continue 语句连续在一起,那么作用抵消,可以顺利执行下一次循环。()

正确答案错误

解析详情

【答案】错误 【考点】C++ 循环控制逻辑 【解析】`break` 会立即终止整个循环,而 `continue` 是跳过当前迭代。如果它们连续在一起,先执行的语句会立即生效,后执行的语句无法被触达,它们的作用并不会“抵消”。 【易错点】认为循环控制语句之间可以像算术运算一样抵消。