#5202. GESP八级样题
GESP八级样题
C++ 八级(样题)
1 单选题(每题 2 分,共 30 分)
第 1 题 从A城到C城需要经过B城,其中A到B可选高铁和飞机,B到C可以自驾或打的,请问A到C有几种交通选择()。 {{ select(1) }}
- 2
- 4
- 8
- 不知道
第 2 题 下面程序输出的n的值是( )。
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
int a, b, c, d, n = 0;
for (a = 1; a < 5; a++)
for (b = 1; b < 5; b++)
for (c = 1; c < 5; c++)
for (d = 1; d < 5; d++)
if (a != b && a != c && a != d && b != c && b != d && c != d)
if (a != 4) {
cout << a * 1000 + b * 100 + c * 10 + d << " ";
n++;
}
cout << endl << n << endl;
return 0;
}
{{ select(2) }}
- 4
- 12
- 18
- 24
第 3 题 对 ,想求出 的系数可以使用( ) {{ select(3) }}
- 杨氏三角
- 祖冲之角
- 勾股三角
- 杨辉三角
第 4 题 对于 4 个结点的简单有向图,最少( )条边可以形成一条覆盖所有顶点的环。 {{ select(4) }}
- 5
- 4
- 3
- 2
第 5 题 对正整数 a 和 n(n 为2 的正整数次幂),下面求 值的方法是( )
int fan (int a, int n) {
if (n == 0) return 1;
if (n == 1) return a;
long long s = fan(a, n / 2);
return s * s;
}
{{ select(5) }}
- 折半
- 二分
- 倍增
- 迭代
第 6 题 平面内,通过一点可以作( )条平行于给定直线的直线? {{ select(6) }}
- 0
- 1
- 2
- 无限多
第 7 题 定义常量const double pi=3.14159。如果一个等边三角形的边长为4,下列( )表达式可以求其面积 。 {{ select(7) }}
16*sin(pi/3)16*cos(pi/3)8*sin(pi/3)8*cos(pi/3)
第 8 题 下面程序使用BFS遍历一个有n个顶点、边权都为1的无向图G,下面说法正确的是( )。
#include <vector>
using namespace std;
#define N 2023
int n, m;
vector <int> G[N];
int q[N], hd, tl;
int dis[N];
void BFS (int st)
{
hd = 1, tl = 0;
for (int i = 1; i <= n; i++) dis[i] = -1;
q[++tl] = st, dis[st] = 0;
while (hd <= tl) {
int u = q[hd++];
for (int i = 0; i < G[u].size(); i++) {
int v = G[u][i];
if (dis[v] != -1) continue;
dis[v] = dis[u] + 1;
q[++tl] = v;
}
}
}
{{ select(8) }}
tl记录遍历的结点数dis按照贪心法变化dis存储st到其他顶点的距离- 算法复杂度是
第 9 题 下面的冒泡排序中尝试提前结束比较过程,横线处应该填写的代码是( )。
void BubbleSort (int R[], int n)
{
int i, j, lastExchangeIndex;
i = n;
while (i > 1) {
lastExchangeIndex = 1;
for (j = 1; j < i; j++)
if (R[j + 1] < R[j]) {
int t;
t = R[j], R[j] = R[j + 1], R[j + 1] = t;
lastExchangeIndex = j;
} // if
____________________;
} // while
} // BubbleSort
{{ select(9) }}
i = lastExchangeIndex + 1i = lastExchangeIndex -1i = lastExchangeIndexi = lastExchangeIndex - j
第 10 题 对数列3、4、7、12、19、28、39求和,除简单累加外,还可以用下面( )来直接计算。 {{ select(10) }}
- 等差数列求和
- 等比数列求和
- 斐波拉契数列
- 其他某种有规律序列
第 11 题 约定杨辉三角形第0行只有1个元素是1,第1行有2个元素都是1,第四行的所有元素之和是( )? {{ select(11) }}
- 8
- 16
- 24
- 32
第 12 题 下列程序的输出是 ( ) 。
int main()
{
int sum = 0, x;
for (x = -10; x <= 10; x++)
if ((3 * x + 5 >= -11) && (3 * x + 5 <= 11))
sum += x;
cout << sum;
cout << endl;
return 0;
}
{{ select(12) }}
- -12
- 0
- 55
- -55
第 13 题 对于具有n个元素的二叉排序树(又名二分查找树)进行前序遍历,其时间复杂度是( )? {{ select(13) }}
第 14 题 Dijkstra的算法在实现时一般可以选用( )来提高效率? {{ select(14) }}
- 数组
- 链表
- 堆
- 栈
第 15 题 有关下⾯代码的说法正确的是( )。
#include <iostream>
class Node {
public:
int Value;
Node* Next;
Node (int Val, Node* Nxt = nullptr) {
Value = Val;
Next = Nxt;
}
};
int main() {
Node* firstNode = new Node(10);
firstNode->Next = new Node(100);
firstNode->Next->Next = new Node(111, firstNode);
return 0;
}
{{ select(15) }}
- 上述代码构成单向链表。
- 上述代码构成双向链表。
- 上述代码构成循环链表。
- 上述代码构成指针链表。
2 判断题(每题 2 分,共 20 分)
第 1 题 学校组织班际排球赛,每个班级可以派男女各一个参赛队伍,每队5人。班级A的每位同学都可以报名,那可以用加法原理来计算A班有多少支候选队伍。( ) {{ select(16) }}
- 对
- 错
第 2 题 若a,x,b都是double类型,则对方程a*x+b=0求解的程序中可以直接用x=-b/a来求解。( ) {{ select(17) }}
- 对
- 错
第 3 题 从15本不同的书中选3本,总共有455种方法。 ( ) {{ select(18) }}
- 对
- 错
第 4 题 连通图G有n个顶点m条边,须删除m-n+1条边后才能变成一棵生成树。( ) {{ select(19) }}
- 对
- 错
第 5 题 在C++语言中,所有int类型的值,经过若干次左移操作(<<)后,它们的值总会变为0。( ) {{ select(20) }}
- 对
- 错
第 6 题 如果一个四边形的对角线互相平分,并且两条对角线的长度都为8,那么这个四边形的面积一定是32。( ) {{ select(21) }}
- 对
- 错
第 7 题 最小生成树的权值是指生成树所有边的权值之和最小。( ) {{ select(22) }}
- 对
- 错
第 8 题 如果一个图中所有边的权重都为正数,则Floyd算法可以求出该图中任意两个顶点间的最短路径。 ( ) {{ select(23) }}
- 对
- 错
第 9 题 下面是图的深度遍历的代码,则横线处可以填入:if(vis[x]) return。( )
void dfs (int x) {
____________; // 补充代码
vis[x] = 1;
cout << x << endl; // 访问当前节点
for (int i = vFirst[x]; i != -1; i = e[i].next) { //遍历每一个相邻的顶点
dfs(e[i].v);
}
}
{{ select(24) }}
- 对
- 错
第 10 题 下图中A到E的Dijkstra单源最短路可以在第2次探索中找到。( )

{{ select(25) }}
- 对
- 错