#CCF4781. [GESP202509七级] 客观题
[GESP202509七级] 客观题
一、单选题(每题 2 分,共 30 分)
第 1 题 已知小写字母 的 ASCII
码为 ,下列 C++
代码的输出结果是 ( )
01 #include <iostream>
02 using namespace std;
03 int main() {
04 char a = 'b' + 1;
05 cout << a;
06 return 0;
07 }
{{ select(1) }}
第 2 题 已知 为 int
类型变量, 为 int *
类型变量,下列表达式不符合语法的是 ( )
{{ select(2) }}
a * a
p * p
a && a
p && p
第 3 题 下列关于 C++
类的说法,错误的是 ( )
{{ select(3) }}
- 如果一个类包含纯虚函数,则它不能包含成员变量。
- 如果一个类包含纯虚函数,则不能用它定义对象。
- 派生类对象占用的内存总是不小于基类对象。
- 派生类可以不实现基类的虚函数。
第 4 题 已知数组 的定义 int a[10] = {-1};
,下列说法不正确的是 ( )
{{ select(4) }}
- 数组 至少占用 个
int
大小的内存,一般为 个字节。 - 数组 的所有元素均被初始化为 。
- 语句
a[-1] = 0;
不会产生编译错误,但会导致难以预测的运行结果。 - 语句
a[13] = 0;
不会产生编译错误,但会导致难以预测的运行结果。
第 5 题 一棵完全二叉树有 个结点,则叶结点有多少个?( )
{{ select(5) }}
第 6 题 下列关于二叉树的说法,错误的是 ( )
{{ select(6) }}
- 二叉排序树的中序遍历顺序与元素排序的顺序是相同的。
- 自平衡二叉查找树 (树) 是一种二叉排序树。
- 个元素的二叉排序树,其高一定为 。
- 任意的森林,都可以映射为一颗二叉树进行表达和存储。
第 7 题 下列关于树和图的说法,错误的是 ( )
{{ select(7) }}
- 保留树的所有节点,并把树的每个节点指向其父节点,则可以将树转换为一个有向弱连通图。
- 保留树的所有节点,并把树的每个节点指向其子节点,则可以将树转换为一个有向无环图。
- 每个连通图都存在生成树。
- 每个存在生成树的有向图,都一定是强连通的。
第 8 题 对一个包含 个顶点、 条边的图,执行广度优先搜索,其最优时间复杂度是( )。
{{ select(8) }}
第 9 题 以下哪个方案不能合理解决或缓解哈希表冲突 ( )
{{ select(9) }}
- 用新元素覆盖发生冲突的哈希表项。
- 在每个哈希表项处,使用单链表管理该表项的冲突元素。
- 建立额外的单链表,用来管理所有发生冲突的元素。
- 使用不同的哈希函数再建立一个哈希表,用来管理所有发生冲突的元素。
第 10 题 以下关于贪心法和动态规划的说法中,错误的是 ( )
{{ select(10) }}
- 对特定的问题,贪心法不一定适用。
- 当特定的问题适用贪心法时,通常比动态规划的时间复杂度更低。
- 对很多问题,递推实现和递归实现动态规划方法的时间复杂度相当。
- 采用动态规划的算法一定具有多项式时间复杂度。
第 11 题 下面程序的输出为 ( )
01 #include <iostream>
02 using namespace std;
03 int fib(int n) {
04 if (n == 0)
05 return 1;
06 return fib(n - 1) + fib(n - 2);
07 }
08 int main() {
09 cout << fib(6) << endl;
10 return 0;
11 }
{{ select(11) }}
- 无法正常结束。
第 12 题 下面程序的时间复杂度为 ( )
01 int rec_fib[MAX_N];
02 int fib(int n) {
03 if (n <= 1)
04 return n;
05 if (rec_fib[n] != 0)
06 return rec_fib[n];
07 return fib(n - 1) + fib(n - 2);
08 }
{{ select(12) }}
第 13 题 下面 init_sieve
函数的时间复杂度为 ( )
01 int sieve[MAX_N];
02 void init_sieve(int n) {
03 for (int i = 1; i <= n; i++)
04 sieve[i] = i;
05 for (int i = 2; i <= n; i++)
06 for (int j = i; j <= n; j += i)
07 sieve[j]--;
08 }
{{ select(13) }}
第 14 题 下面 count_triple
函数的时间复杂度为 ( )
01 int gcd(int m, int n) {
02 if (m == 0) return n;
03 return gcd(n % m, m);
04 }
05 int count_triple(int n) {
06 int cnt = 0;
07 for (int v = 1; v * v * 4 <= n; v++)
08 for (int u = v + 1; u * (u + v) * 2 <= n; u += 2)
09 if (gcd(u, v) == 1) {
10 int a = u * u - v * v;
11 int b = u * v * 2;
12 int c = u * u + v * v;
13 cnt += n / (a + b + c);
14 }
15 return cnt;
16 }
{{ select(14) }}
第 15 题 下列选项中,哪个不可能是下图的深度优先遍历序列 ( )
{{ select(15) }}
2, 3, 5, 7, 8, 9, 6, 4, 1
5, 7, 8, 9, 1, 2, 4, 3, 6
6, 8, 9, 5, 7, 1, 2, 3, 4
8, 5, 7, 9, 1, 2, 3, 6, 4
二、判断题(每题 2 分,共 20 分)
第 1 题 C++
语言中,表达式 9 && 12
的结果类型为 int
、值为 。
{{ select(16) }}
- 正确
- 错误
第 2 题 C++
语言中,在有 int a[10];
定义的范围内,通过表达式 a[-1]
进行访问将导致编译错误。
{{ select(17) }}
- 正确
- 错误
第 3 题 选择排序一般是不稳定的。
{{ select(18) }}
- 正确
- 错误
第 4 题 C++
语言中, float
和 int
类型一般都是 字节,因此 float
类型能够表达不同的浮点数值的数量,与 int
类型能够表达不同的整数值的数量是相同的。
{{ select(19) }}
- 正确
- 错误
第 5 题 使用 math.h
或 cmath
头文件中的对数函数,表达式 log(256)
的结果类型为 double
、值约为 8.0
。
{{ select(20) }}
- 正确
- 错误
第 6 题 一棵有 个节点的完全二叉树,则树的深度为 。
{{ select(21) }}
- 正确
- 错误
第 7 题 邻接表和邻接矩阵都是图的存储形式。通常,使用邻接表比使用邻接矩阵的时间复杂度更低。
{{ select(22) }}
- 正确
- 错误
第 8 题 C++
语言中,类的构造函数可以声明为私有 (private
)。
{{ select(23) }}
- 正确
- 错误
第 9 题 泛洪算法的递归实现容易造成溢出,因此大的二维地图算法中,一般使用广度优先搜索实现。
{{ select(24) }}
- 正确
- 错误
第 10 题 很多游戏中为玩家设置多种可供学习的技能,要学习特定技能又往往需要先学习 个或以上的前置技能。尽管这样的技能间依赖关系常被玩家称为 "技能树"",但它并不一定是树,更可能是有向无环图。
{{ select(25) }}
- 正确
- 错误