202506 GESP认证 C++编程 七级真题试卷
剩余时间 --:--:--
单选题 共 15 题
1.

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

#include <iostream>
using namespace std;
int main() {
    char a = 'b' ^ 4;
    cout << a;
    return 0;
}
2.
已知 a 为 int 类型变量, p 为 int * 类型变量,下列赋值语句不符合语法的是( )。
3.
下列关于C++类的说法,错误的是( )。
4.

下列C++代码的输出是( )。

#include <iostream>
using namespace std;
int main() {
    int arr[5] = {2, 4, 6, 8, 10};
    int * p = arr + 2;
    cout << p[3] << endl;
    return 0;
}
5.
假定只有一个根节点的树的深度为 1,则一棵有N 个节点的完全二叉树,则树的深度为( )。
6.

对于如下图的二叉树,说法正确的是( )。

7.
图的存储和遍历算法,下面说法错误的是( )。
8.
一个连通的简单有向图,共有28条边,则该图至少有( )个顶点。
9.
以下哪个方案不能合理解决或缓解哈希表冲突( )。
10.
以以下关于动态规划的说法中,错误的是( )。
11.

下面C++程序的输出为( )。

#include <iostream>
using namespace std;
int rec_fib[100];
int fib(int n) {
    if (n <= 1)
        return n;
    if (rec_fib[n] == 0)
        rec_fib[n] = fib(n - 1) + fib(n - 2);
return rec_fib[n];
}
int main() {
    cout << fib(6) << endl;
    return 0;
)
12.

下面C++程序的时间复杂度为( )。

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

下面 search 函数的平均时间复杂度为( )。

int search(int n, int * p, int target) {
    int low = 0, high = n;
    while (low < high) {
        int middle = (low + high) / 2;
        if (target == p[middle]) {
            return middle;
        } else if (target > p[middle]) {
            low = middle + 1;
        } else {
            high = middle;
        }
    }
    return -1;
}
14.

下面C++程序的时间复杂度为( )。

int primes[MAXP], num = 0;
bool isPrime[MAXN] = {false};
void sieve() {
    for (int n = 2; n <= MAXN; n++) {
        if (!isPrime[n])
            primes[num++] = n;
        for (int i = 0; i < num && n * primes[i] <= MAXN; i++) {
            isPrime[n * primes[i]] = true;
            if (n % primes[i] == 0)
                break;
        }
    }
}
15.

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

判断题 共 10 题
1.
C++语言中,表达式 9 & 12 的结果类型为 int 、值为 8 。
2.
C++语言中,指针变量指向的内存地址不一定都能够合法访问。
3.
对 n个元素的数组进行快速排序,最差情况的时间复杂度为O(n log n) 。
4.
一般情况下, long long 类型占用的字节数比 float 类型多。
5.
使用 math.h 或 cmath 头文件中的函数,表达式 pow(10, 3) 的结果的值为 1000 、类型为 int 。
6.
二叉排序树的中序遍历序列一定是有序的。
7.
无论哈希表采用何种方式解决冲突,只要管理的元素足够多,都无法避免冲突。
8.
在C++语言中,类的构造函数和析构函数均可以声明为虚函数。
9.
动态规划方法将原问题分解为一个或多个相似的子问题,因此必须使用递归实现。
10.
如果将城市视作顶点,公路视作边,将城际公路网络抽象为简单图,可以满足城市间的车道级导航需求。
问答题 共 2 题
1.

试题名称:线图

时间限制:1.0 s

内存限制:512.0 MB

3.1.1 题目描述

给定由 n个结点与 m条边构成的简单无向图G ,结点依次以1,2,....n 编号。简单无向图意味着G 中不包含重边与自环。G 的线图L(G) 通过以下方式构建:

初始时线图L(G)  为空。

对于无向图 G中的一条边,在线图 L(G) 中加入与之对应的一个结点。

对于无向图 G中两条不同的边(u1,v1),(u2,v2) ,若存在 中的结点同时连接这两条边(即 之一与之一相同),则在线图 L(G)  中加入一条无向边,连接(u1,v1),(u2,v2) 在线图中对应的结点。

请你求出线图 L(G) 中所包含的无向边的数量。

3.1.2 输入格式

第一行,两个正整数n,m,分别表示无向图 G中的结点数与边数。

接下来 m 行,每行两个正整数ui,vi ,表示G 中连接ui,vi 的一条无向边。

3.1.3 输出格式

输出共一行,一个整数,表示线图  L(G) 中所包含的无向边的数量。

3.1.4 样例

3.1.4.1 输入样例 1

5 4

1 2

2 3

3 1

4 5

3.1.4.2 输出样例 1

3

3.1.4.3 输入样例 2

5 10

1 2

1 3

1 4

1 5

2 3

2 4

2 5

3 4

3 5

4 5

3.1.4.4 输出样例 2

30

3.1.4.5 样例解释 1

3.1.5 数据范围

2.

试题名称:调味平衡

时间限制:1.0 s

内存限制:512.0 MB

3.2.1 题目描述

A 准备了 n 种食材用来制作料理,这些食材依次以 1,2,...n编号,第 i 种食材的酸度为 ai ,甜度为 bi 。对于每种食材,小 A 可以选择将其放入料理,或者不放入料理。料理的酸度 A为放入食材的酸度之和,甜度B 为放入食材的甜度之和。如果料理的酸度与甜度相等,那么料理的调味是平衡的。

过于清淡的料理并不好吃,因此小 A 想在满足料理调味平衡的前提下,合理选择食材,最大化料理的酸度与甜度之和。你能帮他求出在调味平衡的前提下,料理酸度与甜度之和的最大值吗?

3.2.2 输入格式

第一行,一个正整数 n ,表示食材种类数量。

接下来 n行,每行两个正整数ai,bi ,表示食材的酸度与甜度。

3.2.3 输出格式

输出共一行,一个整数,表示在调味平衡的前提下,料理酸度与甜度之和的最大值。

3.2.4 样例

3.2.4.1 输入样例 1

3

1 2

2 4

3 2


3.2.4.2 输出样例 1

8


3.2.4.3 输入样例 2

5

1 1

2 3

6 1

8 2

5 7


3.2.4.4 输出样例 2

2


3.2.5 数据范围

C++ 编辑器
输入
输出