#1653. GESP-C++七级(2026-06)
GESP-C++七级(2026-06)
CCF GESP C++ 七级 (2026 年 06 月)
一、单选题(每题 2 分,共 30 分)
1. 下列 C++ 代码的输出结果是( )
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cout << (int)(sqrt(50) + log2(8));
return 0;
}
{{ select(1) }}
- 9
- 10
- 11
- 12
2. 下列关于 或 <math.h> 中的数学库函数的说法,正确的是( )
{{ select(2) }}
- sqrt(49) 的返回值可以参与浮点运算。
- log2(32) 的返回值类型为 int 。
- pow(2, 5) 的返回值类型⼀定为 int 。
- sin(90) 的参数 90 表⽰ 90 度。
3. 下列关于 C++ 函数参数传递的说法,正确的是( )
{{ select(3) }}
- 函数形参⼀定和实参使⽤同⼀块内存。
- 值传递时,在函数内修改形参⼀定会修改实参。
- 引⽤形参绑定到实参后,在函数内修改引⽤形参通常会影响实参。
- 指针形参不能⽤于修改实参指向的数据。
4. 有 个字符,它们出现的次数分别为 、 、 、 、 。使⽤哈夫曼编码时,最⼩的带权路径长度 WPL 为( )。 A. B. C. D.
/ 8
{{ select(4) }}
5. 已知⽹格上每个⽹格点有⼀个数字, a[i][j] 表⽰第 i ⾏第 j 列处⽹格点上的数字。若 dp[i][j] 表 ⽰从⽹格左上角(第 0 ⾏第 0 列)⾛到第 i ⾏第 j 列时能取得的最⼤数字和,且每次只能向右或向下移动。对 于 i > 0 且 j > 0 的位置,正确的状态转移代码为( )。
{{ select(5) }}
- dp[i][j] = a[i][j] + min(dp[i - 1][j], dp[i][j - 1])
- dp[i][j] = max(dp[i - 1][j - 1], dp[i][j])
- dp[i][j] = a[i][j] + max(dp[i - 1][j], dp[i][j - 1])
- 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. B. C. D.
{{ select(6) }}
7. 下⾯代码是⼀维数组优化 0/1 背包的核⼼⽚段,其中 w[i] 表⽰第 i 件物品的重量, v[i] 表⽰第 i 件 物品的价值。横线处应填⼊( )。
for (int i = 1; i <= n; i++) {
for (int c = W; c >= w[i]; c--) {
__________;
}
}
{{ select(7) }}
- dp[c] = max(dp[c], dp[c + w[i]] + v[i])
- dp[c] = min(dp[c], dp[c - w[i]] + v[i])
- dp[c] = dp[c - w[i]] + v[i]
- 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);
}
}
{{ select(8) }}
- 泛洪算法
- ⼆分查找
- 贪⼼算法
- 归并排序
9. 下列关于排序稳定性的说法,正确的是( )
{{ select(9) }}
- 冒泡排序在只交换相邻逆序元素时是稳定排序
- 选择排序⼀定是稳定排序
- 快速排序⼀定是稳定排序
- 稳定排序⼀定会改变相等元素的相对顺序
10. ⽆向图的边为 (1, 2), (1, 3), (2, 4), (3, 4), (4, 5) 。从顶点 1 开始进⾏ BFS,每轮根据出队 顶点,将与其相邻顶点按编号从⼩到⼤⼊队,则顶点 4 第⼀次⼊队时,队列的状态为( )。
{{ select(10) }}
- 1, 2, 3, 4
- 2, 3, 4
- 3, 4
- 3, 4, 5
11. ⼀个长度为 11 、下标为 0 到 10 的哈希表采⽤线性探测法处理冲突,哈希函数为 h(x) = x % 11 。依 次插⼊ 22 、 33 、 4 、 15 、 26 ,则 26 最终存放在下标( )。 A. B. C. D.
{{ select(11) }}
12. 关于哈希表处理冲突的⽅法,下列说法正确的是( )
{{ select(12) }}
- 线性探测法发⽣冲突后,只能放弃插⼊该元素。
- 链地址法可以把哈希到同⼀位置的多个元素组织在同⼀个桶中。
- 只要哈希表长度是素数,就⼀定不会发⽣冲突。
- 开放定址法查找元素时不需要考虑冲突位置。
13. 某算法需要枚举 个对象;对每个对象,还需要进⾏⼀次⼆分查找。若⼆分查找的对象规模也是 ,则该 算法的时间复杂度通常为( )。 A. B. C. D.
{{ select(13) }}
14. 在升序数组中⽤⼆分查找第⼀个⼤于等于 x 的位置。若当前中点 mid 满⾜ a[mid] < x ,下⼀步应( )。
{{ select(14) }}
- 令闭区间右边界变为 mid - 1
- 令闭区间左边界变为 mid + 1
- ⽴即返回 mid
- 交换 a[mid] 与 x
15. 在如下⽹格中, # 表⽰不能经过的格⼦, . 表⽰可以经过的格⼦。从左上角⾛到右下角,每次只能向右 或向下移动,不同路径共有( )条。 A. B. C. D.
判断题(每题 2 分,共 20 分)
{{ select(15) }}
二、判断题(每题 2 分,共 20 分)
1. 使⽤ cmath 或 math.h 中的三角函数时,角度参数默认采⽤角度制
{{ select(16) }}
- 对
- 错
2. 使⽤ cmath 或 math.h 中的 pow(2, 10) 计算 时,由于参数均为整型 int ,返回值类型也为整型 int 。
{{ select(17) }}
- 对
- 错
3. 0/1 背包使⽤⼀维数组优化时,容量从⼩到⼤枚举也能保证每件物品最多被选⼀次
{{ select(18) }}
- 对
- 错
4. 哈希表采⽤开放定址法时,即使哈希函数设计合理,也仍然可能发⽣冲突
{{ select(19) }}
- 对
- 错
5. 同⼀个图从同⼀个起点进⾏深度优先搜索,访问序列⼀定与邻接点的枚举顺序⽆关
{{ select(20) }}
- 对
- 错
6. 泛洪算法可以⽤递归 DFS 实现,但地图很⼤时可能由于递归层数过深导致调⽤栈溢出等运⾏时错误
{{ select(21) }}
- 对
- 错
7. 哈夫曼树中不存在度为 的结点
{{ select(22) }}
- 对
- 错
8. 冒泡排序的常见实现是稳定排序,选择排序也是
{{ select(23) }}
- 对
- 错
9. 在⽆权图中从起点执⾏ BFS 时,某个顶点第⼀次被访问到的层数等于起点到该顶点经过的最少边数
{{ select(24) }}
- 对
- 错
10. 在⼆维动态规划中,状态 dp[i][j] 的计算常常依赖其他状态,这些状态的计算必须在完成 dp[i][j] 的计算前完成。
{{ select(25) }}
- 对
- 错