2025年6月 GESP C++ 7级
2025年6月 GESP C++ 7级认证考试真题(含编程操作题部分)
// questions
题目预览
已知小写字母 bbb 的 ASCII 码为 989898,下列 C++ 代码的输出结果是( )。
#include <iostream>
using namespace std;
int main() {
char a = 'b' ^ 4;
cout << a;
return 0;
}
bbb
bbbbbbbbbbbb
fff
102102102
已知 aaa 为 int 类型变量,ppp 为 int * 类型变量,下列赋值语句不符合语法的是( )。
*(p + a) = *p;
*(p - a) = a;
p + a = p;
p = p + a;
下列关于 C++ 类的说法,错误的是( )。
如需要使用基类的指针释放派生类对象,基类的析构函数应声明为虚析构函数。
构造派生类对象时,只调用派生类的构造函数,不会调用基类的构造函数。
基类和派生类分别实现了同一个虚函数,派生类对象仍能够调用基类的该方法。
如果函数形参为基类指针,调用时可以传入派生类指针作为实参。
下列 C++ 代码的输出是( )。
#include <iostream>
using namespace std;
int main() {
int arr[5] = {2, 4, 6, 8, 10};
int * p = arr + 2;
cout << p[3] << endl;
return 0;
}
666
888
编译出错,无法运行。
不确定,可能发生运行时异常。
假定只有一个根节点的树的深度为 111,则一棵有 nnn 个节点的完全二叉树,则树的深度为( )。
。
不能确定。
对于如下图的二叉树,说法正确的是( )。
先序遍历是 ABDEC。
中序遍历是 BDACE。
后序遍历是 DBCEA。
广度优先遍历是 ABCDE。
图的存储和遍历算法,下面说法错误的是( )。
图的深度优先遍历须要借助队列来完成。
图的深度优先遍历和广度优先遍历对有向图和无向图都适用。
使用邻接矩阵存储一个包含 nnn 个顶点的有向图,统计其边数的时间复杂度为 O(n2)O(n^2)O(n2)。
同一个图分别使用出边邻接表和入边邻接表存储,其边结点个数相同。
一个连通的简单有向图,共有 282828 条边,则该图至少有( )个顶点。
555
666
777
888
以下哪个方案不能合理解决或缓解哈希表冲突( )。
在每个哈希表项处,使用不同的哈希函数再建立一个哈希表,管理该表项的冲突元素。
在每个哈希表项处,建立二叉排序树,管理该表项的冲突元素。
使用不同的哈希函数建立额外的哈希表,用来管理所有发生冲突的元素。
覆盖发生冲突的旧元素。
以下关于动态规划的说法中,错误的是( )。
动态规划方法通常能够列出递推公式。
动态规划方法的时间复杂度通常为状态的个数。
动态规划方法有递推和递归两种实现形式。
对很多问题,递推实现和递归实现动态规划方法的时间复杂度相当。
下面程序的输出为( )。
#include <iostream>
using namespace std;
int rec_fib[100];
int fib(int n) {
if (n <= 1)
return n;
if (rec_fib[n] == 0)
rec_fib[n] = fib(n - 1) + fib(n - 2);
return rec_fib[n];
}
int main() {
cout << fib(6) << endl;
return 0;
}
888
131313
646464
结果是随机的。
下面程序的时间复杂度为( )。
int rec_fib[MAX_N];
int fib(int n) {
if (n <= 1)
return n;
if (rec_fib[n] == 0)
rec_fib[n] = fib(n - 1) + fib(n - 2);
return rec_fib[n];
}
下面 search 函数的平均时间复杂度为( )。
int search(int n, int * p, int target) {
int low = 0, high = n;
while (low < high) {
int middle = (low + high) / 2;
if (target == p[middle]) {
return middle;
} else if (target > p[middle]) {
low = middle + 1;
} else {
high = middle;
}
}
return -1;
}
下面程序的时间复杂度为( )。
int primes[MAXP], num = 0;
bool isPrime[MAXN] = {false};
void sieve() {
for (int n = 2; n <= MAXN; n++) {
if (!isPrime[n])
primes[num++] = n;
for (int i = 0; i < num && n * primes[i] <= MAXN; i++) {
isPrime[n * primes[i]] = true;
if (n % primes[i] == 0)
break;
}
}
}
下列选项中,哪个不可能是下图的广度优先遍历序列( )。
111, 222, 444, 555, 333, 777, 666, 888, 999
111, 222, 555, 444, 333, 777, 888, 666, 999
111, 444, 555, 222, 777, 333, 888, 666, 999
111, 555, 444, 222, 777, 333, 888, 666,
C++ 语言中,表达式 9 & 12 的结果类型为 int、值为 888。
C++ 语言中,指针变量指向的内存地址不一定都能够合法访问。
对 nnn 个元素的数组进行快速排序,最差情况的时间复杂度为 O(n2)O(n^2)O(n2)。
一般情况下,long long 类型占用的字节数比 float 类型多。
使用 math.h 或 cmath 头文件中的函数,表达式 pow(10, 3) 的结果的值为 100010001000 、类型为 int。
二叉排序树的中序遍历序列一定是有序的。
无论哈希表采用何种方式解决冲突,只要管理的元素足够多,都无法避免冲突。
在 C++ 语言中,类的构造函数和析构函数均可以声明为虚函数。
动态规划方法将原问题分解为一个或多个相似的子问题,因此必须使用递归实现。
如果将城市视作顶点,公路视作边,将城际公路网络抽象为简单图,可以满足城市间的车道级导航需求。
试题名称:线图
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
给定由 nnn 个结点与 mmm 条边构成的简单无向图 GGG,结点依次以 1,2,…,n1,2,\dots,n1,2,…,n 编号。简单无向图意味着 GGG 中不包含重边与自环。GGG 的线图 L(G)L(G)L(G) 通过以下方式构建:
-
初始时线图 L(G)L(G)L(G) 为空。
-
对于无向图 GGG 中的一条边,在线图 L(G)L(G)L(G) 中加入与之对应的一个结点。
-
对于无向图 GGG 中两条不同的边 (u1,v1),(u2,v2)(u_1,v_1),(u_2,v_2)(u1,v1),(u2,v2),若存在 GGG 中的结点同时连接这两条边(即 u1,v1u_1,v_1u1,v1 之一与 u2,v2u_2,v_2u2,v2 之一相同),则在线图 L(G)L(G)L(G) 中加入一条无向边,连接 (u1,v1),(u2,v2)(u_1,v_1),(u_2,v_2)(u1,v1),(u2,v2) 在线图中对应的结点。
请你求出线图 L(G)L(G)L(G) 中所包含的无向边的数量。
输入格式
第一行,两个正整数 n,mn,mn,m,分别表示无向图 GGG 中的结点数和边数。
接下来 mmm 行,每行两个正整数 ui,viu_i,v_iui,vi,表示 GGG 中连接 ui,viu_i,v_iui,vi 的一条无向边。
输出格式
输出共一行,一个整数,表示线图 L(G)L(G)L(G) 中所包含的无向边的数量。
样例输入 #1
5 4
1 2
2 3
3 1
4 5
样例输出 #1
3
样例输入 #2
5 10
1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5
样例输出 #2
30
说明/提示
【样例解释 #1】

【数据范围】
对于 60%60\%60% 的测试点,保证 1≤n≤5001 \le n \le 5001≤n≤500,1≤m≤5001 \le m \le 5001≤m≤500。
对于所有测试点,保证 1≤n≤1051 \le n \le 10^51≤n≤105,1≤m≤1051 \le m \le 10^51≤m≤105。
试题名称:调味平衡
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
小 A 准备了 nnn 种食材用来制作料理,这些食材依次以 1,2,…,n1,2,\dots,n1,2,…,n 编号,第 iii 种食材的酸度为 aia_iai,甜度为 bib_ibi。对于每种食材,小 A 可以选择将其放入料理,或者不放入料理。料理的酸度 AAA 为放入食材的酸度之和,甜度 BBB 为放入食材的甜度之和。如果料理的酸度和甜度相等,那么料理的调味是平衡的。
过于清淡的料理并不好吃,因此小 A 想在满足料理调味平衡的前提下,合理选择食材,最大化料理的酸度与甜度之和。你能帮他求出在调味平衡的前提下,料理酸度与甜度之和的最大值吗?
输入格式
第一行,一个正整数 nnn,表示食材种类数量。
接下来 nnn 行,每行两个正整数 ai,bia_i,b_iai,bi,表示食材的酸度和甜度。
输出格式
输出共一行,一个整数,表示在调味平衡的前提下,料理酸度与甜度之和的最大值。
样例输入 #1
3
1 2
2 4
3 2
样例输出 #1
8
样例输入 #2
5
1 1
2 3
6 1
8 2
5 7
样例输出 #2
2
说明/提示
对于 40%40\%40% 的测试点,保证 1≤n≤101 \le n \le 101≤n≤10,1≤ai,bi≤101 \le a_i,b_i \le 101≤ai,bi≤10。
对于另外 20%20\%20% 的测试点,保证 1≤n≤501 \le n \le 501≤n≤50,1≤ai,bi≤101 \le a_i,b_i \le 101≤ai,bi≤10。
对于所有测试点,保证 1≤n≤1001 \le n \le 1001≤n≤100,1≤ai,bi≤5001 \le a_i,b_i \le 5001≤ai,bi≤500。