GESP 客观题评测系统
2023-03-Level-2
2023-03-Level-2
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
以下存储器中的数据不会受到附近强磁场干扰的是()。
正确答案D
解析详情
【答案】D
【考点】存储介质特性
【解析】 光盘用激光读取凹凸信息,不靠磁性记录数据,所以附近强磁场不会把它的内容扰乱。硬盘属于磁记录介质,题目考查的“不受强磁场干扰”应选光盘。
【易错点】 不要把“能存数据”都当成同一种存储原理,磁存储和光存储差别很大。
第 2 题(单选题)
下列流程图,属于计算机的哪种程序结构?()。

正确答案C
解析详情
【答案】C
【考点】流程图程序结构
【解析】 图中先判断“是否按下空格键”,再根据“是/否”分别执行不同操作,最后两条路径汇合结束。这种先判断条件再分两路执行的结构就是分支结构。
【易错点】 看到流程图里有多条箭头,不一定就是循环,关键要看是否回到前面重复执行。
第 3 题(单选题)
下列关于 C++ 语言的叙述,不正确的是()。
正确答案A
解析详情
【答案】A
【考点】C++ 基本数据类型
【解析】 `double` 的存储大小在具体实现中通常是固定的,不是“浮动的”。`bool` 常见占 1 字节,`int` 取值范围有限,`char` 一般有 256 种取值,所以不正确的是 A。
【易错点】 不要把“浮点数”误解成“占用内存大小浮动”,浮点数浮动的是表示范围和精度。
第 4 题(单选题)
下列关于 C++ 语言的叙述,不正确的是()。
正确答案D
解析详情
【答案】D
【考点】标识符命名规则
【解析】 C++ 的合法标识符不能以数字开头,只能以下划线或字母开头,所以 D 错。其余三项都是变量和标识符的基本规则。
【易错点】 “可以包含数字”和“可以以数字开头”不是一回事。
第 5 题(单选题)
以下哪个不是 C++ 语言的关键字?
正确答案B
解析详情
【答案】B
【考点】关键字与普通标识符
【解析】 `return`、`else`、`case` 都是 C++ 关键字,`max` 只是常见函数名,不是语言保留字,所以选 B。
【易错点】 常见库函数或算法名字用得很多,但并不等于关键字。
第 6 题(单选题)
以下哪个不是 C++ 语言的运算符?
正确答案A
解析详情
【答案】A
【考点】C++ 运算符识别
【解析】 按原题人工确认的文本,A 选项是字面量 `\=`,它不是 C++ 的合法运算符;`/=`、`-=`、`!=` 都是合法运算符。因此“不属于运算符”的是 A。
【易错点】 这题要按题面字面判断,不能把 `\=` 自动当成转义后的 `=`。
第 7 题(单选题)
如果 a 和 b 都是 char 类型的变量,下列哪个语句不符合 C++ 语法?
b = a + 1;b = a + '1';b = 'a'++;b = a++;正确答案C
解析详情
【答案】C
【考点】自增运算与左值
【解析】 `'a'` 是字符常量,不是变量,不能对常量执行 `++`,所以 `b = 'a'++;` 不合法。其余几项都把字符变量或字符常量参与普通表达式运算,语法上成立。
【易错点】 `++` 只能作用在可修改的变量上,不能作用在字面常量上。
第 8 题(单选题)
如果 a、b、c 和 d 都是 int 类型的变量,则下列哪个表达式能够正确计算它们的平均值?
正确答案C
解析详情
【答案】C
【考点】整型与浮点型除法
【解析】 平均值要允许出现小数,前半部分 `a+b+c+d` 是整数,若再除以 `4` 会做整除。只有除以 `4.0` 才会转成浮点除法,得到真正的平均值,所以选 C。
【易错点】 很多人只看公式形式对不对,忽略了 `/ 4` 和 `/ 4.0` 的结果类型不同。
第 9 题(单选题)
如果 a 为 char 类型的变量,且 a 的值为 '2',则下列哪条语句执行后,a 的值不会变为 '3'?
a = a + 1;a + 1;a = 1 + a;++a;正确答案B
解析详情
【答案】B
【考点】表达式求值与赋值
【解析】 `a + 1;` 只是计算出一个结果,但没有把结果再存回 `a`,所以 `a` 仍保持字符 `'2'`。其余三项都会把新值写回 `a`,最终变成 `'3'`。
【易错点】 表达式有结果,不代表变量本身已经被修改。
第 10 题(单选题)
如果 a 为 int 类型的变量,且 a 的值为 9,则执行 a -= 3; 之后,a 的值会是()。
正确答案B
解析详情
【答案】B
【考点】复合赋值运算
【解析】 `a -= 3` 等价于 `a = a - 3`。原来 `a = 9`,执行后变成 `6`,所以选 B。
【易错点】 不要把 `-=` 看成单独赋值成 3,它表示“先减去,再赋回”。
第 11 题(单选题)
如果 a 和 b 均为 int 类型的变量,下列表达式能正确判断“a 等于 0 或 b 等于 0”的是()
(!a) || (!b)(a = b = 0)(a == 0) & (b == 0)(a == 0) - (b == 0) == 0正确答案A
解析详情
【答案】A
【考点】逻辑或与条件判断
【解析】 `!a` 在 `a==0` 时为真,`!b` 在 `b==0` 时为真,所以 `(!a) || (!b)` 正好表示“a 等于 0 或 b 等于 0”。B 是赋值表达式,C 实际表示“且”,D 的逻辑含义也不对。
【易错点】 按位与 `&` 和逻辑与 `&&`、逻辑或 `||` 容易混淆,题意是“或”时要特别注意。
第 12 题(单选题)
如果 a 为 char 类型的变量,下列哪个表达式可以正确判断“a 是小写字母”?
a <= a <= za - 'a' <= 'z' - 'a''a' <= a <= 'z'a >= 'a' && a <= 'z'正确答案D
解析详情
【答案】D
【考点】字符范围判断
【解析】 判断小写字母要同时满足 `a >= 'a'` 和 `a <= 'z'`,D 正好完整表达了这个闭区间。A、C 这种连写比较在 C++ 中会先算左边真假,再与右边比较,不能表示区间判断。
【易错点】 数学里常写 `'a' <= a <= 'z'`,但在 C++ 里必须拆成两个比较再用 `&&` 连接。
第 13 题(单选题)
在下列代码的横线处填写(),使得输出是。
#include <iostream>
using namespace std;
int main() {
int a = 10, b = 50;
; // 在此处填入代码
b -= a;
a += b;
cout << a << " " << b << endl;
return 0;
}a -= ba += ba = b - aa = b正确答案C
解析详情
【答案】C
【考点】代数变形与变量跟踪
【解析】 先填 `a = b - a`,则 `a = 40`。接着 `b -= a` 得到 `b = 10`,再执行 `a += b` 得到 `a = 50`,最终输出正好是 `50 10`,所以选 C。
【易错点】 这题不能只看第一步,要把后面两次赋值连着算完。
第 14 题(单选题)
在下列代码的横线处填写(),可以使得输出是 5。
#include <iostream>
using namespace std;
int main() {
int cnt = 0;
for (char ch = '1'; ch <= '9'; ch++)
if (____) // 在此处填入代码
cnt++;
cout << cnt << endl;
return 0;
}ch < '5'ch >= 5ch >= '4'ch % 2 == 1正确答案D
解析详情
【答案】D
【考点】字符编码与循环计数
【解析】 字符 `'1'` 到 `'9'` 的编码连续,其中 `'1'、'3'、'5'、'7'、'9'` 的编码都是奇数,所以条件 `ch % 2 == 1` 会命中 5 次。A 只统计 4 个字符,C 会统计 6 个字符。
【易错点】 这里循环变量是字符,不是整数 1 到 9,但字符编码仍可参与取模。
第 15 题(单选题)
执行以下 C++ 语言程序后,输出结果是()。
#include <iostream>
using namespace std;
int main() {
int n = 17;
bool isprime = true;
for (int i = 2; i <= n; i++)
if (n % i == 0)
isprime = false;
cout << isprime << endl;
return 0;
}正确答案C
解析详情
【答案】C
【考点】布尔输出与循环条件
【解析】 当循环到 `i = 17` 时,`17 % 17 == 0`,于是 `isprime` 被改成 `false`。`cout` 输出布尔值时默认显示为 `0/1`,因此这里输出的是 `0`,对应选项 C。
【易错点】 不要只凭“17 是素数”就选 true,程序本身把 `i` 枚举到了 `n`,逻辑已经写错了。
判断题(每题 2 分)
第 1 题(判断题)
明明和笑笑在“小庙会”上分别抽到一个 4GB 和 4096MB 的 U 盘,容量大的盘是笑笑的()。
正确答案错误
解析详情
【答案】错误
【考点】存储单位换算
【解析】 `1GB = 1024MB`,所以 `4GB = 4096MB`,两个 U 盘容量其实一样大,不存在谁更大。题干说笑笑的更大,因此错误。
【易错点】 看到单位不同就容易误判大小,先统一成同一单位再比较。
第 2 题(判断题)
IPv4 的地址通常用“点分十进制”的表示形式,形如(a.b.c.d),其中 a、b、c、d 都是之间的十进制整数()。
正确答案错误
解析详情
【答案】错误
【考点】IPv4 地址表示
【解析】 IPv4 的每一段范围是 `0` 到 `255`,不是 `1` 到 `255`。像 `0.0.0.0` 这类地址中就包含 0,所以题干错误。
【易错点】 不要把“通常写成十进制”误记成“每段都从 1 开始”。
第 3 题(判断题)
在 C++ 语言中,一个程序不能有多个 main 函数。
正确答案正确
解析详情
【答案】正确
【考点】C++ 程序入口
【解析】 一个完整的 C++ 程序只能有一个程序入口,也就是一个 `main` 函数。若出现多个 `main`,程序无法按规则链接运行。
【易错点】 可以有很多普通函数,但程序入口函数 `main` 只能有一个。
第 4 题(判断题)
在 C++ 语言中,标识符中可以有下划线 `___`,但不能以下划线 `___` 开头。
正确答案错误
解析详情
【答案】错误
【考点】标识符命名规则
【解析】 C++ 标识符里可以出现下划线,也可以以下划线开头,所以题干后半句不对。像 `_x` 这种名字在语法上是允许的。
【易错点】 “建议少用前导下划线”和“语法上不允许”不是同一个概念。
第 5 题(判断题)
如果 a 是 int 类型的变量,而且值为 1,则表达式 'a' 的值为 '1'。
正确答案错误
解析详情
【答案】错误
【考点】字符常量与变量名
【解析】 `'a'` 表示字符常量,值是字母 `a`,和变量 `a` 当前是否等于 1 没有关系。题干把字符常量和变量名混为一谈,所以错误。
【易错点】 加单引号后就是字符字面量,不再表示变量本身。
第 6 题(判断题)
在 `if ... else` 语句中,`else` 子句可以嵌套 `if ... else` 语句,但 `if` 子句不可以,因为会造成二义性。
正确答案错误
解析详情
【答案】错误
【考点】if-else 嵌套
【解析】 `if` 子句和 `else` 子句里都可以继续嵌套 `if ... else`。所谓二义性问题靠“else 总是匹配最近的 if”来解决,所以题干说法错误。
【易错点】 不要把“存在悬挂 else 规则”误解成“if 子句里不能再嵌套 if”。
第 7 题(判断题)
`while` 语句的循环体至少会执行一次。
正确答案错误
解析详情
【答案】错误
【考点】while 与 do-while 区别
【解析】 `while` 是先判断条件、再决定是否进入循环;如果初始条件就不成立,循环体一次也不会执行。至少执行一次的是 `do ... while`。
【易错点】 `while` 和 `do ... while` 的最大区别就是判断发生在循环前还是循环后。
第 8 题(判断题)
C++ 语言中 `>=` 是运算符,但 `=>` 不是。
正确答案正确
解析详情
【答案】正确
【考点】关系运算符
【解析】 `>=` 是 C++ 中合法的“大于等于”运算符,而 `=>` 不是 C++ 里的运算符写法,因此题干正确。
【易错点】 符号顺序不能颠倒,运算符是固定写法。
第 9 题(判断题)
如果 a 为 char 类型的变量,且取值为小写字母,则执行语句 `a = a - 'a' + 'A';` 后,a 的值会变为与原值对应的大写字母。
正确答案正确
解析详情
【答案】正确
【考点】大小写字母转换
【解析】 小写字母减去 `'a'` 得到 0 到 25,再加上 `'A'` 就会落到对应的大写字母编码区间,所以该语句能把小写字母转成对应的大写字母。
【易错点】 这个写法只适用于英文字母字符,不能随意推广到其他字符。
第 10 题(判断题)
表达式的计算结果为 5.0,且结果类型为 double。
正确答案正确
解析详情
【答案】正确
【考点】浮点除法结果类型
【解析】 `10.0` 是 `double`,与整数 `2` 做除法时会进行浮点运算,结果是 `5.0`,类型仍为 `double`。所以题干正确。
【易错点】 只要表达式里有浮点数参与,结果往往就不是整型除法。