试卷总分:100分


选择题 15题 30分

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15


判断题 10题 20分

16 17 18 19 20 21 22 23 24 25


编程题 2题 50分

26 27

E1036 CCF-GESP编程能力等级认证-C++ -202512 CCF-GESP C++七级真题-考试

选择题 共15道

01 下面关于C++中形参、实参和定义域的说法中,正确的一项是( )。 2分
登录后查看选项
02 已知三个序列: s1 = {3, 1, 8, 2, 5, 6, 7, 4} , s2 = {1, 5, 1, 8, 6, 4, 7, 5, 6} , s3 = {1, 8, 3, 5, 7, 6, 2, 4} 。以下哪个序列是它们的最长公共子序列( )。 2分
登录后查看选项
03 现有一个地址区间为 0~10 的哈希表,当出现冲突情况,会往后找第一个空的地址存储(到 10 冲突了就从 0 开始往后),现在要依次存储 (1, 3, 5, 7, 9),哈希函数为 h(x) = (x2+x) mod 11。其中 9 存储在哈希表哪个地址中( )。 2分
登录后查看选项
04 在0/1背包问题中,给定一组物品,每个物品有一个重量和价值,背包的容量有限。假设背包的最大容量为 W,物品的数量为 n,其中第 i 个物品的重量为 w[i],价值为 v[i]。以下关于0/1背包问题的描述,正确的是( )。 2分
登录后查看选项
05 一棵深度为6(根节点深度为1)的完全二叉树,节点总数最少有( )。 2分
登录后查看选项
06

对于如下二叉树,下面关于访问的顺序说法错误的是( )。

2分
登录后查看选项
07

下面程序的运行结果为( )。

#include <iostream>
int query(int n, int *a, int x) {
	int l = 0, r = n;
	while (l < r) {
		int mid = l + (r - l) / 2;
		if (a[mid] >= x) r = mid;
		else l = mid + 1;
	}
	if (l == n) return -1;
	return l;
}
int main() {
	int n = 10;
	int x = 3;
	int num[] = {1, 2, 2, 3, 3, 4, 5, 5, 6, 7};
	std::cout << query(n, num, x) << "\n";
	return 0;
}
2分
登录后查看选项
08

下面程序中,函数 query 的时间复杂度是( )。

#include <iostream>
int query(int n, int *a, int x) {
	int l = 0, r = n;
	while (l < r) {
		int mid = l + (r - l) / 2;
		if (a[mid] >= x) r = mid;
		else l = mid + 1;
	}
	if (l == n) return -1;
	return l;
}
int main() {
	int n = 10;
	int x = 3;
	int num[] = {1, 2, 2, 3, 3, 4, 5, 5, 6, 7};
	std::cout << query(n, num, x) << "\n";
	return 0;
}
2分
登录后查看选项
09 有5个字符,它们出现的次数分别为2次、2次、3次、3次、5次。现在要用哈夫曼编码的方式来为这些字符进行编码,最小加权路径长度WPL(每个字符的出现次数 它的编码长度,再把每个字符结果加起来)的值为( )。 2分
登录后查看选项
10

下面程序的运行结果为( )。

#include <iostream>
using namespace std;
int f(int n) {
	if (n <= 2) return n * 2;
	return f(n - 1) + f(n - 2);
}
int main() {
	cout << f(5) << endl;
	return 0;
}
2分
登录后查看选项
11 一个简单无向图 G 有36条边,且每个顶点的度数都为4,则图 G 的顶点个数为( )。 2分
登录后查看选项
12 下面关于二叉树的说法正确的是( )。 2分
登录后查看选项
13 假设一个算法时间复杂度的递推式是 T(n) = 8T(n/4) + n sqrt(n)(n为正整数),和 T(0) = 1,那么这个算法的时间复杂度是( )。 2分
登录后查看选项
14

下面哪一个可能是下图的深度优先遍历序列( )。

2分
登录后查看选项
15

下面这个有向图的强连通分量的个数是( )。

2分
登录后查看选项

判断题 共10道

16 C++语言中,表达式 3 ^ 2 的结果类型为 int ,值为 9 。 2分
登录后查看选项
17 使用 cmath 头文件中的正弦函数,表达式 sin(90) 的结果类型为 double ,值约为 1.0 。 2分
登录后查看选项
18 使用 strcmp("10", "9") 比较两个字符串,返回值大于0,说明 "10" 比 "9" 大。 2分
登录后查看选项
19 选择排序是一种不稳定的排序算法,而冒泡排序是一种稳定的排序算法。 2分
登录后查看选项
20 求两个长度为n序列的最长公共子序列(LCS)长度时,可以使用滚动数组将空间复杂度从O(n2)优化到O(n)。 2分
登录后查看选项
21 在无向图中,所有顶点的度数之和等于边数的两倍。 2分
登录后查看选项
22 使用邻接矩阵存储一个有V个顶点、E条边的图,对该图进行一次完整的BFS遍历,时间复杂度为O(V+E)。 2分
登录后查看选项
23 在图像处理或游戏开发中,泛洪(flood fill)算法既可以用BFS实现,也可以用DFS实现。 2分
登录后查看选项
24 使用链地址法处理冲突的哈希表,当所有元素都映射到同一个槽位时,查找操作的最坏时间复杂度为O(n),其中n为元素个数。 2分
登录后查看选项
25 一个包含V个顶点的连通无向图,其任何一棵生成树都恰好包含V-1条边。 2分
登录后查看选项

编程题 共2道

26

25分
登录后作答
27

25分
登录后作答