GESP Level 2 · 2023-03

客观题逐题讲义

15 道单选 + 10 道判断。每题按“题干 → 自己想 → 答案 → 知识点 → 分步推导 → 易错点”组织,适合课堂讲评和课后复习。

25客观题总数
15单选题
10判断题
50总分

一、单选题逐题讲评

单选题 · 1

第 1 题(单选题)

#
存储介质特性

以下存储器中的数据不会受到附近强磁场干扰的是()。

A.硬盘
B.U盘
C.内存
D.光盘
展开:答案、思考步骤与易错点
正确答案D

知识点讲解

存储介质特性

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. 光盘用激光读取凹凸信息,不靠磁性记录数据,所以附近强磁场不会把它的内容扰乱。
  2. 硬盘属于磁记录介质,题目考查的“不受强磁场干扰”应选光盘。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

不要把“能存数据”都当成同一种存储原理,磁存储和光存储差别很大。

单选题 · 2

第 2 题(单选题)

#
流程图程序结构

下列流程图,属于计算机的哪种程序结构?()。

A.顺序结构
B.循环结构
C.分支结构
D.数据结构
展开:答案、思考步骤与易错点
正确答案C

知识点讲解

流程图程序结构

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. 图中先判断“是否按下空格键”,再根据“是/否”分别执行不同操作,最后两条路径汇合结束。
  2. 这种先判断条件再分两路执行的结构就是分支结构。

计算 / 追踪提示

计算时分清 `/` 是商,`%` 是余数;如果题目要求第 N 个位置,常要先改成从 0 开始的下标。

易错点

看到流程图里有多条箭头,不一定就是循环,关键要看是否回到前面重复执行。

单选题 · 3

第 3 题(单选题)

#
C++ 基本数据类型

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

A.double 类型的变量占用内存的大小是浮动的
B.bool 类型的变量占用 1 字节内存
C.int 类型变量的取值范围不是无限的
D.char 类型的变量有 256 种取值
展开:答案、思考步骤与易错点
正确答案A

知识点讲解

C++ 基本数据类型

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. `double` 的存储大小在具体实现中通常是固定的,不是“浮动的”。
  2. `bool` 常见占 1 字节,`int` 取值范围有限,`char` 一般有 256 种取值,所以不正确的是 A。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

不要把“浮点数”误解成“占用内存大小浮动”,浮点数浮动的是表示范围和精度。

单选题 · 4

第 4 题(单选题)

#
标识符命名规则

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

A.变量定义后,可以使用赋值语句改变它的值
B.变量定义时,必须指定类型
C.变量名必须为合法标识符
D.合法标识符可以以数字开始
展开:答案、思考步骤与易错点
正确答案D

知识点讲解

标识符命名规则

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. C++ 的合法标识符不能以数字开头,只能以下划线或字母开头,所以 D 错。
  2. 其余三项都是变量和标识符的基本规则。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

“可以包含数字”和“可以以数字开头”不是一回事。

单选题 · 5

第 5 题(单选题)

#
关键字与普通标识符

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

A.return
B.max
C.else
D.case
展开:答案、思考步骤与易错点
正确答案B

知识点讲解

关键字与普通标识符

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. `return`、`else`、`case` 都是 C++ 关键字,`max` 只是常见函数名,不是语言保留字,所以选 B。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

常见库函数或算法名字用得很多,但并不等于关键字。

单选题 · 6

第 6 题(单选题)

#
C++ 运算符识别

以下哪个不是 C++ 语言的运算符?

A.\=
B./=
C.-=
D.!=
展开:答案、思考步骤与易错点
正确答案A

知识点讲解

C++ 运算符识别

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. 按原题人工确认的文本,A 选项是字面量 `\=`,它不是 C++ 的合法运算符;
  2. `/=`、`-=`、`!=` 都是合法运算符。
  3. 因此“不属于运算符”的是 A。

计算 / 追踪提示

计算时分清 `/` 是商,`%` 是余数;如果题目要求第 N 个位置,常要先改成从 0 开始的下标。

易错点

这题要按题面字面判断,不能把 `\=` 自动当成转义后的 `=`。

单选题 · 7

第 7 题(单选题)

#
自增运算与左值

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

A.b = a + 1;
B.b = a + '1';
C.b = 'a'++;
D.b = a++;
展开:答案、思考步骤与易错点
正确答案C

知识点讲解

自增运算与左值

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. `'a'` 是字符常量,不是变量,不能对常量执行 `++`,所以 `b = 'a'++;` 不合法。
  2. 其余几项都把字符变量或字符常量参与普通表达式运算,语法上成立。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

`++` 只能作用在可修改的变量上,不能作用在字面常量上。

单选题 · 8

第 8 题(单选题)

#
整型与浮点型除法

如果 a、b、c 和 d 都是 int 类型的变量,则下列哪个表达式能够正确计算它们的平均值?

A.( 𝑎 + 𝑏 + 𝑐 + 𝑑 ) / 4 (a+b+c+d)/4
B.( 𝑎 + 𝑏 + 𝑐 + 𝑑 ) % 4 (a+b+c+d)%4
C.( 𝑎 + 𝑏 + 𝑐 + 𝑑 ) / 4.0 (a+b+c+d)/4.0
D.( 𝑎 + 𝑏 + 𝑐 + 𝑑 ) % 4.0 (a+b+c+d)%4.0
展开:答案、思考步骤与易错点
正确答案C

知识点讲解

整型与浮点型除法

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. 平均值要允许出现小数,前半部分 `a+b+c+d` 是整数,若再除以 `4` 会做整除。
  2. 只有除以 `4.0` 才会转成浮点除法,得到真正的平均值,所以选 C。

计算 / 追踪提示

计算时分清 `/` 是商,`%` 是余数;如果题目要求第 N 个位置,常要先改成从 0 开始的下标。

易错点

很多人只看公式形式对不对,忽略了 `/ 4` 和 `/ 4.0` 的结果类型不同。

单选题 · 9

第 9 题(单选题)

#
表达式求值与赋值

如果 a 为 char 类型的变量,且 a 的值为 '2',则下列哪条语句执行后,a 的值不会变为 '3'?

A.a = a + 1;
B.a + 1;
C.a = 1 + a;
D.++a;
展开:答案、思考步骤与易错点
正确答案B

知识点讲解

表达式求值与赋值

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. `a + 1;` 只是计算出一个结果,但没有把结果再存回 `a`,所以 `a` 仍保持字符 `'2'`。
  2. 其余三项都会把新值写回 `a`,最终变成 `'3'`。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

表达式有结果,不代表变量本身已经被修改。

单选题 · 10

第 10 题(单选题)

#
复合赋值运算

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

A.3
B.6
C.9
D.12
展开:答案、思考步骤与易错点
正确答案B

知识点讲解

复合赋值运算

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. `a -= 3` 等价于 `a = a - 3`。
  2. 原来 `a = 9`,执行后变成 `6`,所以选 B。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

不要把 `-=` 看成单独赋值成 3,它表示“先减去,再赋回”。

单选题 · 11

第 11 题(单选题)

#
逻辑或与条件判断

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

A.(!a) || (!b)
B.(a = b = 0)
C.(a == 0) & (b == 0)
D.(a == 0) - (b == 0) == 0
展开:答案、思考步骤与易错点
正确答案A

知识点讲解

逻辑或与条件判断

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. `!a` 在 `a==0` 时为真,`!b` 在 `b==0` 时为真,所以 `(!a) || (!b)` 正好表示“a 等于 0 或 b 等于 0”。
  2. B 是赋值表达式,C 实际表示“且”,D 的逻辑含义也不对。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

按位与 `&` 和逻辑与 `&&`、逻辑或 `||` 容易混淆,题意是“或”时要特别注意。

单选题 · 12

第 12 题(单选题)

#
字符范围判断

如果 a 为 char 类型的变量,下列哪个表达式可以正确判断“a 是小写字母”?

A.a <= a <= z
B.a - 'a' <= 'z' - 'a'
C.'a' <= a <= 'z'
D.a >= 'a' && a <= 'z'
展开:答案、思考步骤与易错点
正确答案D

知识点讲解

字符范围判断

先这样想

把字符先换成编码或相对差值,再比较大小。

分步推导

  1. 判断小写字母要同时满足 `a >= 'a'` 和 `a <= 'z'`,D 正好完整表达了这个闭区间。
  2. A、C 这种连写比较在 C++ 中会先算左边真假,再与右边比较,不能表示区间判断。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

数学里常写 `'a' <= a <= 'z'`,但在 C++ 里必须拆成两个比较再用 `&&` 连接。

单选题 · 13

第 13 题(单选题)

#
代数变形与变量跟踪

在下列代码的横线处填写(),使得输出是 50 10 50 10。

#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 50;
    ; // 在此处填入代码
    b -= a;
    a += b;
    cout << a << " " << b << endl;
    return 0;
}
A.a -= b
B.a += b
C.a = b - a
D.a = b
展开:答案、思考步骤与易错点
正确答案C

知识点讲解

代数变形与变量跟踪

先这样想

先圈关键词,再排除与题意不匹配的选项。

分步推导

  1. 先填 `a = b - a`,则 `a = 40`。
  2. 接着 `b -= a` 得到 `b = 10`,再执行 `a += b` 得到 `a = 50`,最终输出正好是 `50 10`,所以选 C。

计算 / 追踪提示

计算时分清 `/` 是商,`%` 是余数;如果题目要求第 N 个位置,常要先改成从 0 开始的下标。

易错点

这题不能只看第一步,要把后面两次赋值连着算完。

单选题 · 14

第 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;
}
A.ch < '5'
B.ch >= 5
C.ch >= '4'
D.ch % 2 == 1
展开:答案、思考步骤与易错点
正确答案D

知识点讲解

字符编码与循环计数

先这样想

先列变量每轮变化,再看输出语句是否真的执行。

分步推导

  1. 字符 `'1'` 到 `'9'` 的编码连续,其中 `'1'、'3'、'5'、'7'、'9'` 的编码都是奇数,所以条件 `ch % 2 == 1` 会命中 5 次。
  2. A 只统计 4 个字符,C 会统计 6 个字符。

计算 / 追踪提示

建议在草稿纸画三列:当前变量、条件真假、本轮输出。遇到 continue 直接跳到下一轮,遇到 break 只跳出当前循环。

易错点

这里循环变量是字符,不是整数 1 到 9,但字符编码仍可参与取模。

单选题 · 15

第 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;
}
A.false
B.true
C.0
D.1
展开:答案、思考步骤与易错点
正确答案C

知识点讲解

布尔输出与循环条件

先这样想

先列变量每轮变化,再看输出语句是否真的执行。

分步推导

  1. 当循环到 `i = 17` 时,`17 % 17 == 0`,于是 `isprime` 被改成 `false`。
  2. `cout` 输出布尔值时默认显示为 `0/1`,因此这里输出的是 `0`,对应选项 C。

计算 / 追踪提示

建议在草稿纸画三列:当前变量、条件真假、本轮输出。遇到 continue 直接跳到下一轮,遇到 break 只跳出当前循环。

易错点

不要只凭“17 是素数”就选 true,程序本身把 `i` 枚举到了 `n`,逻辑已经写错了。

二、判断题逐题讲评

判断题 · 1

第 1 题(判断题)

#
存储单位换算

明明和笑笑在“小庙会”上分别抽到一个 4GB 和 4096MB 的 U 盘,容量大的盘是笑笑的()。

判断本题结论:先独立判断,再展开答案。正确答案是 错误
展开:答案、思考步骤与易错点
正确答案错误

知识点讲解

存储单位换算

先这样想

把题干拆成两半:事实是否正确,结论是否被事实支持。

分步推导

  1. `1GB = 1024MB`,所以 `4GB = 4096MB`,两个 U 盘容量其实一样大,不存在谁更大。
  2. 题干说笑笑的更大,因此错误。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

看到单位不同就容易误判大小,先统一成同一单位再比较。

判断题 · 2

第 2 题(判断题)

#
IPv4 地址表示

IPv4 的地址通常用“点分十进制”的表示形式,形如(a.b.c.d),其中 a、b、c、d 都是 1 ∼ 255 1∼255之间的十进制整数()。

判断本题结论:先独立判断,再展开答案。正确答案是 错误
展开:答案、思考步骤与易错点
正确答案错误

知识点讲解

IPv4 地址表示

先这样想

把题干拆成两半:事实是否正确,结论是否被事实支持。

分步推导

  1. IPv4 的每一段范围是 `0` 到 `255`,不是 `1` 到 `255`。
  2. 像 `0.0.0.0` 这类地址中就包含 0,所以题干错误。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

不要把“通常写成十进制”误记成“每段都从 1 开始”。

判断题 · 3

第 3 题(判断题)

#
C++ 程序入口

在 C++ 语言中,一个程序不能有多个 main 函数。

判断本题结论:先独立判断,再展开答案。正确答案是 正确
展开:答案、思考步骤与易错点
正确答案正确

知识点讲解

C++ 程序入口

先这样想

把题干拆成两半:事实是否正确,结论是否被事实支持。

分步推导

  1. 一个完整的 C++ 程序只能有一个程序入口,也就是一个 `main` 函数。
  2. 若出现多个 `main`,程序无法按规则链接运行。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

可以有很多普通函数,但程序入口函数 `main` 只能有一个。

判断题 · 4

第 4 题(判断题)

#
标识符命名规则

在 C++ 语言中,标识符中可以有下划线 `___`,但不能以下划线 `___` 开头。

判断本题结论:先独立判断,再展开答案。正确答案是 错误
展开:答案、思考步骤与易错点
正确答案错误

知识点讲解

标识符命名规则

先这样想

把题干拆成两半:事实是否正确,结论是否被事实支持。

分步推导

  1. C++ 标识符里可以出现下划线,也可以以下划线开头,所以题干后半句不对。
  2. 像 `_x` 这种名字在语法上是允许的。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

“建议少用前导下划线”和“语法上不允许”不是同一个概念。

判断题 · 5

第 5 题(判断题)

#
字符常量与变量名

如果 a 是 int 类型的变量,而且值为 1,则表达式 'a' 的值为 '1'。

判断本题结论:先独立判断,再展开答案。正确答案是 错误
展开:答案、思考步骤与易错点
正确答案错误

知识点讲解

字符常量与变量名

先这样想

把字符先换成编码或相对差值,再比较大小。

分步推导

  1. `'a'` 表示字符常量,值是字母 `a`,和变量 `a` 当前是否等于 1 没有关系。
  2. 题干把字符常量和变量名混为一谈,所以错误。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

加单引号后就是字符字面量,不再表示变量本身。

判断题 · 6

第 6 题(判断题)

#
if-else 嵌套

在 `if ... else` 语句中,`else` 子句可以嵌套 `if ... else` 语句,但 `if` 子句不可以,因为会造成二义性。

判断本题结论:先独立判断,再展开答案。正确答案是 错误
展开:答案、思考步骤与易错点
正确答案错误

知识点讲解

if-else 嵌套

先这样想

把题干拆成两半:事实是否正确,结论是否被事实支持。

分步推导

  1. `if` 子句和 `else` 子句里都可以继续嵌套 `if ... else`。
  2. 所谓二义性问题靠“else 总是匹配最近的 if”来解决,所以题干说法错误。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

不要把“存在悬挂 else 规则”误解成“if 子句里不能再嵌套 if”。

判断题 · 7

第 7 题(判断题)

#
while 与 do-while 区别

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

判断本题结论:先独立判断,再展开答案。正确答案是 错误
展开:答案、思考步骤与易错点
正确答案错误

知识点讲解

while 与 do-while 区别

先这样想

先列变量每轮变化,再看输出语句是否真的执行。

分步推导

  1. `while` 是先判断条件、再决定是否进入循环;
  2. 如果初始条件就不成立,循环体一次也不会执行。
  3. 至少执行一次的是 `do ... while`。

计算 / 追踪提示

建议在草稿纸画三列:当前变量、条件真假、本轮输出。遇到 continue 直接跳到下一轮,遇到 break 只跳出当前循环。

易错点

`while` 和 `do ... while` 的最大区别就是判断发生在循环前还是循环后。

判断题 · 8

第 8 题(判断题)

#
关系运算符

C++ 语言中 `>=` 是运算符,但 `=>` 不是。

判断本题结论:先独立判断,再展开答案。正确答案是 正确
展开:答案、思考步骤与易错点
正确答案正确

知识点讲解

关系运算符

先这样想

把题干拆成两半:事实是否正确,结论是否被事实支持。

分步推导

  1. `>=` 是 C++ 中合法的“大于等于”运算符,而 `=>` 不是 C++ 里的运算符写法,因此题干正确。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

符号顺序不能颠倒,运算符是固定写法。

判断题 · 9

第 9 题(判断题)

#
大小写字母转换

如果 a 为 char 类型的变量,且取值为小写字母,则执行语句 `a = a - 'a' + 'A';` 后,a 的值会变为与原值对应的大写字母。

判断本题结论:先独立判断,再展开答案。正确答案是 正确
展开:答案、思考步骤与易错点
正确答案正确

知识点讲解

大小写字母转换

先这样想

把题干拆成两半:事实是否正确,结论是否被事实支持。

分步推导

  1. 小写字母减去 `'a'` 得到 0 到 25,再加上 `'A'` 就会落到对应的大写字母编码区间,所以该语句能把小写字母转成对应的大写字母。

计算 / 追踪提示

讲评时可以先让学生口头说出排除理由,再打开解析核对。

易错点

这个写法只适用于英文字母字符,不能随意推广到其他字符。

判断题 · 10

第 10 题(判断题)

#
浮点除法结果类型

表达式 ( 10.0 / 2 ) (10.0/2)的计算结果为 5.0,且结果类型为 double。

判断本题结论:先独立判断,再展开答案。正确答案是 正确
展开:答案、思考步骤与易错点
正确答案正确

知识点讲解

浮点除法结果类型

先这样想

把题干拆成两半:事实是否正确,结论是否被事实支持。

分步推导

  1. `10.0` 是 `double`,与整数 `2` 做除法时会进行浮点运算,结果是 `5.0`,类型仍为 `double`。
  2. 所以题干正确。

计算 / 追踪提示

计算时分清 `/` 是商,`%` 是余数;如果题目要求第 N 个位置,常要先改成从 0 开始的下标。

易错点

只要表达式里有浮点数参与,结果往往就不是整型除法。