试卷解析 · 理解每一步
2023-03-Level-1
2023-03-Level-1
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题,2 分)
以下不属于计算机输入设备的有()。
正确答案B
解析详情
键盘、鼠标、传感器都会把信息送入计算机,属于输入设备;音箱负责把声音播放出来,属于输出设备,所以选 B。
第 2 题(单选题,2 分)
计算机系统中存储的基本单位用 B 来表示,它代表的是()。
正确答案A
解析详情
B 是 Byte 的缩写,表示字节。Bit 通常写作小写 b,表示比特;Block、Bulk 都不是这里的基本存储单位名称。
第 3 题(单选题,2 分)
常量 7.0 的数据类型是()。
正确答案A
解析详情
带小数点的常量默认是浮点型字面量,在 C++ 中 `7.0` 默认按 `double` 处理,不是 `int`,也不是 `void`。
第 4 题(单选题,2 分)
下列关于 C++ 语言的叙述,不正确的是()。
正确答案C
解析详情
C++ 中变量必须先定义再使用,所以“变量没有定义也能够使用”是错误说法。变量可以定义后再赋初值,赋值也不会改变变量本身的数据类型。
第 5 题(单选题,2 分)
以下不可以作为 C++ 标识符的是()。
正确答案B
解析详情
标识符可以包含字母、数字和下划线,但不能以数字开头,所以 `0x321` 不能作为普通变量名。其余三个都符合“非数字开头”的规则。
第 6 题(单选题,2 分)
以下哪个不是 C++ 语言的关键字?
正确答案D
解析详情
`int`、`for`、`do` 都是 C++ 关键字;`cout` 是标准输出流对象名,不是语言关键字,所以选 D。
第 7 题(单选题,2 分)
如果 a、b 和 c 都是 int 类型的变量,下列哪个语句不符合 C++ 语法?
c = a + b;c += a + b;c = a = b;c = a ++ b;正确答案D
解析详情
`c = a + b;`、`c += a + b;`、`c = a = b;` 都是合法写法;`c = a ++ b;` 中 `a ++ b` 不是合法表达式,因此该语句不符合语法。
第 8 题(单选题,2 分)
如果用两个 int 类型的变量 a 和 b 分别表达长方形的长和宽,则下列哪个表达式不能用来计算长方形的周长?
a + b * 22 * a + 2 * ba + b + a + bb + a * 2 + b正确答案A
解析详情
长方形周长应为 `2*a + 2*b`。A 中 `a + b * 2` 按优先级先算 `b*2`,结果是 `a + 2b`,少了一个 `a`,所以不能表示周长。
第 9 题(单选题,2 分)
表达式 `(3 == 0) + 'A' + 1 + 3.0` 的结果类型为()。
正确答案A
解析详情
`(3 == 0)` 的值是 0,`'A'` 可按整数参与运算,再加 `1` 仍是整型;最后与 `3.0` 相加时发生提升,整个表达式结果变成 `double`。
第 10 题(单选题,2 分)
如果 a 为 int 类型的变量,且 a 的值为 6,则执行 `a *= 3;` 之后,a 的值会是()。
正确答案D
解析详情
`a *= 3` 等价于 `a = a * 3`。原来 `a = 6`,执行后得到 `18`,所以选 D。
第 11 题(单选题,2 分)
如果 a 和 b 均为 int 类型的变量,下列表达式不能正确判断 “a 等于 0 且 b 等于 0” 的是()。
(a == 0) && (b == 0)(a == b == 0)(!a) && (!b)(a == 0) + (b == 0) == 2正确答案B
解析详情
A、C、D 都能表示“a 为 0 且 b 为 0”。B 中 `(a == b == 0)` 会从左到右计算,先得到 `a == b` 的真假值,再和 0 比较,含义已经变了,不能正确判断原条件。
第 12 题(单选题,2 分)
如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足 “大于等于 a 且是 4 的倍数” 的整数中最小的?
a * 4a / 4 * 4(a + 3) / 4 * 4a - a % 4 + 4正确答案C
解析详情
要找不小于 `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 + b(a + b) * 100b * 100 + aa * 100 + b正确答案D
解析详情
若填 `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;
}i++i *= 2i += 2i * 2正确答案B
解析详情
初始 `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;
}正确答案C
解析详情
把 1 到 20 中能被 3 或 5 整除的数相加:3、5、6、9、10、12、15、18、20,总和是 98,所以选 C。
判断题
第 1 题(判断题,2 分)
在 Windows 系统中通过键盘完成对选定文本移动的按键组合是先 Ctrl+X,移动到目标位置后按 Ctrl+V。
正确答案正确
解析详情
`Ctrl+X` 表示剪切,`Ctrl+V` 表示粘贴,先剪切再在目标位置粘贴,确实可以完成文本移动。
第 2 题(判断题,2 分)
程序员用 C、C++、Python、Scratch 等编写的程序能在 CPU 上直接执行。
正确答案错误
解析详情
CPU 只能直接执行机器指令。C、C++ 需要编译,Python、Scratch 也要经过解释器或运行环境处理,不能直接让 CPU 原样执行源程序。
第 3 题(判断题,2 分)
在 C++ 语言中,注释不宜写得过多,否则会使得程序运行速度变慢。
正确答案错误
解析详情
注释是写给人看的,编译时会被忽略,不会进入最终执行逻辑,因此注释多一些不会直接拖慢程序运行速度。
第 4 题(判断题,2 分)
在 C++ 语言中,标识符中可以有数字,但不能以数字开头。
正确答案正确
解析详情
C++ 标识符里可以出现数字,但首字符不能是数字,这正是变量名、函数名等命名时的基本规则。
第 5 题(判断题,2 分)
'3' 是一个 int 类型常量。
正确答案错误
解析详情
`'3'` 是字符常量,类型是 `char`,表示字符 3,不是整型常量 `3`。字符和数字写法相似,但含义不同。
第 6 题(判断题,2 分)
if 语句中的条件表达式的结果必须为 bool 类型。
正确答案错误
解析详情
在 C++ 中,`if` 条件最终要能转成真假判断即可,不一定非得原本就是 `bool`。例如整数 0 和非 0 也能直接作为条件使用。
第 7 题(判断题,2 分)
for 语句的循环体至少会执行一次。
正确答案错误
解析详情
`for` 循环先判断条件,再决定是否进入循环体。如果初始条件就不成立,循环体一次都不会执行。
第 8 题(判断题,2 分)
如果 a 为 int 类型的变量,则赋值语句 `a = a + 3;` 是错误的,因为这条语句会导致 a 无意义。
正确答案错误
解析详情
`a = a + 3;` 的意思是把原来的 `a` 加 3 后再赋回 `a`,这是完全合法而且很常见的写法,并不会让变量“无意义”。
第 9 题(判断题,2 分)
如果 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 题(判断题,2 分)
表达式 `(3.5 × 2)` 的计算结果为 7.0,且结果类型为 double。
正确答案正确
解析详情
`3.5` 本身是双精度浮点常量,和 `2` 相乘后结果是 `7.0`,并且整个表达式类型仍为 `double`。