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

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

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

#include <iostream>
#include <cmath>
using namespace std;
int main() {
    cout << (int)(sqrt(50) + log2(8));
    return 0;
}
A

9

B

10

C

11

D

12

第 2 题

下列关于 <cmath> 或 <math.h> 中的数学库函数的说法,正确的是( )。

A

sqrt(49) 的返回值可以参与浮点运算。

B

log2(32) 的返回值类型为 int。

C

pow(2, 5) 的返回值类型一定为 int。

D

sin(90) 的参数 $90$ 表示 $90$ 度。

第 3 题

下列关于 C++ 函数参数传递的说法,正确的是( )。

A

函数形参一定和实参使用同一块内存。

B

值传递时,在函数内修改形参一定会修改实参。

C

引用形参绑定到实参后,在函数内修改引用形参通常会影响实参。

D

指针形参不能用于修改实参指向的数据。

第 4 题

有 $5$ 个字符,它们出现的次数分别为 $3$、$4$、$7$、$8$、$9$。使用哈夫曼编码时,最小的带权路径长度 WPL 为( )。

A

62

B

64

C

67

D

69

第 5 题

已知网格上每个网格点有一个数字,$a[i][j]$ 表示第 $i$ 行第 $j$ 列处网格点上的数字。若 $dp[i][j]$ 表示从网格左上角(第 $0$ 行第 $0$ 列)走到第 $i$ 行第 $j$ 列时能取得的最大数字和,且每次只能向右或向下移动。对于 $i > 0$ 且 $j > 0$ 的位置,正确的状态转移代码为( )。

A

dp[i][j] = a[i][j] + min(dp[i - 1][j], dp[i][j - 1])

B

dp[i][j] = max(dp[i - 1][j - 1], dp[i][j])

C

dp[i][j] = a[i][j] + max(dp[i - 1][j], dp[i][j - 1])

D

dp[i][j] = a[i][j] + dp[i - 1][j - 1]

第 6 题

已知 f[0] = 0,f[1] = 2,并且对 i >= 2 有 f[i] = max(f[i - 1], f[i - 2] + a[i])。若 a[1..5] = {2, 7, 9, 3, 1},则 f[5] 的值为( )。

A

10

B

11

C

12

D

22

第 7 题

下面代码是一维数组优化 $0/1$ 背包的核心片段,其中 $w[i]$ 表示第 $i$ 件物品的重量,$v[i]$ 表示第 $i$ 件物品的价值。横线处应填入( )。

for (int i = 1; i <= n; i++) {
    for (int c = W; c >= w[i]; c--) {
        __________;
    }
}
A

dp[c] = max(dp[c], dp[c + w[i]] + v[i])

B

dp[c] = min(dp[c], dp[c - w[i]] + v[i])

C

dp[c] = dp[c - w[i]] + v[i]

D

dp[c] = max(dp[c], dp[c - w[i]] + v[i])

第 8 题

下面程序片段主要体现的算法思想是( )。

void dfs(int x, int y) {
    vis[x][y] = true;
    for (int k = 0; k < 4; k++) {
        int nx = x + dx[k], ny = y + dy[k];
        if (inside(nx, ny) && a[nx][ny] == 1 && !vis[nx][ny])
            dfs(nx, ny);
    }
}
A

泛洪算法

B

二分查找

C

贪心算法

D

归并排序

第 9 题

下列关于排序稳定性的说法,正确的是( )。

A

冒泡排序在只交换相邻逆序元素时是稳定排序

B

选择排序一定是稳定排序

C

快速排序一定是稳定排序

D

稳定排序一定会改变相等元素的相对顺序

第 10 题

无向图的边为 $(1, 2)$,$(1, 3)$,$(2, 4)$,$(3, 4)$,$(4, 5)$。从顶点 $1$ 开始进行 BFS,每轮根据出队顶点,将与其相邻顶点按编号从小到大入队,则顶点 $4$ 第一次入队时,队列的状态为( )。

A

$1, 2, 3, 4$

B

$2, 3, 4$

C

$3, 4$

D

$3, 4, 5$

第 11 题

一个长度为 11、下标为 0 到 10 的哈希表采用线性探测法处理冲突,哈希函数为 h(x) = x % 11。依次插入 22、33、4、15、26,则 26 最终存放在下标( )。

A

0

B

4

C

5

D

6

第 12 题

关于哈希表处理冲突的方法,下列说法正确的是( )。

A

线性探测法发生冲突后,只能放弃插入该元素。

B

链地址法可以把哈希到同一位置的多个元素组织在同一个桶中。

C

只要哈希表长度是素数,就一定不会发生冲突。

D

开放定址法查找元素时不需要考虑冲突位置。

第 13 题

某算法需要枚举 $n$ 个对象;对每个对象,还需要进行一次二分查找。若二分查找的对象规模也是 $n$,则该算法的时间复杂度通常为( )。

A

$O(n)$

B

$O(nlog n)$

C

$O(n^2)$

D

$O(log n)$

第 14 题

在升序数组中用二分查找第一个大于等于 $x$ 的位置。若当前中点 $mid$ 满足 $a[mid] < x$,下一步应( )。

A

令闭区间右边界变为 $mid - 1$

B

令闭区间左边界变为 $mid + 1$

C

立即返回 $mid$

D

交换 $a[mid]$ 与 $x$

第 15 题

在如下网格中,# 表示不能经过的格子,. 表示可以经过的格子。从左上角走到右下角,每次只能向右或向下移动,不同路径共有( )条。

. . . . .
. # . # .
. . . . .
# . # . .
. . . . .
A

5

B

6

C

7

D

8

单选题部分已到底了。

小程序开心码未来

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

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