#G2509C7A. [GESP202509 七级] 客观题

[GESP202509 七级] 客观题

一、单选题(每题 2 分,共 30 分)

  1. 已知小写字母 b 的 ASCII 码为 98,下列 C++ 代码的输出结果是()
#include <iostream>
using namespace std;

int main() {
    char a = 'b' + 1;
    cout << a;
    return 0;
}

{{ select(1) }}

  • b
  • c
  • 98
  • 99
  1. 已知 a 为 int 类型变量,p 为 int * 类型变量,下列表达式不符合语法的是() {{ select(2) }}
  • a * a
  • p * p
  • a && a
  • p && p
  1. 下列关于 C++ 类的说法,错误的是() {{ select(3) }}
  • 如果一个类包含纯虚函数,则它不能包含成员变量
  • 如果一个类包含纯虚函数,则不能用它定义对象
  • 派生类对象占用的内存总是不小于基类对象
  • 派生类可以不实现基类的虚函数
  1. 已知数组 a 的定义 int a[10] = {-1};,下列说法不正确的是() {{ select(4) }}
  • 数组 a 至少占用 10 个 int 大小的内存,一般为 40 个字节
  • 数组 a 的所有元素均被初始化为 -1
  • 语句 a[-1] = 0; 不会产生编译错误,但会导致难以预测的运行结果
  • 语句 a[13] = 0; 不会产生编译错误,但会导致难以预测的运行结果
  1. 一棵完全二叉树有 165 个结点,则叶结点有多少个?() {{ select(5) }}
  • 38
  • 82
  • 83
  • 84
  1. 下列关于二叉树的说法,错误的是() {{ select(6) }}
  • 二叉排序树的中序遍历顺序与元素排序的顺序是相同的
  • 自平衡二叉查找树(AVL 树)是一种二叉排序树
  • n 个元素的二叉排序树,其高一定为 log2n\left\lfloor\log _{2} n\right\rfloor
  • 任意的森林,都可以映射为一颗二叉树进行表达和存储
  1. 下列关于树和图的说法,错误的是() {{ select(7) }}
  • 保留树的所有节点,并把树的每个节点指向其父节点,则可以将树转换为一个有向弱连通图
  • 保留树的所有节点,并把树的每个节点指向其子节点,则可以将树转换为一个有向无环图
  • 每个连通图都存在生成树
  • 每个存在生成树的有向图,都一定是强连通的
  1. 对一个包含 V 个顶点、E 条边的图,执行广度优先搜索,其最优时间复杂度是() {{ select(8) }}
  • O(V+E)O(V+E)
  • O(V)O(V)
  • O(E)O(E)
  • O(V2)O\left(V^{2}\right)
  1. 以下哪个方案不能合理解决或缓解哈希表冲突() {{ select(9) }}
  • 用新元素覆盖发生冲突的哈希表项
  • 在每个哈希表项处,使用单链表管理该表项的冲突元素
  • 建立额外的单链表,用来管理所有发生冲突的元素
  • 使用不同的哈希函数再建立一个哈希表,用来管理所有发生冲突的元素
  1. 以下关于贪心法和动态规划的说法中,错误的是() {{ select(10) }}
  • 对特定的问题,贪心法不一定适用
  • 当特定的问题适用贪心法时,通常比动态规划的时间复杂度更低
  • 对很多问题,递推实现和递归实现动态规划方法的时间复杂度相当
  • 采用动态规划的算法一定具有多项式时间复杂度
  1. 下面程序的输出为()
#include <iostream>
using namespace std;

int fib(int n) {
    if (n == 0)
        return 1;
    return fib(n - 1) + fib(n - 2);
}

int main() {
    cout << fib(6) << endl;
    return 0;
}

{{ select(11) }}

  • 8
  • 13
  • 21
  • 无法正常结束
  1. 下面程序的时间复杂度为()
int rec_fib[MAX_N];
int fib(int n) {
    if (n <= 1)
        return n;
    if (rec_fib[n] != 0)
        return rec_fib[n];
    return fib(n - 1) + fib(n - 2);
}

{{ select(12) }}

  • O(ϕn),ϕ=5+12O(\phi^n),\phi=\frac{\sqrt{5}+1}{2}
  • O(n)O(n)
  • O(nlogn)O(n\log n)
  • O(2n)O(2^n)
  1. 下面 init_sieve 函数的时间复杂度为()
int sieve[MAX_N];
void init_sieve(int n) {
    for (int i = 1; i <= n; i++)
        sieve[i] = i;
    for (int i = 2; i <= n; i++)
        for (int j = i; j <= n; j += i)
            sieve[j]--;
}

{{ select(13) }}

  • O(n)O(n)
  • O(nloglogn)O(n\log\log n)
  • O(nlogn)O(n\log n)
  • O(n2)O(n^2)
  1. 下面 count_triple 函数的时间复杂度为()
int gcd(int m, int n) {
    if (m == 0)
        return n;
    return gcd(n % m, m);
}

int count_triple(int n) {
    int cnt = 0;
    for (int v = 1; v * v * 4 <= n; v++)
        for (int u = v + 1; u * (u + v) * 2 <= n; u += 2)
            if (gcd(u, v) == 1) {
                int a = u * u - v * v;
                int b = u * v * 2;
                int c = u * u + v * v;
                cnt += n / (a + b + c);
            }
    return cnt;
}

{{ select(14) }}

  • O(n2)O\left(n^{2}\right)
  • O(n2logn)O\left(n^{2} \log n\right)
  • O(nlogn)O(n \log n)
  • O(n)O(n)
  1. 下列选项中,哪个不可能是下图的深度优先遍历序列() image {{ 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、值为 8。 {{ select(16) }}
  • 正确
  • 错误
  1. C++ 语言中,在有 int a[10]; 定义的范围内,通过表达式 a[-1] 进行访问将导致编译错误。 {{ select(17) }}
  • 正确
  • 错误
  1. 选择排序一般是不稳定的。 {{ select(18) }}
  • 正确
  • 错误
  1. C++ 语言中,float 和 int 类型一般都是 4 字节,因此 float 类型能够表达不同的浮点数值的数量,与 int 类型能够表达不同的整数值的数量是相同的。 {{ select(19) }}
  • 正确
  • 错误
  1. 使用 math.h 或 cmath 头文件中的对数函数,表达式 log(256) 的结果类型为 double、值约为 8.0。 {{ select(20) }}
  • 正确
  • 错误
  1. 一棵有 N 个节点的完全二叉树,则树的深度为 log2(N)+1\left\lfloor\log _{2}(N)\right\rfloor+1。 {{ select(21) }}
  • 正确
  • 错误
  1. 邻接表和邻接矩阵都是图的存储形式。通常,使用邻接表比使用邻接矩阵的时间复杂度更低。 {{ select(22) }}
  • 正确
  • 错误
  1. C++ 语言中,类的构造函数可以声明为私有(private)。 {{ select(23) }}
  • 正确
  • 错误
  1. 泛洪算法的递归实现容易造成溢出,因此大的二维地图算法中,一般使用广度优先搜索实现。 {{ select(24) }}
  • 正确
  • 错误
  1. 很多游戏中为玩家设置多种可供学习的技能,要学习特定技能又往往需要先学习 1 个或以上的前置技能。尽管这样的技能间依赖关系常被玩家称为“技能树”,但它并不一定是树,更可能是有向无环图。 {{ select(25) }}
  • 正确
  • 错误