万卷网> GESP认证 >C++ > 2024年9月CCF—GESP(C++七级)编程能力等级认证试卷

2024年9月CCF—GESP(C++七级)编程能力等级认证试卷
七级 2024 2025-05-29 09:48:33 66

一、单选题

1.

下面程序的输出为( )。

#include <iostream>
#include <cmath>
using namespace std;
int main() {
	cout << (int)log(8) << endl;
	return 0;
}
A.

2

B.

3

C.

8

D.

无法通过编译。

2.

一个迷宫,已知从起点不经过重复结点到达终点的路径有且仅有一条,则下面说法错误的是( )。

A.

可以使用深度优先搜索找到这条路径。

B.

可以使用广度优先搜索找到这条路径。

C.

该迷宫内与起点连通的结点,一定也与终点连通。

D.

该迷宫内与起点连通的结点及它们之间的路径可以抽象为无向无环图。

3.

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

A.

将C++类对象通过值传递给函数参数时,会自动调用复制构造函数。

B.

将一个类的对象赋值给该类的另一个对象时,不会自动调用构造函数。

C.

定义C++类对象时,一定会调用默认构造函数。

D.

构造派生类的对象时,一定会调用基类的构造函数。

4.

一棵完全二叉树有431个结点,则叶结点有多少个?( )

A.

176

B.

215

C.

216

D.

255

5.

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

A.

O(1)

B.

O(N)

C.

O(NlogN)

D.

O(N2)

6.

下列关于树的说法,错误的是( )。

A.

二叉树的中序遍历与其深度优先遍历总是相同的。

B.

所有树都可以构造一颗二叉树与之一一对应。

C.

如果树的一个叶结点有两个不同的祖先结点,那么其中一个一定是另一个的祖先结点。

D.

树的结点不能有两个父结点。

7.

已知 a 为 int 类型变量,下列表达式不符合语法的是( )。

A.

&a + 3

B.

+a & 3

C.

a - - 4

D.

a++3

8.

下面 fib 函数的时间复杂度为( )。

int fib_rcd[MAX_N];
int fib(int n) {
	if (n <= 1)
		return 1;
	if (fib_rcd[n] > 0)
		return fib_rcd[n];
	return fib(n - 1) + fib(n - 2);
}
A.

O(n)

B.

C.

O(2n)

D.

无法正常结束。

9.

下面程序的输出为( )。

#include <iostream>
#define N 10
using namespace std;
int path[N][N];
int main() {
	for (int i = 1; i < N; i++)
		path[i][0] = i;
	for (int j = 1; j < N; j++)
		path[0][j] = j;
	for (int i = 1; i < N; i++)
		for (int j = 1; j < N; j++)
			path[i][j] = path[i - 1][j] + path[i][j - 1];
	cout << path[8][4] << endl;
	return 0;
}
A.

84

B.

495

C.

1012

D.

结果是随机的。

10.

以下哪个方案可以合理解决或缓解哈希表冲突( )。

A.

丢弃发生冲突的新元素。

B.

用新元素覆盖发生冲突的元素。

C.

用新元素覆盖在冲突位置的下一个位置。

D.

将新元素放置在冲突位置之后的第一个空位。

11.

下列关于C++语言中指针的叙述,不正确的是( )。

A.

指针变量中存储的是内存地址。

B.

指针变量指向的内存地址不一定能够合法访问。

C.

结构类型中的指针成员不能指向该结构类型。

D.

定义指针变量时必须指定其指向的类型。

12.

一个简单无向图有10个结点、30条边。再增加多少条边可以成为完全图。( )

A.

10

B.

15

C.

51

D.

60

13.

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

A.

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

B.

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

C.

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

D.

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

14.

某二叉树T的先序遍历序列为:{A B D C E G H F},中序遍历序列为:{D B A H G E C F},则下列说法中正确的是( )。

A.

T的高为5

B.

T有4个叶节点

C.

T是平衡树

D.

以上说法都不对

15.

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

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

b

B.

c

C.

98

D.

99

二、判断题

1.

在C++语言中,函数可以定义在另一个函数定义之内。

A.正确 B.错误
2.

选择排序一般是不稳定的。

A.正确 B.错误
3.

一颗 N 层的完全二叉树,一定有 2N−1 个结点。

A.正确 B.错误
4.

使用单链表实现队列时,链表头结点作为队首比链表头结点作为队尾更便于操作。

A.正确 B.错误
5.

表达式 ‘a’ << 1 的结果为 'a ’ 。

A.正确 B.错误
6.

某个哈希表键值 x 为整数, H(x) = x % p 是常用的哈希函数之一,要求 p 选择素数是因为这样不会产生冲突。( )

A.正确 B.错误
7.

埃氏筛法和欧拉筛法都是使用筛法思想生成素数表的算法,欧拉筛法的时间复杂度更低。

A.正确 B.错误
8.

使用 math.h 或 cmath 头文件中的正弦函数,表达式 sin(30) 的结果类型为 double 、值约为 0.5 。

A.正确 B.错误
9.

一个图中,每个结点表达一个人,连接两个结点的边表达两个结点对应的人相互认识,则这个图可以用来表达社交网络

A.正确 B.错误
10.

一个图,不管是否连通,都可以使用深度优先搜索算法进行遍历。

A.正确 B.错误

三、编程题

1.

矩阵移动

时间限制:1.0 s

内存限制:512.0 MB

题面描述

小杨有一个有一个 n×m 的矩阵,仅包含 01? 三种字符。矩阵的行从上到下编号依次为1,2,...,n,列从左到右编号依次为1,2,...,m 编号。小杨开始在矩阵的左上角(1,1),小杨只能向下或者向右移动,最终到达右下角(n,m)时停止,在移动的过程中每经过一个字符 1 得分会增加一分(包括起点和终点),经过其它字符则分数不变。小杨的初始分数为 0 分。

小杨可以将矩阵中不超过 x 个字符 ? 变为字符 1。小杨在修改矩阵后,会以最优的策略从左上角移动到右下角。他想知道自己最多能获得多少分。

输入格式

第一行包含一个正整数 t ,代表测试用例组数。

接下来是 t 组测试用例。对于每组测试用例,一共 n+1 行。

第一行包含三个正整数n,m,x,含义如题面所示。

之后 n 行,每行包含一个长度为 m 且仅包含 01? 三种字符的字符串。

输出格式

对于每组测试用例,输出一行一个整数,代表最优策略下小杨的得分最多是多少。


输入样例

2
3 3 1
000
111
01?
3 3 1
000
?0?
01?

输出样例

4
2

对于第二组测试用例,将(1,1)或者 (3,3)变成 1 均是最优策略。

对于全部数据,保证有1≤t≤10,1≤n,m≤500,1≤x≤300,同时保证所有测试用例 n×m 的总和不超过 2.5×105。

2.

小杨寻宝

时间限制:1.0 s

内存限制:512.0 MB

题面描述

小杨有一棵包含 n 个节点的树,树上的一些节点放置有宝物。

小杨可以任意选择一个节点作为起点并在树上移动,但是小杨只能经过每条边至多一次,当小杨经过一条边后,这条边就会消失。小杨每经过一个放置有宝物的节点就会取得该宝物。

小杨想请你帮他判断自己能否成功取得所有宝物。

输入格式

第一行包含一个正整数 t ,代表测试用例组数。

接下来是 t 组测试用例。对于每组测试用例,一共 n+1 行。

第一行包含一个正整数 n ,代表树的节点数。

第二行包含 n 个非负整数a1,a2,...,an,其中如果 ai=1,则节点 i 放置有宝物,若ai=0,则节点 i 没有宝物。

之后 n−1 行,每行包含两个正整数xi,yi,代表存在一条连接节点xi和yi的边。

输出格式

对于每组测试数据,如果小杨能成功取得所有宝物,输出 Yes,否则输出 No。


输入样例

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

输出样例

Yes
No

对于第一组测试用例,小杨从节点 2 出发,按照2−1−3−4 的顺序即可成功取得所有宝物。

对于全部数据,保证有1≤t≤10,1≤n≤105,0≤ai≤1,且保证树上一定有至少一个节点放置有宝物。

公众号
客服 反馈
顶部