Logo

2023年12月 GESP C++ 6级

GESP · 6级 · 2023-12

60:00
满分 100
时长 60 分钟
27

2023年12月 GESP C++ 6级认证考试真题(含编程操作题部分)

答题卡 已答 0/27
已答 正确 错误 编程题

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

1

关于 C++ 类和对象的说法,错误的是( )。

2

有关下面 C++ 代码的说法,错误的是( )。

3

有关下面 C++ 代码的说法,正确的是( )。

4

有关下面 C++ 代码的说法,错误的是( )。

5

的定义,有关下面 C++ 代码的说法正确的是( )。

6

有关下面 C++ 代码的说法正确的是( )。

7

对 hello world 使用霍夫曼编码(Huffman Coding),最少 bit(比特)为( )。

8

下面的 fiboA()fiboB() 两个函数分别实现斐波那契数列,该数列第 $1$ 、第 $2$ 项值为 $1$ ,其余各项分别为前两项之和。下面有关说法错误的是( )。

9

有关下面 C++ 代码不正确的说法是( )。

10

下面有关树的存储,错误的是( )。

11

构造二叉树 $[1,2,3,\text{null},4]$( )。

12

下面有关布尔类型的函数的说法,正确的是( )。

13

通讯卫星在通信网络系统中主要起到( )的作用。

14

小杨想编写一个判断任意输入的整数 $N$ 是否为素数的程序,下面哪个方法不合适?( )

15

内排序有不同的类别,下面哪种排序算法和冒泡排序是同一类?( )

判断题(共 10 题,每题 2 分)

16

在面向对象中,方法在 C++ 的 class 中表现为 class 内定义的函数。( )

17

C++ 类的定义中,可以没有构造函数,会给出默认的构造函数( )

18

如果某个 C++ 对象(object)支持下标运算符(方括号运算符),则该对象在所对应 class 中以成员函数的形式进行了重载。( )

19

深度优先搜索(DFS,Depth First Search 的简写)属于图算法,其过程是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。( )

20

哈夫曼编码(Huffman Coding)具有唯一性,因此有确定的压缩率。 ( )

21

在下面 C++ 代码中,由于删除了变量 ptr,因此 ptr 所对应的数据也随之删除,故第 8 行代码被执行时,将报错。( )

22

二叉搜索树查找的平均时间复杂度为 $O(\log n)$。( )

23

二叉搜索树可以是空树(没有任何节点)或者单节点树(只有一个节点),或者多节点。如果是多节点,则左节点的值小于父节点的值,右节点的值大于父节点的值,由此推理,右节点树的值都大于根节点的值,左节点树的值都小于根节点的值。( )

24

小杨想写一个程序来算出正整数 $N$ 有多少个因数,经过思考他写出了一个重复没有超过 $N/2$ 次的循环就能够算出来了。( )

25

同样的整数序列分别保存在单链表和双向链中,这两种链表上的简单冒泡排序的复杂度相同。( )

编程操作题(共 2 题,共 50 分)

26
编程操作题 25分

试题名称:闯关游戏

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

你来到了一个闯关游戏。

这个游戏总共有 $N$ 关,每关都有 $M$ 个通道,你需要选择一个通道并通往后续关卡。其中,第 $i$ 个通道可以让你前进 $a_i$ 关,也就是说,如果你现在在第 $x$ 关,那么选择第 $i$ 个通道后,你将直接来到第 $x+a_i$ 关(特别地,如果 $x + a_i \geq N$,那么你就通关了)。此外,当你顺利离开第 $s$ 关时,你还将获得 $b_s$ 分。

游戏开始时,你在第 $0$ 关。请问,你通关时最多能获得多少总分。

输入格式

第一行两个整数 $N$,$M$,分别表示关卡数量和每关的通道数量。

接下来一行 $M$ 个用单个空格隔开的整数 $a_0,a_1\cdots,a_{M-1}$。保证 $1\le a_i \le N$。

接下来一行 $N$ 个用单个空格隔开的整数 $b_0,b_1\cdots,b_{N-1}$。保证 $|b_i|\le 10^5$。

输出格式

一行一个整数,表示你通关时最多能够获得的分数。

样例输入 #1

6 2 
2 3
1 0 30 100 30 30

样例输出 #1

131

样例输入 #2

6 2
2 3
1 0 30 100 30 -1

样例输出 #2

101

说明/提示

样例解释 1

你可以在第 $0$ 关选择第 $1$ 个通道,获得 $1$ 分并来到第 $3$ 关;随后再选择第 $0$ 个通道,获得 $100$ 分并来到第 $5$ 关;最后任选一个通道,都可以获得 $30$ 分并通关。如此,总得分为 $1+100+30=131$。

样例解释 2

请注意,一些关卡的得分可能是负数。

数据范围

对于 $20%$ 的测试点,保证 $M=1$。

对于 $40%$ 的测试点,保证 $N \le 20$;保证 $M\le 2$。

对于所有测试点,保证 $1 \le N \le 10^4$;保证 $1 \le M\le 100$。

27
编程操作题 25分

试题名称:工作沟通

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

某公司有 $N$ 名员工,编号从 $0$ 至 $N-1$。其中,除了 $0$ 号员工是老板,其余每名员工都有一个直接领导。我们假设编号为 $i$ 的员工的直接领导是 $f_i$。

该公司有严格的管理制度,每位员工只能受到本人或直接领导或间接领导的管理。具体来说,规定员工 $x$ 可以管理员工 $y$,当且仅当 $x=y$,或 $x=f_y$,或 $x$ 可以管理 $f_y$。特别地,$0$ 号员工老板只能自我管理,无法由其他任何员工管理。

现在,有一些同事要开展合作,他们希望找到一位同事来主持这场合作,这位同事必须能够管理参与合作的所有同事。如果有多名满足这一条件的员工,他们希望找到编号最大的员工。你能帮帮他们吗?

输入格式

第一行一个整数 $N$,表示员工的数量。

第二行 $N - 1$ 个用空格隔开的正整数,依次为 $f_1,f_2,\dots f_{N−1}$。

第三行一个整数 $Q$,表示共有 $Q$ 场合作需要安排。

接下来 $Q$ 行,每行描述一场合作:开头是一个整数 $m$($2 \le m \le N$),表示参与本次合作的员工数量;接着是 $m$ 个整数,依次表示参与本次合作的员工编号(保证编号合法且不重复)。

保证公司结构合法,即不存在任意一名员工,其本人是自己的直接或间接领导。

输出格式

输出 $Q$ 行,每行一个整数,依次为每场合作的主持人选。

样例输入 #1

5
0 0 2 2
3
2 3 4
3 2 3 4
2 1 4

样例输出 #1

2
2
0

样例输入 #2

7
0 1 0 2 1 2
5
2 4 6
2 4 5
3 4 5 6
4 2 4 5 6
2 3 4

样例输出 #2

2
1
1
1
0

说明/提示

样例解释 1

对于第一场合作,员工 $3,4$ 有共同领导 $2$ ,可以主持合作。

对于第二场合作,员工 $2$ 本人即可以管理所有参与者。

对于第三场合作,只有 $0$ 号老板才能管理所有员工。

数据范围

对于 $50%$ 的测试点,保证 $N \leq 50$。

对于所有测试点,保证 $3 \leq N \leq 300$,$Q \leq 100$。


2024/1/28 添加一组 hack 数据。

已答 0/27