试卷解析 · 理解每一步
2023-09-Level-6
2023-09-Level-6
试卷解析总览,可直接查看每题答案与解析。
第 1 题(单选题,2 分)
近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?()。
正确答案A
解析详情
手写板通过电磁感应或压力感应捕捉用户的书写动作,并将信息传输至计算机,属于典型的输入设备。
第 2 题(单选题,2 分)
如果 a 和 b 均为 int 类型的变量,且 b 的值不为 0,那么下列能正确判断“a 是 b 的3倍”的表达式是()。
正确答案D
解析详情
判断“a 是 b 的 3 倍”,即数学关系 a = 3b。在 C++ 中,对应的等值判断表达式为 (a == 3 * b)。
第 3 题(单选题,2 分)
以下不属于面向对象程序设计语言的是()。
正确答案D
解析详情
C++、Python、Java 均支持面向对象编程(OOP)。C 语言是面向过程的结构化编程语言,不支持类、继承、多态等 OOP 特性。
第 4 题(单选题,2 分)
下面有关 C++ 类定义的说法,错误的是()。
正确答案D
解析详情
C++ 类成员不能是“任意类型”。例如,类不能包含自身类型的非指针/非引用对象成员(会导致无限递归大小),且不能定义 void 类型的成员变量。
第 5 题(单选题,2 分)
有关下面 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
解析详情
代码中 MyStr 类未重载 << 运算符,因此无法直接使用 cout << st 输出对象。此外,data 成员默认为 private,在 main 中直接访问也会报错。
第 6 题(单选题,2 分)
下列关于命名空间的说法错误的是()。
正确答案D
解析详情
若多个命名空间存在同名函数且都被 using 引用,调用时会产生二义性,导致“编译错误”而非“运行错误”。
第 7 题(单选题,2 分)
有关下面 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
解析详情
代码中的 push 和 pop 缺乏边界检查。例如 pop 函数使用了错误的下标 _data[-tail],且未处理栈满或栈空的情况,增加异常处理可以提高代码健壮性。
第 8 题(单选题,2 分)
有关下面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
解析详情
代码中 push 函数返回类型为 MoreData &,并执行了 return *this;。这种设计支持链式调用,因此 myData.push(11).push(12).push(13) 是合法的。
第 9 题(单选题,2 分)
某内容仅会出现 ABCDEFG ,其对应的出现概率为0.40、0.30、0.15、0.05、0.04、0.03、0.03,如下图所示。按照哈夫曼编码规则,假设 B 的编码为 11 ,则 D 的编码为()。

正确答案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。
第 10 题(单选题,2 分)
下面有关格雷码的说法,错误的是()。
正确答案B
解析详情
格雷码是一种循环二进制码,特点是相邻两数仅有一位不同。格雷码并非“唯一性”编码,同一种数值可以有多种格雷码构造方式。
第 11 题(单选题,2 分)
有关下图的二叉树,说法正确的是()。

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