#1115. GESP C++ 七 级 2024年12月真题 · 单选题

GESP C++ 七 级 2024年12月真题 · 单选题

GESP C++ 七 级 2024年12月真题(180 分钟,总分 100 分)

单选题(共 15 题,每题 2 分,共 30 分)

1. 已知小写字母b的ASCII码为98,下列C++代码的输出结果是(  )。

#include <iostream>
using namespace std;
int main()
{
    char a = 'b';
    cout << a + 1;
    return 0;
}

{{ select(1) }}

  • b
  • c
  • 98
  • 99

2. 已知a为int类型变量,p为int *类型变量,下列赋值语句不符合语法的是(  )。

{{ select(2) }}

  • +a = *p;
  • *p = +a;
  • a = *(p + a);
  • *(p + a) = a;

3. 已知数组a的定义int a[10] = {0};,下列说法不正确的是(  )。

{{ select(3) }}

  • 语句a[-1] = 0;会产生编译错误。
  • 数组a的所有元素均被初始化为0。
  • 数组a至少占用10个int大小的内存,一般为40个字节。
  • 语句a[13] = 0;不会产生编译错误,但会导致难以预测的运行结果。

4. 下列关于C++类的说法,错误的是(  )。

{{ select(4) }}

  • 构造函数不能声明为虚函数,但析构函数可以。
  • 函数参数如声明为类的引用类型,调用时不会调用该类的复制构造函数。
  • 静态方法属于类、不属于对象,因此不能使用对象.方法(...)的形式调用静态方法。
  • 析构派生类的对象时,一定会调用基类的析构函数。

5. 下列关于有向图的说法,错误的是(  )。

{{ select(5) }}

  • n 个顶点的弱连通有向图,最少有 n-1 条边。
  • n 个顶点的强连通有向图,最少有 n 条边。
  • n 个顶点的有向图,最多有 nx(n-1) 条边。
  • n 个顶点的有向完全图,有 nx(n-1) 条边。

6. 一棵二叉树的每个结点均满足:结点的左子树和右子树,要么同时存在,要么同时不存在。该树有197个结 点,则其叶结点有多少个?(  )

{{ select(6) }}

  • 98
  • 99
  • 不存在这样的树。
  • 无法确定叶结点数量。

7. 下列关于二叉树的说法,错误的是(  )。

{{ select(7) }}

  • 二叉排序树的中序遍历顺序与元素排序的顺序是相同的。
  • n 个元素的二叉排序树,其高一定为 ⌊log⁡2n⌋\lfloor \log_2 n \rfloor。
  • 自平衡二叉查找树(AVL树)是一种二叉排序树。
  • 任意的森林,都可以映射为一颗二叉树进行表达和存储。

8. 一个简单无向图有10个结点、6条边。在最差情况,至少增加多少条边可以使其连通?(  )

{{ select(8) }}

  • 3
  • 4
  • 6
  • 9

9. 一个哈希表,包括n个位置(分别编号0~(n - 1)),每个位置最多仅能存储一个元素。该哈希表只有插入元素 和查询两种操作,没有删除或修改元素的操作。以下说法错误的是(  )。

{{ select(9) }}

  • 如果哈希函数取值范围为0 ~ (n - 1),且当发生哈希函数碰撞时循环向后寻找空位,则查询操作的最差时间复杂度为 O(n)。(“循环向后”指:0向后一位为1,1向后一位为2,......,(n - 2)向后一位为(n - 1),(n - 1)向后一位为0)
  • 如果哈希函数取值范围为0 ~ (n - 1),且当发生哈希函数碰撞时仅循环向后一个位置寻找空位,则查询操作的最 差时间复杂度为 O(1)。
  • 如果哈希函数取值范围为0 ~ (m - 1)(m < n),且当发生哈希函数碰撞时仅在m ~ (n - 1)的范围内寻找空位,则 查询操作的最差时间复杂度为 O(n-m)。
  • 查询操作时,如果发现查询元素经哈希函数对应的位置为空位,该查询元素仍可能出现在哈希表内。

10. 以下关于动态规划的说法中,错误的是(  )。

{{ select(10) }}

  • 动态规划方法将原问题分解为一个或多个相似的子问题。
  • 动态规划方法通常能够列出递推公式。
  • 动态规划方法有递推和递归两种实现形式。
  • 递推实现动态规划方法的时间复杂度总是不低于递归实现。

11. 下面程序的输出为(  )。

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    cout << (int)exp(2) << endl;
    return 0;
}

{{ select(11) }}

  • 4
  • 7
  • 100
  • 无法通过编译。

12. 下面程序的输出为(  )。

#include <iostream>
#define N 10
using namespace std;
int h[N];
int main()
{
    h[0] = h[1] = 1;
    for (int n = 2; n < N; n++)
        for (int j = 0; j < n; j++)
            h[n] += h[j] * h[n - j - 1];
    cout << h[6] << endl;
    return 0;
}

{{ select(12) }}

  • 132
  • 1430
  • 16796
  • 结果是随机的。

13. 上题中程序的时间复杂度为(  )。

{{ select(13) }}

  • O(N)
  • O(N log N)
  • O(N3/2)
  • O(N2)

14. 下面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(14) }}

  • O(n)
  • O(n log n)
  • O(n2)
  • 无法正常结束。

15. 下列选项中,哪个不可能是下图的深度优先遍历序列(  )。

{{ select(15) }}

  • 1, 2, 3, 5, 7, 8, 6, 9, 4
  • 1, 4, 7, 8, 9, 5, 2, 3, 6
  • 1, 5, 7, 8, 9, 4, 2, 3, 6
  • 1, 2, 3, 6, 9, 8, 5, 7, 4