CCF GESP 2026年9月认证 C++ 7级

所有 GESP 真题,手机上也能刷 · 自动判分 · 错题自动进错题本 扫码去刷
一 单选题
共 15 道 每题 2 分 共计 30 分
第 1 题

下列 C++ 代码的输出结果是( )。

#include <iostream>
using namespace std;
int main() {
    int a = 5, b = 3;
    cout << (a & b) + (a | b) << endl;
    return 0;
}
A

6

B

7

C

8

D

9

第 2 题
使用 cmath 或 math.h 中的数学库函数,下列说法中正确的是( )。
A
pow(2, 3) 的返回值类型为 int
B
sin(30) 的参数 $30$ 表示 $30$ 度
C
sqrt(4) 的返回值类型为 int
D
log(1) 的返回值为 0.0 ,且类型为 double
第 3 题
有 $4$ 个字符,出现次数分别为 $1$、$2$、$3$、$4$。构造哈夫曼树后,出现次数为 $1$ 的字符的哈夫曼编码长度为( )。
A
$1$
B
$2$
C
$3$
D
$4$
第 4 题
从 $4×5$ 个点连接成的网格的左上角走到右下角,每次只能向右或向下移动,不同的路径共有( )条。
A
$20$
B
$35$
C
$70$
D
$126$
第 5 题
在含有 $n$ 个结点的二叉排序树中查找一个元素,平均时间复杂度和最坏时间复杂度分别为( )。
A
$O(log n)$、$O(n)$
B
$O(n)$、$O(log n)$
C
$O(log n)$、$O(log n)$
D
$O(1)$、$O(n)$
第 6 题
有 $4$ 堆石子,数量分别为 $1$、$2$、$3$、$4$。每次可以合并相邻两堆,合并代价为两堆石子数之和。将所有石子合并成一堆的最小总代价为( )。
A
$17$
B
$19$
C
$20$
D
$23$
第 7 题
在无权图中,使用 BFS 从起点开始遍历,并在访问由结点 u 扩展的相邻结点 v 时记录 dist[v] =dist[u] + 1,且起点的 dist 为 0,则最终 dist[v] 表示的是( )。
A
起点到结点 v 的最少边数
B
结点 v 的度数
C
从起点到结点 v 的路径上经过的最大边权
D
包含结点 v 的连通块大小
第 8 题
在二维网格上实现泛洪填充时,为了防止递归层数过深,最适合的非递归实现方式是( )。
A
使用哈希表记录每个格子被访问的次数
B
使用快速排序预处理网格
C
使用二分查找定位边界
D
使用队列实现 BFS 或使用显式栈模拟 DFS
第 9 题
关于哈希表,下列说法正确的是( )。
A
只要哈希函数选择合适,就可以完全避免冲突
B
在链地址法中,查找一个元素的时间复杂度一定为 $O(1)$
C
开放定址法发生冲突后,会在表内寻找下一个可用位置
D
哈希表的查找速度与表中元素个数无关
第 10 题

下列 C++ 代码的输出结果是( )。

#include <iostream>
using namespace std;

void inc(int &x) {
    x++;
}
int main() {
    int a = 3;
    inc(a);
    cout << a;
    return 0;
}
A

3

B

4

C

5

D

编译错误

第 11 题
用动态规划求两个序列 $s₁$ 和 $s₂$ 的最长公共子序列长度,若 dp[i][j] 表示 $s₁$ 前 $i$ 个元素与 $s₂$ 前 $j$ 个元素的 LCS 长度。当 $s₁[i-1]=s₂[j-1]$ 时,正确的状态转移是( )。
A
dp[i][j] = dp[i - 1][j - 1] + 1
B
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])
C
dp[i][j] = dp[i - 1][j] + 1
D
dp[i][j] = dp[i][j - 1]
第 12 题

下列代码是一维数组优化 0/1 背包的核心片段,执行后 dp[8] 的输出结果是( )。

#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    int w = 3, v = 5, W = 8;
    int dp[9] = {0};
    for (int c = W; c >= w; c--)
        dp[c] = max(dp[c], dp[c - w] + v);
    cout << dp[8] << endl;
    return 0;
}
A

0

B

1

C

3

D

5

第 13 题
若要求排序后相等元素的相对顺序保持不变,下列排序算法中最不适宜使用的是( )。
A
冒泡排序
B
插入排序
C
归并排序
D
快速排序
第 14 题

下列代码片段的时间复杂度为( )。

long long s = 0;
for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j += i)
        s += i + j;
A

$O(n)$

B

$O(nlog n)$

C

$O(n^2)$

D

$O(n\sqrt{n})$

第 15 题
已知 int a[6] = {1, 3, 5, 7, 9, 11}; int *p = a + 1;,则表达式 *(p + 3) 的值是( )。
A
5
B
7
C
9
D
11
单选题部分已到底了。

小程序开心码未来

微信扫码,随时随地练 GESP 真题

  • 手机刷题 · 自动判分,错题自动归档到错题本
  • 绑定网站账号后,查看答案解析等权限自动同步
开心码未来小程序二维码(微信扫一扫) 微信扫一扫