欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

2023年 9月 GESP C++ 六级真题解析 选择题

时间:2024-05-05 17:24 作者:admin 点击:
一、单选题(每题 2 分,共 30 分) 1、近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流⾏,其中包括⽐较常用的手写板,那么它属于哪类设备?()。 A. 输⼊ B

一、单选题(每题 2 分,共 30 分)
1、近年来,线上授课变得普遍,很多有助于改善教学效果的设备也逐渐流⾏,其中包括⽐较常用的手写板,那么它属于哪类设备?()。

A. 输⼊
B. 输出
C. 控制
D. 记录
【答案】A
【考纲知识点】 计算机基础
【解析】本题属于考察计算机基础知识。手写板是输入设备。

2、如果 a 和 b 均为 int 类型的变量,且 b 的值不为0 ,那么下列能正确判断“ a 是 b 的 3 倍”的表达式是( )。
A. (a >> 3 == b)
B. (a - b) % 3 == 0
C. (a / b == 3)
D. (a == 3 * b)
【答案】D
【考纲知识点】 运算表达式和位运算
【解析】本题属于考察运算表达式和位运算知识。b 不等于0,a 是b 的3 倍。A选项中,a 右移 3 位,相当于除以 8;B 是取余运算;如果a=7,b=2,a/b 的结果也等于 3,因为是整型,C 选项也不正确;选 D。

3、以下不属于面向对象程序设计语言的是( )。
A. C++
B. Python
C. Java
D. C
【答案】D
【考纲知识点】 计算机语言
【解析】本题属于考察计算机语言知识。C 是面向过程的设计语言。

4、下⾯有关 C++类定义的说法,错误的是( )。
A. C++类实例化时,会执行构造函数。
B. C++自定义类可以通过定义构造函数实现自动类型转换。
C. C++自定义类可以通过重载 > 、 < 等运算符实现⼤⼩比较。
D. C++自定义类可以包含任意类型的成员。
【答案】D
【考纲知识点】 类的定义
【解析】本题属于考察 C++类的知识。类中的数据成员的类型可以包含整型、浮点型、字符型、数组、指针和引用等,但不能是抽象类、自身等,故选D。A、B、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. 代码 cout << st << endl; 不会报错,将正常输出 ABC 。
B. 第 6 ⾏代码的 data 是 MyStr 类的成员变量。
C. 代码 MyStr st("ABC"); 不会报错,将执⾏构造函数。
D. 以上说法均没有错误。
【答案】A
【考纲知识点】 类与对象
【解析】本题属于考察 C++类的知识。属于应该输出对象的成员,不能直接输出对象名。

6、下列关于命名空间的说法错误的是( )。
A. 命名空间可以嵌套, 例如 namespace A { namespace B { int i;}} 。
B. 命名空间只可以在全局定义。
C. 命名空间中可以存放变量和函数。
D. 如果程序中使⽤了 using 命令同时引用了多个命名空间,并且命名空间中存在相同的函数,会出现程序运行错误。
【答案】D
【考纲知识点】 C++类的知识
【解析】本题属于考察 C++类的知识。不同命名空间里可以存在相同函数。

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;
}


A.这段代码不能正常运行。
B. ManyData 类可⽤于构造队列(Queue)数据结构。
C.在上⾯代码环境,代码 cout<< myData.__data[0] << endl; 可以增加到代码main 函数末尾( return 0; 之前),且不会导致报错。
D.可以为 ManyData 类的 push() 、 pop() 函数增加异常处理代码,否则在使用ManyData 类时可能导致运⾏时错误或逻辑错误(不⼀定局限于上述代码中的main 函数)。
【答案】D
【考纲知识点】 C++类的知识
【解析】本题属于考察 C++类的知识。Push 和 pop 函数没有对数组范围做是否越界判断,因此需要增加异常处理。

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;
}


A. MoreData 类可⽤于构造队列(Queue)数据结构。
B. 代码第 29⾏,连续 push() 的⽤法将导致编译错误。
C. __data 是 MoreData 类的私有成员,只能在类内访问。
D. 以上说法均没有错误。
【答案】B
【考纲知识点】 C++类的知识
【解析】本题属于考察 C++类的知识。对象指向的数组大小是100,程序中push的元素小于 100,因此不会错误。

9、某内容仅会出现 ABCDEFG ,其对应的出现概率为0.40、0.30、0.15、0.05、0.04、0.03、0.03,如下图所⽰。按照哈夫曼编码规则,假设B 的编码为11,则 D 的编码为( )。


A. 10010
B. 10011
C. 10111
D. 10001
【答案】B
【考纲知识点】 数据结构中的哈夫曼树
【解析】本题考察的知识点是数据结构中的哈夫曼,哈夫曼树左边的边权是用0来表示,右边的边权值是 1,通常是左 0 右 1。走到 D 是右左左右右,也就是10011,因此选项是 B。

10、下⾯有关格雷码的说法,错误的是( )。
A. 在格雷码中,任意两个相邻的代码只有⼀位二进制数不同。
B. 格雷码是⼀种唯⼀性编码。
C. 在格雷码中,最⼤数和最⼩数只有⼀位二进制数不同。
D. 格雷码是⼀种可靠性编码。
【答案】B
【考纲知识点】 计算机编码的知识
【解析】本题属于考察计算机编码的知识。格雷码的编码不是唯一的编码。任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码。所以不是唯一性编码。

11、有关下图的二叉树,说法正确的是( )。


A. 既是完全二叉树也是满二叉树。
B. 既是二叉搜索树也是平衡二叉树。
C. ⾮平衡二叉树。
D. 以上说法都不正确。
【答案】B
【考纲知识点】 数据结构中树的知识
【解析】本题属于考察数据结构中树的知识。是二叉树,左子树都小于根节点,右子树都大于根节点,是二叉搜索树。左右子树的层差小于等于1,是平衡二叉树。

12、个节点的二叉搜索树,其查找的平均时间复杂度为()。

A. 0(1)
B. 0(N)
C. 0(log N)
D. 0(N2)
【答案】C
【考纲知识点】 数据结构中树的知识
【解析】本题属于考察数据结构中树的知识。二叉搜索树每次查找,数据规模平均会减半。

13、青蛙每次能跳 1 或 2 步。下面是青蛙跳到第 N 步台阶C++实现代码。该段代码采用的算法是( )。

int jumpFrog( int N ){
	if( N <= 3)
		return N;
	return jumpFrog( N - 1 ) + jumpFrog( N - 2 );
}

A. 递推算法
B. 贪⼼算法
C. 动态规划算法
D. 分治算法

【答案】C
【考纲知识点】
【解析】本题属于考察算法的知识。可以通过动态规划来完成求解完成跳台阶方法,故参考答案是 C。

14、N 个节点的双向循环链,在其中查找某个节点的平均时间复杂度是()。

A. 0(1)
B. 0(N)
C. 0(log N)
D. 0(N2)
【答案】B
【考纲知识点】 数据结构中链表的知识
【解析】本题属于考察数据结构中链表的知识。链表查找数据需要遍历整个链表,平均时间复杂度是 B 选项。

15、关于 C++语⾔,以下说法不正确的是( )。
A. 若对象被定义为常量,则它只能调⽤以 const 修饰的成员函数。
B. 所有的常量静态变量都只能在类外进⾏初始化。
C. 若类 A 的对象 a 是类 B 的静态成员变量,则 a 在main() 函数调⽤之前应被初始化。
D. 静态全局对象、常量全局对象都是在 main 函数调用之前完成初始化,执⾏完 main 函数后被析构。
【答案】D,B
【考纲知识点】 C++中类的知识
【解析】本题属于考察 C++中类的知识。主要考查常量静态变量和全局变量的初始化。A 和 C 是基本要求。D 选项关注动态初始化时机,但基本类型的全局常量可以在编译时完成初始化设定,说法不准确,是可选答案。但B 的说法可以有如下特例。
class A{
const static int b=1;
};
考虑到考试情况,D 和 B 都算对。

(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%