GESP 客观题评测系统

试卷解析 · 理解每一步

2023-03-Level-1

2023-03-Level-1

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

单选题

第 1 题(单选题,2 分)

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

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

正确答案B

解析详情
答案 B输入设备与输出设备
思路与推导
  1. 键盘、鼠标、传感器都会把信息送入计算机,属于输入设备;音箱负责把声音播放出来,属于输出设备,所以选 B。

第 2 题(单选题,2 分)

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

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

正确答案A

解析详情
答案 A存储单位;Byte 与 Bit
思路与推导
  1. B 是 Byte 的缩写,表示字节。Bit 通常写作小写 b,表示比特;Block、Bulk 都不是这里的基本存储单位名称。

第 3 题(单选题,2 分)

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

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

正确答案A

解析详情
答案 A常量类型判断
思路与推导
  1. 带小数点的常量默认是浮点型字面量,在 C++ 中 `7.0` 默认按 `double` 处理,不是 `int`,也不是 `void`。

第 4 题(单选题,2 分)

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

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

正确答案C

解析详情
答案 C变量定义与标识符规则
思路与推导
  1. C++ 中变量必须先定义再使用,所以“变量没有定义也能够使用”是错误说法。变量可以定义后再赋初值,赋值也不会改变变量本身的数据类型。

第 5 题(单选题,2 分)

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

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

正确答案B

解析详情
答案 B标识符命名规则
思路与推导
  1. 标识符可以包含字母、数字和下划线,但不能以数字开头,所以 `0x321` 不能作为普通变量名。其余三个都符合“非数字开头”的规则。

第 6 题(单选题,2 分)

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

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

正确答案D

解析详情
答案 D关键字与标准库标识符
思路与推导
  1. `int`、`for`、`do` 都是 C++ 关键字;`cout` 是标准输出流对象名,不是语言关键字,所以选 D。

第 7 题(单选题,2 分)

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

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

正确答案D

解析详情
答案 D赋值语句语法
思路与推导
  1. `c = a + b;`、`c += a + b;`、`c = a = b;` 都是合法写法;`c = a ++ b;` 中 `a ++ b` 不是合法表达式,因此该语句不符合语法。

第 8 题(单选题,2 分)

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

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

正确答案A

解析详情
答案 A算术表达式与运算优先级
思路与推导
  1. 长方形周长应为 `2*a + 2*b`。A 中 `a + b * 2` 按优先级先算 `b*2`,结果是 `a + 2b`,少了一个 `a`,所以不能表示周长。

第 9 题(单选题,2 分)

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

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

正确答案A

解析详情
答案 A混合类型运算
思路与推导
  1. `(3 == 0)` 的值是 0,`'A'` 可按整数参与运算,再加 `1` 仍是整型;最后与 `3.0` 相加时发生提升,整个表达式结果变成 `double`。

第 10 题(单选题,2 分)

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

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

正确答案D

解析详情
答案 D复合赋值运算
思路与推导
  1. `a *= 3` 等价于 `a = a * 3`。原来 `a = 6`,执行后得到 `18`,所以选 D。

第 11 题(单选题,2 分)

如果 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关系运算与逻辑判断
思路与推导
  1. A、C、D 都能表示“a 为 0 且 b 为 0”。B 中 `(a == b == 0)` 会从左到右计算,先得到 `a == b` 的真假值,再和 0 比较,含义已经变了,不能正确判断原条件。

第 12 题(单选题,2 分)

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

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

正确答案C

解析详情
答案 C整除与上取整思路
思路与推导
  1. 要找不小于 `a` 的最小 4 的倍数,相当于先把 `a` 往上补到下一组 4 的边界。`(a + 3) / 4 * 4` 正好实现这个效果,例如 `a=5` 时结果是 `8`。

第 13 题(单选题,2 分)

在下列代码的横线处填写(),可以使得输出是 “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整数拆分与整除取模
思路与推导
  1. 若填 `a * 100 + b`,原来 `a=10,b=20`,则新 `a=1020`。之后 `b = a / 100` 得到 `10`,`a = a % 100` 得到 `20`,最终输出正好是 `20 10`。

第 14 题(单选题,2 分)

在下列代码的横线处填写(),可以使得输出是 “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` 循环更新表达式
思路与推导
  1. 初始 `i=1`,若每轮执行 `i *= 2`,输出依次为 `1、2、4、8`,连起来就是 `1248`。`i++` 会输出 `12345678`,`i += 2` 会输出 `1357`,`i * 2` 又不会更新 `i`。

第 15 题(单选题,2 分)

执行以下 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. 把 1 到 20 中能被 3 或 5 整除的数相加:3、5、6、9、10、12、15、18、20,总和是 98,所以选 C。

判断题

第 1 题(判断题,2 分)

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

正确答案正确

解析详情
答案 正确Windows 常用快捷键
思路与推导
  1. `Ctrl+X` 表示剪切,`Ctrl+V` 表示粘贴,先剪切再在目标位置粘贴,确实可以完成文本移动。

第 2 题(判断题,2 分)

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

正确答案错误

解析详情
答案 错误高级语言与机器指令
思路与推导
  1. CPU 只能直接执行机器指令。C、C++ 需要编译,Python、Scratch 也要经过解释器或运行环境处理,不能直接让 CPU 原样执行源程序。

第 3 题(判断题,2 分)

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

正确答案错误

解析详情
答案 错误注释与编译执行
思路与推导
  1. 注释是写给人看的,编译时会被忽略,不会进入最终执行逻辑,因此注释多一些不会直接拖慢程序运行速度。

第 4 题(判断题,2 分)

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

正确答案正确

解析详情
答案 正确标识符命名规则
思路与推导
  1. C++ 标识符里可以出现数字,但首字符不能是数字,这正是变量名、函数名等命名时的基本规则。

第 5 题(判断题,2 分)

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

正确答案错误

解析详情
答案 错误字符常量与整型常量
思路与推导
  1. `'3'` 是字符常量,类型是 `char`,表示字符 3,不是整型常量 `3`。字符和数字写法相似,但含义不同。

第 6 题(判断题,2 分)

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

正确答案错误

解析详情
答案 错误条件表达式与类型转换
思路与推导
  1. 在 C++ 中,`if` 条件最终要能转成真假判断即可,不一定非得原本就是 `bool`。例如整数 0 和非 0 也能直接作为条件使用。

第 7 题(判断题,2 分)

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

正确答案错误

解析详情
答案 错误`for` 循环执行条件
思路与推导
  1. `for` 循环先判断条件,再决定是否进入循环体。如果初始条件就不成立,循环体一次都不会执行。

第 8 题(判断题,2 分)

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

正确答案错误

解析详情
答案 错误赋值语句含义
思路与推导
  1. `a = a + 3;` 的意思是把原来的 `a` 加 3 后再赋回 `a`,这是完全合法而且很常见的写法,并不会让变量“无意义”。

第 9 题(判断题,2 分)

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

正确答案正确

解析详情
答案 正确整除范围判断
思路与推导
  1. 当 `a` 是整数时,`a / 4 == 2` 表示 `a` 整除 4 的商为 2,也就是 `a` 只能取 8、9、10、11;这与 `(a >= 8 && a <= 11)` 完全一致。

第 10 题(判断题,2 分)

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

正确答案正确

解析详情
答案 正确浮点运算结果类型
思路与推导
  1. `3.5` 本身是双精度浮点常量,和 `2` 相乘后结果是 `7.0`,并且整个表达式类型仍为 `double`。