万卷网> GESP认证 >C++ > 2025年12月CCF—GESP(C++七级)编程能力等级认证试卷

2025年12月CCF—GESP(C++七级)编程能力等级认证试卷
七级 2025 2026-07-27 15:37:44 143

一、单选题

1.

下面关于二叉树的说法正确的是( )。

A.

任意二叉树的中序遍历与后序遍历必定不相同。

B.

对任意二叉树,若已知先序遍历与后序遍历,则该二叉树唯一确定。

C.

若二叉树有 个结点,根节点高度为 ,则其高度满足: [log2(n+1)]<=h<=n。

D.

在二叉树的先序遍历中,根后紧跟的结点一定是根的左孩子。

2.

假设一个算法时间复杂度的递推式是 ,和T(0) = 1 ,那么这个算法的时间复杂度是(  )。

A.

B.

C.

O(n2)

D.

O(n2 log n)

3.

一棵深度为6(根节点深度为1)的完全二叉树,节点总数最少有( )。

A.

31

B.

32

C.

63

D.

64

4.

下面程序中,函数 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; 
}
A.

O(1)

B.

O(log n)

C.

O(n)

D.

O(n log n)

5.

下面关于C++中形参、实参和定义域的说法中,正确的一项是( )。

A.

形参是函数定义时所指定的变量,它只在函数内部有效。

B.

在函数内部,可以修改传入的形参的值,即使该形参是一个常量引用

C.

实参和形参的类型必须完全一致,否则会导致编译错误。

D.

使用指针作为形参时,形参是指向实参的地址,因此对该指针赋值会影响实参。

6.

现有一个地址区间为0-10的哈希表,当出现冲突情况,会往后找第一个空的地址存储(到10冲突了就从开始往后),现在要依次存储(1,3,5,7,9),哈希函数为h(x)=(x^2+x)mod11。。其中 存储在哈希表哪个地址中 ( )。

A.

1

B.

2

C.

3

D.

4

7.

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

A.

1, 5, 6, 3, 2, 8, 9, 4, 7

B.

1, 5, 8, 9, 7, 4, 6, 3, 2

C.

3, 2, 1, 4, 7, 6, 9, 5, 8

D.

2, 5, 6, 3, 8, 7, 9, 4, 1

8.

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

A.

D E B F H J I G C A 是它的后序遍历序列。

B.

A B C D E F G H I J 是它的广度优先遍历序列。

C.

A B D E C F G H I J 是它的先序遍历序列。

D.

D B E A F C H G J I 是它的中序遍历序列。

9.

有5个字符,它们出现的次数分别为2次、2次、3次、3次、5次。现在要用哈夫曼编码的方式来为这些字符进行编码,最小加权路径长度WPL(每个字符的出现次数 它的编码长度,再把每个字符结果加起来)的值为( )。2025.12-7

A.

30

B.

34

C.

43

D.

47

10.

一个简单无向图G有36条边,且每个顶点的度数都为4,则图 的顶点个数为( )。

A.

9

B.

12

C.

18

D.

36

11.

已知三个序列: 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} 。以下哪个序列是它们的最长公共子序列( )。

A.

{1, 8, 5, 6}

B.

{1, 5, 6, 7}

C.

{1, 8, 6}

D.

{1, 5, 7, 4}

12.

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

A.

3

B.

4

C.

5

D.

6

13.

在0/1背包问题中,给定一组物品,每个物品有一个重量和价值,背包的容量有限。假设背包的最大容量为W,物品的数量为n ,其中第 个物品的重量为W[i],价值为 V[i]。以下关于0/1背包问题的描述,正确的是( )。

A.

在解决0/1背包问题时,使用贪心算法可以保证找到最优解,因为物品只能放入一次。

B.

0/1背包是P问题(多项式时间可解问题),它可以在 O(nW)的时间复杂度内解决。

C.

0/1背包问题中,动态规划解法的空间复杂度为,但可以通过滚动数组技巧将空间复杂度优化到。

D.

0/1背包问题中,每个物品只能选择一次,并且子问题之间是独立的,无法重用计算结果。

14.

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

#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;
}
A.

2

B.

3

C.

4

D.

5

15.

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

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


A.

10

B.

16

C.

26

D.

30

二、判断题

1.

选择排序是一种不稳定的排序算法,而冒泡排序是一种稳定的排序算法。2025.12-7

A.正确 B.错误
2.

C++语言中,表达式 3 ^ 2 的结果类型为 int ,值为 9 。

A.正确 B.错误
3.

使用 strcmp("10", "9") 比较两个字符串,返回值大于0,说明 "10" 比 "9" 大。

A.正确 B.错误
4.

在图像处理或游戏开发中,泛洪(flood fill)算法既可以用BFS实现,也可以用DFS实现。2025.12-7

A.正确 B.错误
5.

使用 cmath 头文件中的正弦函数,表达式 sin(90) 的结果类型为 double ,值约为 1.0 。

A.正确 B.错误
6.

在无向图中,所有顶点的度数之和等于边数的两倍。2025.12-7

A.正确 B.错误
7.

求两个长度为 序列的最长公共子序列(LCS)长度时,可以使用滚动数组将空间复杂度从优化到。

A.正确 B.错误
8.

使用邻接矩阵存储一个有 个顶点、 条边的图,对该图进行一次完整的BFS遍历,时间复杂度为。

A.正确 B.错误
9.

使用链地址法处理冲突的哈希表,当所有元素都映射到同一个槽位时,查找操作的最坏时间复杂度为O(n),其中n为元素个数。

A.正确 B.错误
10.

一个包含V个顶点的连通无向图,其任何一棵生成树都恰好包含 V-1条边。

A.正确 B.错误

三、编程题

1.

城市规划

题目描述

A 国有n座城市,城市之间由m条双向道路连接,任意一座城市均可经过若干条双向道路到达另一座城市。城市依次以1,2....,n编号。第i(1≤i≤m)条双向道路连接城市ui与城市vi。

对于城市u和城市v而言,它们之间的连通度d(u,v)定义为从城市u出发到达城市 所需经过的双向道路的最少条数。由于道路是双向的,可以知道连通度满足d(u,v)=d(v,u),特殊地有d(u,u)=0。

现在 A 国正在规划城市建设方案。城市u的建设难度为它到其它城市的最大连通度。请你求出建设难度最小的城市,如果有多个满足条件的城市,则选取其中编号最小的城市。形式化地,你需要求出使得max1≤i≤nd(u,i)最小的u,若存在多个可能的u则选取其中最小的。

输入格式

第一行,两个正整数n,m,表示 A 国的城市数量与双向道路数量。

接下来m行,每行两个整数ui,vi,表示一条连接城市ui与城市vi的双向道路。

输出格式

输出一行,一个整数,表示建设难度最小的城市编号。如果有多个满足条件的城市,则选取其中编号最小的城市。

输入样例 1

3 3
1 2
1 3
2 3

输出样例 1

1

输入样例 2

4 4
1 2
2 3
3 4
2 4

输出样例 2

2

数据范围

对于40的测试点,保证1≤n≤300 。

对于所有测试点,保证1≤n≤2000,1≤m≤2000,1≤ui,vi≤n。

2.

学习小组

时间限制:1.0 s

内存限制:512.0 MB

输入样例 1

4
2 1 3 2
1 5 6 3

输出样例 1

12

输入样例 2

8
1 3 2 4 3 5 4 6
0 2 5 6 4 3 3 4

输出样例 2

21

公众号
客服 反馈
顶部