#GESP202609C7. 选择/判断题
选择/判断题
一、单选题(每题 2 分,共 30 分)
- 下列 C++ 代码的输出结果是( )。
#include <iostream>
using namespace std;
int main() {
int a = 5, b = 3;
cout << (a & b) + (a | b) << endl;
return 0;
}
{{ select(1) }}
- 6
- 7
- 8
- 9
- 使用 cmath 或 math.h 中的数学库函数,下列说法中正确的是( )。
{{ select(2) }}
- pow(2, 3) 的返回值类型为 int
- sin(30) 的参数 30 表示 30 度
- sqrt(4) 的返回值类型为 int
- log(1) 的返回值为 0.0 ,且类型为 double
- 有 4 个字符,出现次数分别为 1、2、3、4。构造哈夫曼树后,出现次数为 1 的字符的哈夫曼编码长度为( )。
{{ select(3) }}
- 1
- 2
- 3
- 4
- 从 个点连接成的网格的左上角走到右下角,每次只能向右或向下移动,不同的路径共有( )条。
{{ select(4) }}
- 20
- 35
- 70
- 126
- 在含有 个结点的二叉排序树中查找一个元素,平均时间复杂度和最坏时间复杂度分别为( )。
{{ select(5) }}
- 、
- 、
- 、
- 、
- 有 4 堆石子,数量分别为 1、2、3、4。每次可以合并相邻两堆,合并代价为两堆石子数之和。将所有石子合并成一堆的最小总代价为( )。
{{ select(6) }}
- 17
- 19
- 20
- 23
- 在无权图中,使用 BFS 从起点开始遍历,并在访问由结点 u 扩展的相邻结点 v 时记录 dist[v] =dist[u] + 1 ,且起点的 dist 为 0 ,则最终 dist[v] 表示的是( )。
{{ select(7) }}
- 起点到结点 v 的最少边数
- 结点 v 的度数
- 从起点到结点 v 的路径上经过的最大边权
- 包含结点 v 的连通块大小
- 在二维网格上实现泛洪填充时,为了防止递归层数过深,最适合的非递归实现方式是( )。
{{ select(8) }}
- 使用哈希表记录每个格子被访问的次数
- 使用快速排序预处理网格
- 使用二分查找定位边界
- 使用队列实现 BFS 或使用显式栈模拟 DFS
- 关于哈希表,下列说法正确的是( )。
{{ select(9) }}
- 只要哈希函数选择合适,就可以完全避免冲突
- 在链地址法中,查找一个元素的时间复杂度一定为
- 开放定址法发生冲突后,会在表内寻找下一个可用位置
- 哈希表的查找速度与表中元素个数无关
- 下列 C++ 代码的输出结果是( )。
#include <iostream>
using namespace std;
void inc(int &x) {
x++;
}
int main() {
int a = 3;
inc(a);
cout << a;
return 0;
}
{{ select(10) }}
- 3
- 4
- 5
- 编译错误
- 用动态规划求两个序列 和 的最长公共子序列长度,若 dp[i][j] 表示 前 i 个元素与 前 j 个元素的 LCS 长度。当 时,正确的状态转移是( )。
{{ select(11) }}
dp[i][j] = dp[i - 1][j - 1] + 1dp[i][j] = max(dp[i - 1][j], dp[i][j - 1])dp[i][j] = dp[i - 1][j] + 1dp[i][j] = dp[i][j - 1]
- 下列代码是一维数组优化 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;
}
{{ select(12) }}
- 0
- 1
- 3
- 5
- 若要求排序后相等元素的相对顺序保持不变,下列排序算法中最不适宜使用的是( )。
{{ select(13) }}
- 冒泡排序
- 插入排序
- 归并排序
- 快速排序
- 下列代码片段的时间复杂度为( )。
long long s = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j += i)
s += i + j;
{{ select(14) }}
- 已知 int a[6] = {1, 3, 5, 7, 9, 11}; int *p = a + 1; ,则表达式 *(p + 3) 的值是( )。
{{ select(15) }}
- 5
- 7
- 9
- 11
二、判断题(每题 2 分,共 20 分)
- 使用 cmath 或 math.h 中的函数,表达式 exp(0) 的结果值为 1.0 ,且类型为 double 。
{{ select(16) }}
- 正确
- 错误
- 采用开放定址法处理冲突的哈希表中,删除一个元素后可以直接将该位置置空,不会影响后续查找。
{{ select(17) }}
- 正确
- 错误
- 在哈夫曼树中,出现次数更多的叶子结点,其深度总是更小。
{{ select(18) }}
- 正确
- 错误
- 在一个有向图中,所有顶点的入度之和总是等于所有顶点的出度之和。
{{ select(19) }}
- 正确
- 错误
- 广度优先搜索通常借助队列实现,深度优先搜索通常借助栈或递归实现。
{{ select(20) }}
- 正确
- 错误
- 快速排序的平均时间复杂度为 ,最坏时间复杂度也为 。
{{ select(21) }}
- 正确
- 错误
- 为解决 0/1 背包问题,使用一维数组优化时,内层容量循环应从大到小枚举。
{{ select(22) }}
- 正确
- 错误
- 使用邻接表存储图时,遍历某个顶点的所有邻边所需时间与图中顶点数成正比。
{{ select(23) }}
- 正确
- 错误
- 在按层序从 1 开始对结点编号的完全二叉树中,编号为 ()的结点的父结点编号为 。
{{ select(24) }}
- 正确
- 错误
- 在定义了数组 int arr[10]; 后,表达式 arr 和表达式 &arr[0] 总是等价的。
{{ select(25) }}
- 正确
- 错误