#1101. GESP C++ 六 级 2025年12月真题 · 单选题

GESP C++ 六 级 2025年12月真题 · 单选题

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

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

1. 在面向对象编程中,下列关于虚函数的描述中,错误的是( )。

{{ select(1) }}

  • 虚函数用于支持运行时多态
  • 通过基类指针调用虚函数时,会根据对象实际类型决定调用版本
  • 构造函数可以声明为虚函数以支持多态
  • 基类析构函数常声明为虚函数以避免资源泄漏

2. 执行如下代码,会输出 钢琴:叮咚叮咚 和 吉他:咚咚当当。这体现了面向对象编程的( )特性。

{{ select(2) }}

  • 继承
  • 封装
  • 多态
  • 链接

3. 关于以下代码,说法正确的是( )。

{{ select(3) }}

  • 执行代码会输出两行,内容分别为:钢琴:叮咚叮咚和吉他:咚咚当当
  • 执行代码会输出两行,内容分别为:乐器在演奏声音和乐器在演奏声音
  • 代码编译出现错误
  • 代码运行出现错误

4. 某文本编辑器把用户输入的字符依次压入栈S。用户依次输入A, B, C, D 后,用户按了两次撤销(每次撤销,弹出栈顶一个字符)。此时栈从栈底到栈顶的内容是:( )。

{{ select(4) }}

  • A B
  • A B C
  • A B D
  • B C

5. 假设循环队列数组长度为 N,其中队空判断条件为:front == rear,队满判断条件为:(rear + 1) % N == front,出队对应的操作为:front = (front + 1) % N,入队对于的操作为:rear = (rear + 1) % N。循环队列长度 N = 6,初始 front = 1, rear = 1,执行操作序列为:入队, 入队, 入队, 出队, 入队, 入队,则最终 (front, rear) 的值是( )。

{{ select(5) }}

  • (2, 5)
  • (2, 0)
  • (3, 5)
  • (3, 0)

6. 以下函数check()用于判断一棵二叉树是否为( )。

{{ select(6) }}

  • 满二叉树
  • 完全二叉树
  • 二叉搜索树
  • 平衡二叉树

7. 以下代码实现了二叉树的( )。

{{ select(7) }}

  • 前序遍历
  • 中序遍历
  • 后序遍历
  • 层序遍历

8. 下面代码实现了哈夫曼编码,则横线处应填写的代码是( )。

{{ select(8) }}

  • nodes.push_back(Node(nodes[x].w + nodes[y].w, x, y, -1)); internalIdx.push_back(z);
  • nodes.push_back(Node(nodes[x].w + nodes[y].w, x, y, -1)); leafIdx.push_back(z);
  • internalIdx.push_back(z); nodes.push_back(Node(nodes[x].w + nodes[y].w, x, y, x+y));
  • nodes.push_back(Node(nodes[x].w + nodes[y].w, x, y, x+y)); leafIdx.push_back(z);

9. 以下关于哈夫曼编码的说法,正确的是( )。

{{ select(9) }}

  • 哈夫曼编码是定长编码
  • 哈夫曼编码中,没有任何一个字符的编码是另一个字符编码的前缀
  • 哈夫曼编码一定唯一
  • 哈夫曼编码不能用于数据压缩

10. 以下函数实现了二叉排序树(BST)的( )操作。

{{ select(10) }}

  • 查找
  • 插入
  • 删除
  • 遍历

11. 下列代码实现了树的深度优先遍历,则横线处应填入( )。

{{ select(11) }}

  • if (node->left) st.push(node->left);
  • if (node->left) st.pop(node->left);
  • if (node->left) st.front(node->left);
  • if (node->left) st.push(node->right);

12. 给定一棵普通二叉树(节点值没有大小规律),下面代码判断是否存在值为x的结点,则横线处应填入( )。

{{ select(12) }}

  • q.push(cur);
  • if (cur->right) q.push(cur->right);

13. 在二叉排序树(Binary Search Tree, BST)中,假设节点值互不相同。给定如下搜索函数,以下说法一定正确的是( )。

{{ select(13) }}

  • 最坏情况下,访问结点数是O(log n)
  • 最坏情况下,访问结点数是O(n)
  • 无论如何,访问结点数都不超过树高的一半
  • 一定比在普通二叉树中搜索快

14. 0/1背包(每件物品最多选一次)问题通常可用一维动态规划求解,核心代码如下。则下面说法正确的是( )。

{{ select(14) }}

  • 内层j必须从小到大,否则会漏解
  • 内层j必须从大到小,否则同一件物品会被用多次
  • j从大到小或从小到大都一样
  • 只要dp初始为0,方向无所谓

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

{{ select(15) }}

  • 动态规划方法通常能够列出递推公式。
  • 动态规划方法的时间复杂度通常为状态的个数。
  • 动态规划方法有递推和递归两种实现形式。
  • 对很多问题,递推实现和递归实现动态规划方法的时间复杂度相当。