信奥刷题站
GESP 认证 7级2025-12

2025年12月 GESP C++ 7级

题量
27 题
客观题
25 题
建议时长
60 分钟
卷面总分
100 分

2025年12月 GESP C++ 7级认证考试真题(含编程操作题部分)

开始整卷模拟计时作答 · 交卷即时判分 · 错题自动进错题本(需登录)2 道编程大题:在线只判客观题,编程题请自行前往洛谷等 OJ 提交验证

// questions

题目预览

1
单选题2

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

A

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

B

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

C

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

D

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

2
单选题2

已知三个序列:s1={3,1,8,2,5,6,7,4}s1 = \{3, 1, 8, 2, 5, 6, 7, 4\}s1={3,1,8,2,5,6,7,4}s2={1,5,1,8,6,4,7,5,6}s2 = \{1, 5, 1, 8, 6, 4, 7, 5, 6\}s2={1,5,1,8,6,4,7,5,6}s3={1,8,3,5,7,6,2,4}s3 = \{1, 8, 3, 5, 7, 6, 2, 4\}s3={1,8,3,5,7,6,2,4}。以下哪个序列是它们的最长公共子序列( )。

A

{1,8,5,6}\{1, 8, 5, 6\}{1,8,5,6}

B

{1,5,6,7}\{1, 5, 6, 7\}{1,5,6,7}

C

{1,8,6}\{1, 8, 6\}{1,8,6}

D

{1,5,7,4}\{1, 5, 7, 4\}{1,5,7,4}

3
单选题2

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

A

000

B

111

C

222

D

333

4
单选题2

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

A

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

B

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

C

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

D

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

5
单选题2

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

A

313131

B

323232

C

636363

D

646464

6
单选题2

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

A

DDD EEE BBB FFF HHH JJJ III GGG CCC AAA 是它的后序遍历序列。

B

AAA BBB CCC DDD EEE FFF GGG HHH III JJJ 是它的广度优先遍历序列。

C

AAA BBB DDD EEE CCC FFF GGG HHH III JJJ 是它的先序遍历序列。

D

DDD BBB EEE AAA FFF CCC HHH GGG JJJ III 是它的中序遍历序列。

7
单选题2

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

#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

222

B

333

C

444

D

555

8
单选题2

下面程序中,函数 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
B
C
D
9
单选题2

555 个字符,它们出现的次数分别为 222 次、222 次、333 次、333 次、555 次。现在要用哈夫曼编码的方式来为这些字符进行编码,最小加权路径长度 WPL(每个字符的出现次数 ×\times× 它的编码长度,再把每个字符结果加起来)的值为( )。

A

303030

B

343434

C

434343

D

474747

10
单选题2

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

#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

101010

B

161616

C

262626

D

303030

11
单选题2

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

A

999

B

121212

C

181818

D

363636

12
单选题2

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

A

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

B

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

C

若二叉树有 nnn 个结点,根节点高度为 hhh,则其高度满足: h≤nh \leq nhn

D

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

13
单选题2

假设一个算法时间复杂度的递推式是 T(n)=2T(n/2)+nT(n) = 2T(n/2) + nT(n)=2T(n/2)+nnnn 为正整数),和 T(1)=1T(1) = 1T(1)=1,那么这个算法的时间复杂度是( )。

A
B
C
D
14
单选题2

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

A

111, 555, 666, 333, 222, 888, 999, 444, 777

B

111, 555, 888, 999, 777, 444, 666, 333, 222

C

333, 222, 111, 444, 777, 666, 999, 555, 888

D

222, 555, 666, 333, 888, 777, 999, 444, 111

15
单选题2

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

A

333

B

444

C

555

D

666

16
判断题2

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

17
判断题2

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

18
判断题2

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

19
判断题2

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

20
判断题2

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

21
判断题2

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

22
判断题2

使用邻接矩阵存储一个有 nnn 个顶点、 mmm 条边的图,对该图进行一次完整的 BFS 遍历,时间复杂度为 O(n2)O(n^2)O(n2)

23
判断题2

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

24
判断题2

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

25
判断题2

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

GESP 编程操作题
26
编程题25

试题名称:城市规划

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

A 国有 nnn 座城市,城市之间由 mmm 条双向道路连接,任意一座城市均可经过若干条双向道路到达另一座城市。城市依次以 1,2,…,n1,2,\ldots,n1,2,,n 编号。第 iii1≤i≤m1\le i\le m1im)条双向道路连接城市 uiu_iui 与城市 viv_ivi

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

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

输入格式

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

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

输出格式

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

样例输入 #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%40\%40% 的测试点,保证 1≤n≤3001\le n\le 3001n300

对于所有测试点,保证 1≤n≤20001\le n\le 20001n20001≤m≤20001\le m\le 20001m20001≤ui,vi≤n1\le u_i,v_i\le n1ui,vin

本题为编程大题:请复制题面到洛谷 / GESP OJ 等平台编写并提交代码(本站不判分)
27
编程题25

试题名称:学习小组

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

班主任计划将班级里的 nnn 名同学划分为若干个学习小组,每名同学都需要分入某一个学习小组中。班级里的同学依次以 1,2,…,n1,2,\ldots,n1,2,,n 编号,第 iii 名同学有其发言积极度 cic_ici

观察发现,如果一个学习小组中恰好包含编号为 p1,p2,…,pkp_1,p_2,\ldots,p_kp1,p2,,pkkkk 名同学,则该学习小组的基础讨论积极度为 aka_kak,综合讨论积极度为 ak+max⁡{cp1,cp2,…,cpk}−min⁡{cp1,cp2,…,cpk}a_k+\max\{c_{p_1},c_{p_2},\ldots,c_{p_k}\}−\min\{c_{p_1},c_{p_2},\ldots,c_{p_k}\}ak+max{cp1,cp2,,cpk}min{cp1,cp2,,cpk},也即基础讨论积极度加上小组内同学的最大发言积极度与最小发言积极度之差。

给定基础讨论积极度 a1,a2,…,ana_1,a_2,\ldots,a_na1,a2,,an,请你计算将这 nnn 名同学划分为学习小组的所有可能方案中,综合讨论积极度之和的最大值。

输入格式

第一行,一个正整数 nnn,表示班级人数。

第二行,nnn 个非负整数 c1,c2,…,cnc_1,c_2,\ldots,c_nc1,c2,,cn,表示每位同学的发言积极度。

第三行,nnn 个非负整数 a1,a2,…,ana_1,a_2,\ldots,a_na1,a2,,an,表示不同人数学习小组的基础讨论积极度。

输出格式

输出一行,一个整数,表示所有划分方案中,学习小组综合讨论积极度之和的最大值。

样例输入 #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

说明/提示

对于 40%40\%40% 的测试点,保证 ci=0c_i=0ci=0

对于所有测试点,保证 1≤n≤3001\le n\le 3001n3000≤ci≤1040\le c_i\le 10^40ci1040≤ai≤1040\le a_i\le 10^40ai104

本题为编程大题:请复制题面到洛谷 / GESP OJ 等平台编写并提交代码(本站不判分)