Logo

GESP C++ 五级 模拟卷1

GESP · 5级 · 2026-06

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

GESP C++ 五级模拟卷1(链表操作、数论、快速排序、二分查找、贪心算法)

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

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

1

与数组相比,链表在以下哪种操作上通常具有更高的效率?( )

2

用辗转相除法求 gcd(72, 30) 时,第一步计算 72 % 30 = 12,则第二步计算的是( )

3

以下代码用于判断正整数 n 是否为质数,横线处应填入( )

bool isPrime(int n) {
    if (n < 2) return false;
    for (int i = 2; i <= sqrt(n); i++) {
        if (______) return false;
    }
    return true;
}
4

以下快速排序的 partition 函数中,横线处应填入( )

int partition(int arr[], int low, int high) {
    int pivot = arr[high];
    int i = low - 1;
    for (int j = low; j < high; j++) {
        if (______) {
            i++;
            swap(arr[i], arr[j]);
        }
    }
    swap(arr[i + 1], arr[high]);
    return i + 1;
}
5

在二分查找中,为避免 (left + right) 溢出,mid 的计算通常写为( )

6

贪心算法的核心特征是( )

7

以下排序算法中,属于稳定排序的是( )

8

在程序运行过程中,如果递归调用的层数过多,通常会因为什么原因引发错误?( )

9

在双向链表中,结点 p 的前驱和后继均非空。要删除结点 p,以下正确的是( )

10

根据唯一分解定理,以下分解正确的是( )

11

快速排序在平均情况下的时间复杂度是( )

12

执行以下代码后,变量 a 的值是( )

int a = 1, b = 1, c;
for (int i = 3; i <= 6; i++) {
    c = a + b;
    a = b;
    b = c;
}
cout << a;
13

在双向循环链表中,head 为头哨兵结点。将新结点 t 插入到链表头部(head 之后),横线处应填入( )

void insertHead(Node* head, Node* t) {
    t->next = head->next;
    t->prev = head;
    ______;
    head->next = t;
}
14

以下关于质数的说法,正确的是( )

15

活动选择问题中,贪心策略为"每次选择结束时间最早的活动"。使用该策略( )

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

16

链表支持通过下标直接访问任意位置的元素。( )

17

辗转相除法(欧几里得算法)可用于求两个正整数的最大公约数。( )

18

快速排序在最好情况下的时间复杂度为 O(n²)。( )

19

二分查找只适用于有序数组。( )

20

贪心算法能够保证对所有问题都得到全局最优解。( )

21

2 是唯一的偶质数。( )

22

归并排序是一种稳定的排序算法。( )

23

递归调用层数过多可能导致栈空间溢出。( )

24

唯一分解定理适用于所有正整数。( )

25

链表在插入元素时需要移动其他元素。( )

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

26
编程操作题 25分

试题名称:最大公约数

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

给定两个正整数 a 和 b,求它们的最大公约数(GCD)。

输入格式
一行,两个正整数 a 和 b(1 ≤ a, b ≤ 10⁹)。

输出格式
一行,一个整数,表示 a 和 b 的最大公约数。

样例输入 #1

72 30

样例输出 #1

6
27
编程操作题 25分

试题名称:二分查找统计出现次数

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

给定一个升序排列的整数数组(可能包含重复元素)和一个目标值 target,请统计 target 在数组中出现的次数。

要求使用二分查找实现,时间复杂度 O(log n)。

输入格式
第一行,两个整数 N 和 target(1 ≤ N ≤ 100000)。
第二行,N 个升序排列的整数,绝对值不超过 10⁹,数之间用空格分隔。

输出格式
一行,一个整数,表示 target 在数组中出现的次数。如果不存在则输出 0。

样例输入 #1

8 3
1 2 3 3 3 5 6 7

样例输出 #1

3
已答 0/27