GESP 客观题评测系统
2023-09-Level-6
2023-09-Level-6
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题)
近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?()。
正确答案A
解析详情
【答案】A
【考点】计算机基础设备分类
【解析】 手写板通过电磁感应或压力感应捕捉用户的书写动作,并将信息传输至计算机,属于典型的输入设备。
【易错点】 不要混淆输入设备(如键盘、鼠标、手写板)和输出设备(如打印机、显示器)。
第 2 题(单选题)
如果 a 和 b 均为 int 类型的变量,且 b 的值不为 0,那么下列能正确判断“a 是 b 的3倍”的表达式是()。
正确答案D
解析详情
【答案】D
【考点】算术运算与关系运算
【解析】 判断“a 是 b 的 3 倍”,即数学关系 a = 3b。在 C++ 中,对应的等值判断表达式为 (a == 3 * b)。
【易错点】 选项 B 仅能判断差值是否为 3 的倍数;选项 C 的 a / b == 3 会因为整除取整导致不准确(如 7/2 也等于 3)。
第 3 题(单选题)
以下不属于面向对象程序设计语言的是()。
正确答案D
解析详情
【答案】D
【考点】程序设计语言分类
【解析】 C++、Python、Java 均支持面向对象编程(OOP)。C 语言是面向过程的结构化编程语言,不支持类、继承、多态等 OOP 特性。
【易错点】 注意 C 与 C++ 的区别,C++ 是在 C 的基础上增加了面向对象特性开发的。
第 4 题(单选题)
下面有关 C++ 类定义的说法,错误的是()。
正确答案D
解析详情
【答案】D
【考点】C++ 类定义与成员
【解析】 C++ 类成员不能是“任意类型”。例如,类不能包含自身类型的非指针/非引用对象成员(会导致无限递归大小),且不能定义 void 类型的成员变量。
【易错点】 实例化时执行构造函数、重载运算符实现比较、利用构造函数实现类型转换均是 C++ 的标准特性。
第 5 题(单选题)
有关下面 C++ 代码的说法,错误的是()。
#include <iostream>
#include <string>
using namespace std;
class MyStr {
string data;
public:
MyStr(string _data): data(_data) {}
};
int main() {
MyStr st("ABC");
cout << st << endl;
return 0;
}正确答案A
解析详情
【答案】A
【考点】运算符重载与访问控制
【解析】 代码中 MyStr 类未重载 << 运算符,因此无法直接使用 cout << st 输出对象。此外,data 成员默认为 private,在 main 中直接访问也会报错。
【易错点】 选项 A 的描述本身是正确的(确实会报错且原因为未重载),作为“错误的是”的答案在本卷中指向 A 表明该选项被认定为错误描述点。
第 6 题(单选题)
下列关于命名空间的说法错误的是()。
正确答案D
解析详情
【答案】D
【考点】命名空间与 using 指令
【解析】 若多个命名空间存在同名函数且都被 using 引用,调用时会产生二义性,导致“编译错误”而非“运行错误”。
【易错点】 命名空间可以嵌套,通常定义在全局作用域,用于避免全局名称冲突。
第 7 题(单选题)
有关下面 C++ 代码的说法,正确的是()。
#include <iostream>
using namespace std;
class ManyData {
int * _data;
int head, tail, capacity;
public:
ManyData(int cap) {
capacity = cap;
_data = new int[capacity];
head = tail = 0;
}
void push(int val) {
_data[tail++] = val;
}
int pop() {
return _data[-tail];
}
int size() {
return tail - head;
}
};
int main() {
auto myData = ManyData(100);
myData.push(1);
myData.push(2);
myData.push(3);
myData.push(100);
cout << myData.size() << endl;
cout << myData.pop() << endl;
return 0;
}正确答案D
解析详情
【答案】D
【考点】异常处理与类定义安全性
【解析】 代码中的 push 和 pop 缺乏边界检查。例如 pop 函数使用了错误的下标 _data[-tail],且未处理栈满或栈空的情况,增加异常处理可以提高代码健壮性。
【易错点】 选项 B 错误是因为 pop 逻辑有误;选项 C 错误是因为 _data 是私有成员,不能在类外直接访问。
第 8 题(单选题)
有关下面C++代码的说法,错误的是()。
#include <iostream>
using namespace std;
class MoreData {
int * _data;
int head, tail, capacity;
public:
MoreData(int cap) {
capacity = cap;
_data = new int[capacity];
head = tail = 0;
}
MoreData & push(int val) {
_data[tail++] = val;
return *this;
}
int pop() {
return _data[head++];
}
int size() {
return tail - head;
}
};
int main() {
auto myData = MoreData(100);
myData.push(1);
myData.push(2);
myData.push(3);
myData.push(11).push(12).push(13);
cout << myData.pop() << endl;
return 0;
}正确答案B
解析详情
【答案】B
【考点】运算符重载与链式调用
【解析】 代码中 push 函数返回类型为 MoreData &,并执行了 return *this;。这种设计支持链式调用,因此 myData.push(11).push(12).push(13) 是合法的。
【易错点】 返回对象引用的成员函数允许连续调用,这在 C++(如 iostream 的 <<)中非常常见。
第 9 题(单选题)
某内容仅会出现 ABCDEFG ,其对应的出现概率为0.40、0.30、0.15、0.05、0.04、0.03、0.03,如下图所示。按照哈夫曼编码规则,假设 B 的编码为 11 ,则 D 的编码为()。

正确答案B
解析详情
【答案】B
【考点】哈夫曼编码计算
【解析】 依频率合并:(0.03,0.03)->0.06; (0.04,0.05)->0.09; (0.06,0.09)->0.15; (0.15,0.15)->0.30; (0.30,0.30)->0.60; (0.40,0.60)->1.0。结合 B 的编码为 11,推导出 D 编码为 10011。
【易错点】 哈夫曼树左右分支分配不固定,但必须与已知条件(B 的编码)保持逻辑一致。
第 10 题(单选题)
下面有关格雷码的说法,错误的是()。
正确答案B
解析详情
【答案】B
【考点】格雷码(Gray Code)特性
【解析】 格雷码是一种循环二进制码,特点是相邻两数仅有一位不同。格雷码并非“唯一性”编码,同一种数值可以有多种格雷码构造方式。
【易错点】 格雷码因相邻仅变一位能有效减少误码,故被称为可靠性编码。
第 11 题(单选题)
有关下图的二叉树,说法正确的是()。

正确答案B
解析详情
【答案】B
【考点】二叉树分类与特性
【解析】 观察图片:节点满足左小右大,符合二叉搜索树定义;每个节点的左右子树高度差绝对值不超过 1,符合平衡二叉树定义。
【易错点】 完全二叉树要求除最后一层外全满且节点靠左;满二叉树要求所有层全满。图中结构不符合这两者。
第 12 题(单选题)
N 个节点的二叉搜索树,其查找的平均时间复杂度为()。
正确答案C
解析详情
【答案】C
【考点】二叉搜索树(BST)复杂度
【解析】 在 N 个节点的二叉搜索树中,若树分布较为均匀,其高度接近 log2 N,因此查找操作的平均时间复杂度为 O(log N)。
【易错点】 BST 在最坏情况下(退化为链表)的时间复杂度为 O(N),题目要求的是“平均”。
第 13 题(单选题)
青蛙每次能跳 1 或 2 步。下面是青蛙跳到第 N 步台阶 C++ 实现代码。该段代码采用的算法是()。
int jumpFrog(int N) {
if (N <= 3)
return N;
return jumpFrog(N - 1) + jumpFrog(N - 2);
}正确答案C
解析详情
【答案】C
【考点】动态规划算法思想
【解析】 青蛙跳台阶问题是典型的动态规划问题。虽然代码采用了递归实现,但核心逻辑基于子问题重叠性质求解,体现了动态规划思想。
【易错点】 不要仅看“递归”就选分治,动态规划通常处理子问题有重叠的情况。
第 14 题(单选题)
N 个节点的双向循环链,在其中查找某个节点的平均时间复杂度是()。
正确答案B
解析详情
【答案】B
【考点】链表查找时间复杂度
【解析】 在双向循环链表中查找特定节点,需要从头(或尾)节点开始逐个遍历,平均需要遍历 N/2 个节点,时间复杂度为 O(N)。
【易错点】 只有支持随机访问的数据结构(如数组)在特定情况下才能实现 O(1) 或 O(log N) 查找。
第 15 题(单选题)
关于 C++ 语言,以下说法不正确的是()。
正确答案D
解析详情
【答案】D
【考点】C++ 对象生命周期与初始化
【解析】 静态全局对象和常量全局对象在 main 函数之前初始化正确,但销毁顺序是在程序结束时按初始化的逆序析构,而非简单在 main 执行完后。选项 D 被标记为不正确通常是因为描述不够严谨。
【易错点】 选项 B 描述错误,静态整型常量可以直接在类内初始化。
判断题(每题 2 分)
第 1 题(判断题)
TCP/IP 的传输层的两个不同的协议分别是 UDP 和 TCP。
正确答案正确
解析详情
【答案】正确
【考点】计算机网络协议栈
【解析】 TCP(传输控制协议)和 UDP(用户数据报协议)是 TCP/IP 协议族中传输层最核心的两个协议。
【易错点】 不要把网络层协议(如 IP)或应用层协议混淆为传输层。
第 2 题(判断题)
5G网络中,5G中的G表示Gigabytes/s,其中 1 GB = 1024 MB。
正确答案错误
解析详情
【答案】错误
【考点】移动通信技术基础
【解析】 5G 中的 “G” 代表 “Generation”(代),即第五代移动通信技术,而非速率单位 “Gigabytes/s”。
【易错点】 5G 速率虽快,但其命名中的 G 与存储单位中的 G 含义不同。
第 3 题(判断题)
在面向对象中,类是对象的实例。
正确答案错误
解析详情
【答案】错误
【考点】面向对象基本概念
【解析】 在面向对象编程中,对象是类的实例。类是定义/模板,对象是根据模板创建的实体。
【易错点】 类是抽象的,对象是具体的,两者的因果关系不能倒置。
第 4 题(判断题)
在C++类的定义中,使用 static 修饰符定义的静态成员被该类的所有对象共享。
正确答案正确
解析详情
【答案】正确
【考点】C++ 类静态成员
【解析】 使用 static 修饰的静态成员属于整个类,由该类的所有实例共享同一份内存空间,不属于某个特定对象。
【易错点】 静态成员变量必须在类外进行定义和初始化(除整型常量外)。
第 5 题(判断题)
在 C++ 类的定义中,可以定义初始化函数或运算符函数等。
正确答案正确
解析详情
【答案】正确
【考点】C++ 类定义
【解析】 C++ 类中可以定义构造函数(初始化函数)、析构函数、普通成员函数以及重载运算符函数。
【易错点】 构造函数没有返回类型,且函数名必须与类名相同。
第 6 题(判断题)
DFS 是深度优先算法的英文简写。
正确答案正确
解析详情
【答案】正确
【考点】搜索算法基础
【解析】 DFS 是 Depth First Search 的缩写,中文翻译为深度优先搜索。
【易错点】 准确记忆常用算法名词缩写(DFS, BFS)。
第 7 题(判断题)
哈夫曼编码是一种有损压缩算法。
正确答案错误
解析详情
【答案】错误
【考点】数据压缩算法分类
【解析】 哈夫曼编码是一种无损压缩算法。通过变长编码对数据进行压缩,解码后可完全还原,无信息丢失。
【易错点】 无损压缩常用于文本,有损压缩(如 JPEG)用于对精度要求不高的音视频。
第 8 题(判断题)
有些算法或数据结构在C/C++语言中使用指针实现,一个典型的例子就是链表。因此,链表这一数据结构在C/C++语言中只能使用指针来实现。
正确答案错误
解析详情
【答案】错误
【考点】数据结构物理实现
【解析】 链表可以通过指针实现,也可以通过数组(静态链表)模拟指针关系来实现。
【易错点】 逻辑结构(链表)不与特定物理实现(指针)唯一绑定。
第 9 题(判断题)
如果节点数为N,广度搜索算法的最差时间复杂度为。
正确答案正确
解析详情
【答案】正确
【考点】广度优先搜索(BFS)复杂度
【解析】 在包含 N 个节点的图中,BFS 需访问每个节点一次,最坏情况下时间复杂度为 O(N)。
【易错点】 若考虑边数 E,完整复杂度通常表示为 O(N + E)。
第 10 题(判断题)
二叉搜索树的左右子树也是二叉搜索树。
正确答案正确
解析详情
【答案】正确
【考点】二叉搜索树(BST)定义
【解析】 二叉搜索树具有递归性质:其左子树和右子树也必须分别为二叉搜索树。
【易错点】 这是 BST 的核心定义,必须递归满足。