GESP 客观题评测系统
2023-03-Level-1
2023-03-Level-1
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
以下不属于计算机输入设备的有()。
正确答案B
解析详情
【答案】B
【考点】输入设备与输出设备
【解析】 键盘、鼠标、传感器都会把信息送入计算机,属于输入设备;音箱负责把声音播放出来,属于输出设备,所以选 B。
【易错点】不要因为音箱“接在电脑上”就把它当输入设备,关键要看信息流向。
第 2 题(单选题)
计算机系统中存储的基本单位用 B 来表示,它代表的是()。
正确答案A
解析详情
【答案】A
【考点】存储单位;Byte 与 Bit
【解析】 B 是 Byte 的缩写,表示字节。Bit 通常写作小写 b,表示比特;Block、Bulk 都不是这里的基本存储单位名称。
【易错点】最常见的混淆是把 B 和 b 混为一谈,二者大小写不同、含义也不同。
第 3 题(单选题)
常量 7.0 的数据类型是()。
正确答案A
解析详情
【答案】A
【考点】常量类型判断
【解析】 带小数点的常量默认是浮点型字面量,在 C++ 中 `7.0` 默认按 `double` 处理,不是 `int`,也不是 `void`。
【易错点】不要看到数字就先选 `int`,是否带小数点很关键。
第 4 题(单选题)
下列关于 C++ 语言的叙述,不正确的是()。
正确答案C
解析详情
【答案】C
【考点】变量定义与标识符规则
【解析】 C++ 中变量必须先定义再使用,所以“变量没有定义也能够使用”是错误说法。变量可以定义后再赋初值,赋值也不会改变变量本身的数据类型。
【易错点】“可以不初始化”不等于“可以不定义”,这两个概念不能混。
第 5 题(单选题)
以下不可以作为 C++ 标识符的是()。
正确答案B
解析详情
【答案】B
【考点】标识符命名规则
【解析】 标识符可以包含字母、数字和下划线,但不能以数字开头,所以 `0x321` 不能作为普通变量名。其余三个都符合“非数字开头”的规则。
【易错点】不要把看起来像十六进制写法的 `0x321` 当成合法标识符,它首先就是以数字开头。
第 6 题(单选题)
以下哪个不是 C++ 语言的关键字?
正确答案D
解析详情
【答案】D
【考点】关键字与标准库标识符
【解析】 `int`、`for`、`do` 都是 C++ 关键字;`cout` 是标准输出流对象名,不是语言关键字,所以选 D。
【易错点】常见库对象用得很频繁,但“常用”不等于“关键字”。
第 7 题(单选题)
如果 a、b 和 c 都是 int 类型的变量,下列哪个语句不符合 C++ 语法?
c = a + b;c += a + b;c = a = b;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 + b * 22 * a + 2 * ba + b + a + bb + 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
解析详情
【答案】A
【考点】混合类型运算
【解析】 `(3 == 0)` 的值是 0,`'A'` 可按整数参与运算,再加 `1` 仍是整型;最后与 `3.0` 相加时发生提升,整个表达式结果变成 `double`。
【易错点】只要表达式里参与了 `3.0` 这样的双精度常量,最终结果类型通常会被提升为 `double`。
第 10 题(单选题)
如果 a 为 int 类型的变量,且 a 的值为 6,则执行 `a *= 3;` 之后,a 的值会是()。
正确答案D
解析详情
【答案】D
【考点】复合赋值运算
【解析】 `a *= 3` 等价于 `a = a * 3`。原来 `a = 6`,执行后得到 `18`,所以选 D。
【易错点】不要把 `*=` 看成单独赋值成 3,它表示“乘上再赋回”。
第 11 题(单选题)
如果 a 和 b 均为 int 类型的变量,下列表达式不能正确判断 “a 等于 0 且 b 等于 0” 的是()。
(a == 0) && (b == 0)(a == b == 0)(!a) && (!b)(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 * 4a / 4 * 4(a + 3) / 4 * 4a - 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 + b(a + b) * 100b * 100 + aa * 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;
}i++i *= 2i += 2i * 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;
}正确答案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`。
【易错点】只要表达式里有浮点常量,结果通常不会再按整型处理。