#G1222. 客观题
客观题
一、单选题(每题 2 分,共 30 分)
-
已知小写字母
b
的 ASCII 码为 ,下列 C++ 代码的输出结果是( )。#include <iostream> using namespace std; int main() { char a = 'b' ^ 4; cout << a; return 0; }
{{ select(1) }}
b
bbbb
f
102
- 已知 为
int
类型变量, 为int *
类型变量,下列赋值语句不符合语法的是( )。
{{ select(2) }}
*(p + a) = *p;
*(p - a) = a;
p + a = p;
p = p + a;
- 下列关于 C++ 类的说法,错误的是( )。
{{ select(3) }}
- 如需要使用基类的指针释放派生类对象,基类的析构函数应声明为虚析构函数
- 构造派生类对象时,只调用派生类的构造函数,不会调用基类的构造函数
- 基类和派生类分别实现了同一个虚函数,派生类对象仍能够调用基类的该方法
- 如果函数形参为基类指针,调用时可以传入派生类指针作为实参
-
下列 C++ 代码的输出是( )。
#include <iostream> using namespace std; int main() { int arr[5] = {2, 4, 6, 8, 10}; int * p = arr + 2; cout << p[3] << endl; return 0; }
{{ select(4) }}
- 编译出错,无法运行
- 不确定,可能发生运行时异常
- 假定只有一个根节点的树的深度为 ,则一棵有 个节点的完全二叉树,则树的深度为( )。
{{ select(5) }}
- 不能确定
-
对于如下图的二叉树,说法正确的是( )。
{{ select(6) }}
- 先序遍历是
ABDEC
- 中序遍历是
BDACE
- 后序遍历是
DBCEA
- 广度优先遍历是
ABCDE
- 图的存储和遍历算法,下面说法错误的是( )。
{{ select(7) }}
- 图的深度优先遍历须要借助队列来完成
- 图的深度优先遍历和广度优先遍历对有向图和无向图都适用
- 使用邻接矩阵存储一个包含 个顶点的有向图,统计其边数的时间复杂度为
- 同一个图分别使用出边邻接表和入边邻接表存储,其边结点个数相同
- 一个连通的简单有向图,共有 条边,则该图至少有( )个顶点。
{{ select(8) }}
- 以下哪个方案不能合理解决或缓解哈希表冲突( )。
{{ select(9) }}
- 在每个哈希表项处,使用不同的哈希函数再建立一个哈希表,管理该表项的冲突元素
- 在每个哈希表项处,建立二叉排序树,管理该表项的冲突元素
- 使用不同的哈希函数建立额外的哈希表,用来管理所有发生冲突的元素
- 覆盖发生冲突的旧元素
- 以下关于动态规划的说法中,错误的是( )。
{{ select(10) }}
- 动态规划方法通常能够列出递推公式
- 动态规划方法的时间复杂度通常为状态的个数
- 动态规划方法有递推和递归两种实现形式
- 对很多问题,递推实现和递归实现动态规划方法的时间复杂度相当
-
下面程序的输出为( )。
#include <iostream> using namespace std; int rec_fib[100]; int fib(int n) { if (n <= 1) return n; if (rec_fib[n] == 0) rec_fib[n] = fib(n - 1) + fib(n - 2); return rec_fib[n]; } int main() { cout << fib(6) << endl; return 0; }
{{ select(11) }}
- 结果是随机的
-
下面程序的时间复杂度为( )。
int rec_fib[MAX_N]; int fib(int n) { if (n <= 1) return n; if (rec_fib[n] == 0) rec_fib[n] = fib(n - 1) + fib(n - 2); return rec_fib[n]; }
{{ select(12) }}
- ,
-
下面
search
函数的平均时间复杂度为( )。int search(int n, int * p, int target) { int low = 0, high = n; while (low < high) { int middle = (low + high) / 2; if (target == p[middle]) { return middle; } else if (target > p[middle]) { low = middle + 1; } else { high = middle; } } return -1; }
{{ select(13) }}
-
下面程序的时间复杂度为( )。
int primes[MAXP], num = 0; bool isPrime[MAXN] = {false}; void sieve() { for (int n = 2; n <= MAXN; n++) { if (!isPrime[n]) primes[num++] = n; for (int i = 0; i < num && n * primes[i] <= MAXN; i++) { isPrime[n * primes[i]] = true; if (n % primes[i] == 0) break; } } }
{{ select(14) }}
-
下列选项中,哪个不可能是下图的广度优先遍历序列( )。
{{ select(15) }}
二、判断题(每题 2 分,共 20 分)
- C++ 语言中,表达式
9 & 12
的结果类型为int
、值为 。( )
{{ select(16) }}
- 正确
- 错误
- C++ 语言中,指针变量指向的内存地址不一定都能够合法访问。( )
{{ select(17) }}
- 正确
- 错误
- 对 个元素的数组进行快速排序,最差情况的时间复杂度为 。( )
{{ select(18) }}
- 正确
- 错误
- 一般情况下,
long long
类型占用的字节数比float
类型多。( )
{{ select(19) }}
- 正确
- 错误
- 使用
math.h
或cmath
头文件中的函数,表达式pow(10, 3)
的结果的值为1000
、类型为int
。( )
{{ select(20) }}
- 正确
- 错误
- 二叉排序树的中序遍历序列一定是有序的。( )
{{ select(21) }}
- 正确
- 错误
- 无论哈希表采用何种方式解决冲突,只要管理的元素足够多,都无法避免冲突。( )
{{ select(22) }}
- 正确
- 错误
- 在 C++ 语言中,类的构造函数和析构函数均可以声明为虚函数。( )
{{ select(23) }}
- 正确
- 错误
- 动态规划方法将原问题分解为一个或多个相似的子问题,因此必须使用递归实现。( )
{{ select(24) }}
- 正确
- 错误
- 如果将城市视作顶点,公路视作边,将城际公路网络抽象为简单图,可以满足城市间的车道级导航需求。( )
{{ select(25) }}
- 正确
- 错误