选择题 共15道

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15


判断题 共10道

16 17 18 19 20 21 22 23 24 25


编程题 共2道

26 27

E1037 202603 CCF-GESP C++八级真题-练习

选择题 共15道
01 某班级有8名男生和6名女生,现要选出3人组成学习小组,要求小组中至少有1名男生和1名女生,则不同的选法共有( )种。 2分
登录后查看选项
02 在杨辉三角中,从第0行开始计数,第10行的所有数之和为( )。 2分
登录后查看选项
03

下列代码实现了快速幂算法,其时间复杂度为( )。

long long fastPow(long long b, long long e, long long mod) {
	long long result = 1;
	while (e > 0) {
		if (e & 1)
			result = result * b % mod;
		b = b * b % mod;
		e >>= 1;
	}
	return result;
}
2分
登录后查看选项
04 从5本不同的数学书和4本不同的物理书中选取3本书,要求至少包含1本数学书,则不同的选法有( )种。 2分
登录后查看选项
05 在二叉搜索树(BST)中,若中序遍历的序列为 {1, 2, 3, 4, 5} ,且先序遍历的第一个序列元素为 3 ,则下列说法正确的是( )。 2分
登录后查看选项
06 在一个有向带权图中,使用Dijkstra算法求单源最短路时,若使用优先队列(小根堆)优化,其时间复杂度为( )。 2分
登录后查看选项
07 对于含 个顶点(n≥2)的连通加权有向图,若图中不存在负权环,则任意两点之间的最短路径(简单路径)最多包含( )条边。 2分
登录后查看选项
08 在使用Floyd算法求任意两点间最短路径时,时间复杂度为 O(V3)。若在某次算法执行前,已经用 Dijkstra 算法正确求出了所有点对的最短路并存入了 dist 数组。如果此时继续对该 dist 数组执行一次完整的 Floyd 算法过程(无任何提前终止),执行完毕后 dist 数组内的值( )。 2分
登录后查看选项
09 关于图论中的最短路径算法,下列说法中严格正确的是( )。 2分
登录后查看选项
10 有6个人排成一排照相,其中甲、乙两人必须相邻,且丙不能站在排头的不同排法有( )种。 2分
登录后查看选项
11

下列代码试图实现Floyd算法求所有点对之间的最短路径,横线处应填入( )。

void floyd(int n, int dist[][MAXN]) {
	for (int k = 0; k < n; k++)
		for (int i = 0; i < n; i++)
			for (int j = 0; j < n; j++)
				if (__________) // 在此处填入选项
					dist[i][j] = dist[i][k] + dist[k][j];
}
2分
登录后查看选项
12 用数字 0、1、2、3、4 组成无重复数字的五位偶数,共有( )个。 2分
登录后查看选项
13

在一个无向带权图中,若使用 Prim 算法从顶点 0 开始构造最小生成树(边权均为正整数,且 graph[u][v]== 0 表示无边),下列代码中横线处应填入( )。

int prim(vector<vector<int>>& graph, int n) {
	vector<bool> inMST(n, false);
	vector<int> minEdge(n, INT_MAX);
	minEdge[0] = 0;
	int result = 0;
	for (int i = 0; i < n; i++) {
		int u = -1;
		for (int j = 0; j < n; j++)
			if (!inMST[j] && (u == -1 || minEdge[j] < minEdge[u]))
				u = j;
		inMST[u] = true;
		result += minEdge[u];
		for (int v = 0; v < n; v++)
			if (__________) // 在此处填入选项
				minEdge[v] = graph[u][v];
	}
	return result;
}
2分
登录后查看选项
14 已知三个点 A(x1,y1),B(x2,y2),C(x3,y3)在平面直角坐标系中的坐标。下列 C++ 表达式中,在精度误差范围1e-8内能正确计算判断这三个点是三点共线的表达式是( )。 2分
登录后查看选项
15

在64位操作系统下(LP64 / LLP64 模型),下面代码的输出结果是()。

#include <iostream>
using namespace std;
int main() {
	int a[4] = {1, 2, 3, 4};
	int (*p)[4] = &a;
	int *q = a;
	cout << sizeof(a) << " ";
	cout << sizeof(p) << " ";
	cout << sizeof(p + 1) << " ";
	cout << sizeof(q + 1) << " ";
	cout << (p + 1) - p << " ";
	cout << (q + 1) - q << endl;
}
2分
登录后查看选项
判断题 共10道
16 在C++中,若结构体中包含一个 static 成员变量,则该变量的存储空间属于结构体对象的一部分。 2分
登录后查看选项
17 对于任意正整数n,二项式(a+b)n展开式中各项的二项式系数之和等于2n 2分
登录后查看选项
18 在C++中,若函数参数类型为 const int & ,则该参数既可以绑定左值,也可以绑定右值。 2分
登录后查看选项
19 若一个无向图的最小生成树唯一,则图中所有边权必定各不相同。 2分
登录后查看选项
20 使用快速排序对n个元素进行排序时,无论最好、最坏还是平均情况,时间复杂度均为 O(n log n)。 2分
登录后查看选项
21 若一个图中所有顶点的度数为偶数,则一定存在欧拉回路。 2分
登录后查看选项
22 使用倍增法预处理区间最值问题时,预处理的时间复杂度为O(n log n),查询的时间复杂度为O(1)。 2分
登录后查看选项
23 如果将一个连通无向图G1中所有边的权值都统一增加同一个正整数常数 ,形成图G2。则G1的最小生成树中每条边在G2中对应的边组成的树,一定是G2的最小生成树。 2分
登录后查看选项
24 在图论算法中,Kruskal算法和Prim算法都可以用来求解最小生成树,且这两者的贪心策略无论在任何连通无向图上求得的最小生成树总边权和必定相同。 2分
登录后查看选项
25 在动态规划问题中,“状态转移方程+递推”和“递归+记忆化搜索”通常是解决同一问题的两种不同实现方式,它们的时间复杂度总是相同的。 2分
登录后查看选项
编程题 共2道
26

25分
登录后作答
27

25分
登录后作答