GESP 客观题评测系统

2023-03-Level-1

2023-03-Level-1

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

单选题(每题 2 分)

1 题(单选题

以下不属于计算机输入设备的有()。

A.
键盘
B.
音箱
C.
鼠标
D.
传感器

正确答案B

解析详情

【答案】B

【考点】输入设备与输出设备

【解析】 键盘、鼠标、传感器都会把信息送入计算机,属于输入设备;音箱负责把声音播放出来,属于输出设备,所以选 B。

【易错点】不要因为音箱“接在电脑上”就把它当输入设备,关键要看信息流向。

2 题(单选题

计算机系统中存储的基本单位用 B 来表示,它代表的是()。

A.
Byte
B.
Block
C.
Bulk
D.
Bit

正确答案A

解析详情

【答案】A

【考点】存储单位;Byte 与 Bit

【解析】 B 是 Byte 的缩写,表示字节。Bit 通常写作小写 b,表示比特;Block、Bulk 都不是这里的基本存储单位名称。

【易错点】最常见的混淆是把 B 和 b 混为一谈,二者大小写不同、含义也不同。

3 题(单选题

常量 7.0 的数据类型是()。

A.
double
B.
float
C.
void
D.
int

正确答案A

解析详情

【答案】A

【考点】常量类型判断

【解析】 带小数点的常量默认是浮点型字面量,在 C++ 中 `7.0` 默认按 `double` 处理,不是 `int`,也不是 `void`。

【易错点】不要看到数字就先选 `int`,是否带小数点很关键。

4 题(单选题

下列关于 C++ 语言的叙述,不正确的是()。

A.
变量定义时可以不初始化
B.
变量被赋值之后的类型不变
C.
变量没有定义也能够使用
D.
变量名必须是合法的标识符

正确答案C

解析详情

【答案】C

【考点】变量定义与标识符规则

【解析】 C++ 中变量必须先定义再使用,所以“变量没有定义也能够使用”是错误说法。变量可以定义后再赋初值,赋值也不会改变变量本身的数据类型。

【易错点】“可以不初始化”不等于“可以不定义”,这两个概念不能混。

5 题(单选题

以下不可以作为 C++ 标识符的是()。

A.
x321
B.
0x321
C.
x321_
D.
_x321

正确答案B

解析详情

【答案】B

【考点】标识符命名规则

【解析】 标识符可以包含字母、数字和下划线,但不能以数字开头,所以 `0x321` 不能作为普通变量名。其余三个都符合“非数字开头”的规则。

【易错点】不要把看起来像十六进制写法的 `0x321` 当成合法标识符,它首先就是以数字开头。

6 题(单选题

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

A.
int
B.
for
C.
do
D.
cout

正确答案D

解析详情

【答案】D

【考点】关键字与标准库标识符

【解析】 `int`、`for`、`do` 都是 C++ 关键字;`cout` 是标准输出流对象名,不是语言关键字,所以选 D。

【易错点】常见库对象用得很频繁,但“常用”不等于“关键字”。

7 题(单选题

如果 a、b 和 c 都是 int 类型的变量,下列哪个语句不符合 C++ 语法?

A.
c = a + b;
B.
c += a + b;
C.
c = a = b;
D.
c = a ++ b;

正确答案D

解析详情

【答案】D

【考点】赋值语句语法

【解析】 `c = a + b;`、`c += a + b;`、`c = a = b;` 都是合法写法;`c = a ++ b;` 中 `a ++ b` 不是合法表达式,因此该语句不符合语法。

【易错点】`a++` 是一个整体,后面不能直接再接 `b` 组成加法。

8 题(单选题

如果用两个 int 类型的变量 a 和 b 分别表达长方形的长和宽,则下列哪个表达式不能用来计算长方形的周长?

A.
a + b * 2
B.
2 * a + 2 * b
C.
a + b + a + b
D.
b + a * 2 + b

正确答案A

解析详情

【答案】A

【考点】算术表达式与运算优先级

【解析】 长方形周长应为 `2*a + 2*b`。A 中 `a + b * 2` 按优先级先算 `b*2`,结果是 `a + 2b`,少了一个 `a`,所以不能表示周长。

【易错点】看到“乘 2”容易误以为已经算了两条边,但别忘了 `a` 也要乘 2。

9 题(单选题

表达式 `(3 == 0) + 'A' + 1 + 3.0` 的结果类型为()。

A.
double
B.
int
C.
char
D.
bool

正确答案A

解析详情

【答案】A

【考点】混合类型运算

【解析】 `(3 == 0)` 的值是 0,`'A'` 可按整数参与运算,再加 `1` 仍是整型;最后与 `3.0` 相加时发生提升,整个表达式结果变成 `double`。

【易错点】只要表达式里参与了 `3.0` 这样的双精度常量,最终结果类型通常会被提升为 `double`。

10 题(单选题

如果 a 为 int 类型的变量,且 a 的值为 6,则执行 `a *= 3;` 之后,a 的值会是()。

A.
3
B.
6
C.
9
D.
18

正确答案D

解析详情

【答案】D

【考点】复合赋值运算

【解析】 `a *= 3` 等价于 `a = a * 3`。原来 `a = 6`,执行后得到 `18`,所以选 D。

【易错点】不要把 `*=` 看成单独赋值成 3,它表示“乘上再赋回”。

11 题(单选题

如果 a 和 b 均为 int 类型的变量,下列表达式不能正确判断 “a 等于 0 且 b 等于 0” 的是()。

A.
(a == 0) && (b == 0)
B.
(a == b == 0)
C.
(!a) && (!b)
D.
(a == 0) + (b == 0) == 2

正确答案B

解析详情

【答案】B

【考点】关系运算与逻辑判断

【解析】 A、C、D 都能表示“a 为 0 且 b 为 0”。B 中 `(a == b == 0)` 会从左到右计算,先得到 `a == b` 的真假值,再和 0 比较,含义已经变了,不能正确判断原条件。

【易错点】连续写两个 `==` 不会自动变成“a、b 都等于 0”,中间结果先是布尔值。

12 题(单选题

如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足 “大于等于 a 且是 4 的倍数” 的整数中最小的?

A.
a * 4
B.
a / 4 * 4
C.
(a + 3) / 4 * 4
D.
a - a % 4 + 4

正确答案C

解析详情

【答案】C

【考点】整除与上取整思路

【解析】 要找不小于 `a` 的最小 4 的倍数,相当于先把 `a` 往上补到下一组 4 的边界。`(a + 3) / 4 * 4` 正好实现这个效果,例如 `a=5` 时结果是 `8`。

【易错点】`a / 4 * 4` 只会向下取整到不大于 `a` 的倍数,不满足题意。

13 题(单选题

在下列代码的横线处填写(),可以使得输出是 “20 10”。

#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 20;
    a = ___; // 在此处填入代码
    b = a / 100;
    a = a % 100;
    cout << a << " " << b << endl;
    return 0;
}
A.
a + b
B.
(a + b) * 100
C.
b * 100 + a
D.
a * 100 + b

正确答案D

解析详情

【答案】D

【考点】整数拆分与整除取模

【解析】 若填 `a * 100 + b`,原来 `a=10,b=20`,则新 `a=1020`。之后 `b = a / 100` 得到 `10`,`a = a % 100` 得到 `20`,最终输出正好是 `20 10`。

【易错点】这里不是简单相加,而是把两个两位数拼成一个三四位数再拆回去。

14 题(单选题

在下列代码的横线处填写(),可以使得输出是 “1248”。

#include <iostream>
using namespace std;

int main() {
    for (int i = 1; i <= 8; ________) // 在此处填入代码
        cout << i;
    return 0;
}
A.
i++
B.
i *= 2
C.
i += 2
D.
i * 2

正确答案B

解析详情

【答案】B

【考点】`for` 循环更新表达式

【解析】 初始 `i=1`,若每轮执行 `i *= 2`,输出依次为 `1、2、4、8`,连起来就是 `1248`。`i++` 会输出 `12345678`,`i += 2` 会输出 `1357`,`i * 2` 又不会更新 `i`。

【易错点】更新语句必须真正改变循环变量,单写 `i * 2` 没有赋值效果。

15 题(单选题

执行以下 C++ 语言程序后,输出结果是()。

#include <iostream>
using namespace std;

int main() {
    int sum = 0;
    for (int i = 1; i <= 20; i++)
        if (i % 3 == 0 || i % 5 == 0)
            sum += i;
    cout << sum << endl;
    return 0;
}
A.
210
B.
113
C.
98
D.
15

正确答案C

解析详情

【答案】C

【考点】循环与条件累加

【解析】 把 1 到 20 中能被 3 或 5 整除的数相加:3、5、6、9、10、12、15、18、20,总和是 98,所以选 C。

【易错点】15 同时满足两个条件,但程序只会加一次,不要重复累计。

判断题(每题 2 分)

1 题(判断题

在 Windows 系统中通过键盘完成对选定文本移动的按键组合是先 Ctrl+X,移动到目标位置后按 Ctrl+V。

正确答案正确

解析详情

【答案】正确

【考点】Windows 常用快捷键

【解析】 `Ctrl+X` 表示剪切,`Ctrl+V` 表示粘贴,先剪切再在目标位置粘贴,确实可以完成文本移动。

【易错点】移动和复制不要混淆,复制对应的是 `Ctrl+C`。

2 题(判断题

程序员用 C、C++、Python、Scratch 等编写的程序能在 CPU 上直接执行。

正确答案错误

解析详情

【答案】错误

【考点】高级语言与机器指令

【解析】 CPU 只能直接执行机器指令。C、C++ 需要编译,Python、Scratch 也要经过解释器或运行环境处理,不能直接让 CPU 原样执行源程序。

【易错点】“能在电脑上运行”不等于“CPU 直接执行源码”。

3 题(判断题

在 C++ 语言中,注释不宜写得过多,否则会使得程序运行速度变慢。

正确答案错误

解析详情

【答案】错误

【考点】注释与编译执行

【解析】 注释是写给人看的,编译时会被忽略,不会进入最终执行逻辑,因此注释多一些不会直接拖慢程序运行速度。

【易错点】影响运行速度的是实际执行的代码,不是被编译器丢弃的注释文本。

4 题(判断题

在 C++ 语言中,标识符中可以有数字,但不能以数字开头。

正确答案正确

解析详情

【答案】正确

【考点】标识符命名规则

【解析】 C++ 标识符里可以出现数字,但首字符不能是数字,这正是变量名、函数名等命名时的基本规则。

【易错点】“可以有数字”不代表“可以数字开头”,后者仍然非法。

5 题(判断题

'3' 是一个 int 类型常量。

正确答案错误

解析详情

【答案】错误

【考点】字符常量与整型常量

【解析】 `'3'` 是字符常量,类型是 `char`,表示字符 3,不是整型常量 `3`。字符和数字写法相似,但含义不同。

【易错点】带单引号的是字符,不带引号的 `3` 才是整数。

6 题(判断题

if 语句中的条件表达式的结果必须为 bool 类型。

正确答案错误

解析详情

【答案】错误

【考点】条件表达式与类型转换

【解析】 在 C++ 中,`if` 条件最终要能转成真假判断即可,不一定非得原本就是 `bool`。例如整数 0 和非 0 也能直接作为条件使用。

【易错点】“最终按真假判断”不等于“变量类型必须写成 bool”。

7 题(判断题

for 语句的循环体至少会执行一次。

正确答案错误

解析详情

【答案】错误

【考点】`for` 循环执行条件

【解析】 `for` 循环先判断条件,再决定是否进入循环体。如果初始条件就不成立,循环体一次都不会执行。

【易错点】不要把 `for` 和某些“先执行后判断”的循环结构混在一起。

8 题(判断题

如果 a 为 int 类型的变量,则赋值语句 `a = a + 3;` 是错误的,因为这条语句会导致 a 无意义。

正确答案错误

解析详情

【答案】错误

【考点】赋值语句含义

【解析】 `a = a + 3;` 的意思是把原来的 `a` 加 3 后再赋回 `a`,这是完全合法而且很常见的写法,并不会让变量“无意义”。

【易错点】赋值号左边和右边都出现同一变量是正常现象,不代表语句错误。

9 题(判断题

如果 a 为 int 类型的变量,则表达式 `(a / 4 == 2)` 和表达式 `(a >= 8 && a <= 11)` 的结果总是相同的。

正确答案正确

解析详情

【答案】正确

【考点】整除范围判断

【解析】 当 `a` 是整数时,`a / 4 == 2` 表示 `a` 整除 4 的商为 2,也就是 `a` 只能取 8、9、10、11;这与 `(a >= 8 && a <= 11)` 完全一致。

【易错点】这里的 `/` 是整数除法,不是实数除法。

10 题(判断题

表达式 `(3.5 × 2)` 的计算结果为 7.0,且结果类型为 double。

正确答案正确

解析详情

【答案】正确

【考点】浮点运算结果类型

【解析】 `3.5` 本身是双精度浮点常量,和 `2` 相乘后结果是 `7.0`,并且整个表达式类型仍为 `double`。

【易错点】只要表达式里有浮点常量,结果通常不会再按整型处理。