#5264. GESP六级真题(202309)
GESP六级真题(202309)
一、单选题(每题 2 分,共 30 分)
1、近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流行,其中包括比较常用的手写板,那么它属于哪类设备?( )。 {{ select(1) }}
- 输入
- 输出
- 控制
- 记录
2、如果 a 和 b 均为 int 类型的变量,且 b 的值不为 0 ,那么下列能正确判断“ a 是 b 的3倍 ”的表达式是()。 {{ select(2) }}
(a >> 3 == b)(a - b) % 3 == 0(a / b == 3)(a == 3 * b)
3、以下不属于面向对象程序设计语言的是( )。 {{ select(3) }}
- C++
- Python
- Java
- C
4、下面有关C++类定义的说法,错误的是( )。 {{ select(4) }}
- C++类实例化时,会执行构造函数。
- C++自定义类可以通过定义构造函数实现自动类型转换。
- C++自定义类可以通过重载
>、<等运算符实现大小比较。 - C++自定义类可以包含任意类型的成员。
5、有关下面C++代码的说法,错误的是( )。
#include<iostream>
#include<cstring>
using namespace std;
class MyStr{
string data;
public:
MyStr(string _data): data(_data){}
};
int main(){
MyStr st("ABC");
cout << st << endl;
return 0;
}
{{ select(5) }}
- 代码
cout << st << endl;不会报错,将正常输出ABC。 - 第 6 行代码的
data是MyStr类的成员变量。 - 代码
MyStr st("ABC");不会报错,将执行构造函数。 - 以上说法均没有错误。
6、下列关于命名空间的说法错误的是( )。 {{ select(6) }}
- 命名空间可以嵌套, 例如
namespace A { namespace B { int i;}}。 - 命名空间只可以在全局定义。
- 命名空间中可以存放变量和函数。
- 如果程序中使用了
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;
}
{{ select(7) }}
- 这段代码不能正常运行。
ManyData类可用于构造队列(Queue)数据结构。- 在上面代码环境,代码
cout<< myData.__data[0] << endl;可以增加到代码main函数末尾(return 0;之前),且不会导致报错。 - 可以为
ManyData类的push()、pop()函数增加异常处理代码,否则在使用ManyData类时可能导致运行时错误或逻辑错误(不一定局限于上述代码中的main函数)。
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;
}
{{ select(8) }}
MoreData类可用于构造队列(Queue)数据结构。- 代码第29行,连续
push()的用法将导致编译错误。 __data是MoreData类的私有成员,只能在类内访问。- 以上说法均没有错误。
9、某内容仅会出现 ABCDEFG ,其对应的出现概率为0.40、0.30、0.15、0.05、0.04、0.03、0.03,如下图所示。按照哈夫曼编码规则,假设 B 的编码为 11 ,则 D 的编码为( )。

{{ select(9) }}
10010100111011110001
10、下面有关格雷码的说法,错误的是( )。 {{ select(10) }}
- 在格雷码中,任意两个相邻的代码只有一位二进制数不同。
- 格雷码是一种唯一性编码。
- 在格雷码中,最大数和最小数只有一位二进制数不同。
- 格雷码是一种可靠性编码。
11、有关下图的二叉树,说法正确的是( )。

{{ select(11) }}
- 既是完全二叉树也是满二叉树。
- 既是二叉搜索树也是平衡二叉树。
- 非平衡二叉树。
- 以上说法都不正确。
12、NNN个节点的二叉搜索树,其查找的平均时间复杂度为( )。 {{ select(12) }}
- O(1)O(1)O(1)
- O(N)O(N)O(N)
- O(logN)O(logN)O(logN)
- O(N2)O(N^2)O(N2)
13、青蛙每次能跳1或2步。下面是青蛙跳到第 N 步台阶C++实现代码。该段代码采用的算法是( )。
void jumpFrog(int N){
if(N <= 3)
return N;
return jumpFrog(N - 1) + jumpFrog(N - 2);
}
{{ select(13) }}
- 递推算法
- 贪心算法
- 动态规划算法
- 分治算法
14、NNN个节点的双向循环链,在其中查找某个节点的平均时间复杂度是( )。 {{ select(14) }}
- O(1)O(1)O(1)
- O(N)O(N)O(N)
- O(logN)O(logN)O(logN)
- O(N2)O(N^2)O(N2)
15、关于C++语言,以下说法不正确的是( )。 {{ select(15) }}
- 若对象被定义为常量,则它只能调用以
const修饰的成员函数。 - 所有的常量静态变量都只能在类外进行初始化。
- 若类
A的对象a是类B的静态成员变量,则a在main()函数调用之前应被初始化。 - 静态全局对象、常量全局对象都是在
main函数调用之前完成初始化,执行完main函数后被析构。
二、判断题(每题 2 分,共 20 分)
1、TCP/IP的传输层的两个不同的协议分别是UDP和TCP。 {{ select(16) }}
- 对
- 错
2、5G网络中,5G中的G表示Gigabytes/s,其中 1 GB = 1024 MB。 {{ select(17) }}
- 对
- 错
3、在面向对象中,类是对象的实例。 {{ select(18) }}
- 对
- 错
4、在C++类的定义中,使用 static 修饰符定义的静态成员被该类的所有对象共享。 {{ select(19) }}
- 对
- 错
5、在C++类的定义中,可以定义初始化函数或运算符函数等。 {{ select(20) }}
- 对
- 错
6、DFS 是深度优先算法的英文简写。 {{ select(21) }}
- 对
- 错
7、哈夫曼编码是一种有损压缩算法。 {{ select(22) }}
- 对
- 错
8、有些算法或数据结构在C/C++语言中使用指针实现,一个典型的例子就是链表。因此,链表这一数据结构在C/C++语言中只能使用指针来实现。 {{ select(23) }}
- 对
- 错
9、如果节点数为 NNN ,广度搜索算法的最差时间复杂度为 O(N)O(N)O(N) 。 {{ select(24) }}
- 对
- 错
10、二叉搜索树的左右子树也是二叉搜索树。 {{ select(25) }}
- 对
- 错