林老师 · 客观题题库 · GESP 五级 · 2024 真题

GESP 五级 · 2024 真题

五级 · 2024 真题 · 客观题 · 每题 2 分
真题
复刻
试卷编号OBJ-776045
题目总数25 题 · 50 分
试卷类型客观题
考生须知:
① 本卷为客观题单卷,合计 25 题 · 50 分,全部为客观题;
② 试卷右上角设有 「提交答卷」「重置考试」 按钮,提交后系统自动判分并显示答题正确情况,请确认全部作答后再行提交;
③ 试卷不显示答案,提交后方可查看每题作答与正确答案的对照;
④ 答卷进度会保留在本地缓存中,刷新或再次打开仍可继续作答;
⑤ 本卷仅供学生练习使用;请勿用于其他用途;题面有问题请联系:i64coder@163.com。

判 分 报 告

0 / 50 分
0
答 对 · 得 0
0
答 错 · 失 0
当前筛选下没有题目

客 观 题

25 QUESTIONS · 2 POINTS EACH
第 1 题 单选 未作答

下面关于链表和数组的描述,错误的是( )。

(2 分)
GESP 五级 2024-09 · 单选 第1题 | 知识点 单向链表、一维数组
第 2 题 单选 未作答

通过( )操作,能完成在双向循环链表结点 p 之后插入结点 s 的功能(其中 next 域为结点的直接后继,prev 域为结点的直接前驱)。

(2 分)
GESP 五级 2024-09 · 单选 第2题 | 知识点 双向链表、循环链表、程序补全
第 3 题 单选 未作答

对下面两个函数,说法错误的是( )。

01int sumA(int n) {
02    int res = 0;
03    for (int i = 1; i <= n; i++) {
04        res += i;
05    }
06    return res;
07}
08
09int sumB(int n) {
10    if (n == 1)
11        return 1;
12    int res = n + sumB(n - 1);
13    return res;
14}

(2 分)
GESP 五级 2024-09 · 单选 第3题 | 知识点 递归、递推、时间复杂度
第 4 题 单选 未作答

有如下函数 fun,则 fun(20, 12) 的返回值为( )。

01int fun(int a, int b) {
02    if (a % b == 0)
03        return b;
04    else
05        return fun(b, a % b);
06}

(2 分)
GESP 五级 2024-09 · 单选 第4题 | 知识点 最大公约数、递归、程序阅读与输出推断
第 5 题 单选 未作答

下述代码实现素数表的埃拉托斯特尼筛法,筛选出所有小于等于 n 的素数,则横线上应填的最佳代码是( )。

01void sieve_Eratosthenes(int n) {
02    vector<bool> is_prime(n + 1, true);
03    vector<int> primes;
04
05    for (int i = 2; i * i <= n; i++) {
06        if (is_prime[i]) {
07            primes.push_back(i);
08            ____________ {   // 在此处填入代码
09                is_prime[j] = false;
10            }
11        }
12    }
13
14    for (int i = sqrt(n) + 1; i <= n; i++) {
15        if (is_prime[i]) {
16            primes.push_back(i);
17        }
18    }
19
20    return primes;
21}

(2 分)
GESP 五级 2024-09 · 单选 第5题 | 知识点 埃氏筛、程序补全
第 6 题 单选 未作答

下述代码实现素数表的线性筛法,筛选出所有小于等于 n 的素数,则横线上应填的代码是( )。

01vector<int> sieve_linear(int n) {
02    vector<bool> is_prime(n + 1, true);
03    vector<int> primes;
04
05    for (int i = 2; i <= n / 2; i++) {
06        if (is_prime[i])
07            primes.push_back(i);
08            ____________ {   // 在此处填入代码
09                is_prime[i * primes[j]] = 0;
10                if (i % primes[j] == 0)
11                    break;
12            }
13    }
14
15    for (int i = n / 2 + 1; i <= n; i++) {
16        if (is_prime[i])
17            primes.push_back(i);
18    }
19
20    return primes;
21}

(2 分)
GESP 五级 2024-09 · 单选 第6题 | 知识点 欧拉筛、程序补全
第 7 题 单选 未作答

下面函数可以将 n 的所有质因数找出来,其时间复杂度是( )。

01#include <iostream>
02#include <vector>
03
04vector<int> get_prime_factors(int n) {
05    vector<int> factors;
06
07    while (n % 2 == 0) {
08        factors.push_back(2);
09        n /= 2;
10    }
11
12    for (int i = 3; i * i <= n; i += 2) {
13        while (n % i == 0) {
14            factors.push_back(i);
15            n /= i;
16        }
17    }
18
19    if (n > 2) {
20        factors.push_back(n);
21    }
22
23    return factors;
24}

(2 分)
GESP 五级 2024-09 · 单选 第7题 | 知识点 质因数分解、时间复杂度
第 8 题 单选 未作答

现在用如下代码来计算 xnx^nnnxx 相乘),其时间复杂度为( )。

01double quick_power(double x, unsigned n) {
02    if (n == 0) return 1;
03    if (n == 1) return x;
04    return quick_power(x, n / 2) * quick_power(x, n / 2) * ((n & 1) ? x : 1);
05}

(2 分)
GESP 五级 2024-09 · 单选 第8题 | 知识点 快速幂、时间复杂度、递归
第 9 题 单选 未作答

假设快速排序算法的输入是一个长度为 nn 的已排序数组,且该快速排序算法在分治过程总是选择第一个元素作为基准元素。下面选项( )描述的是在这种情况下的快速排序行为。

(2 分)
GESP 五级 2024-09 · 单选 第9题 | 知识点 快速排序、排序复杂度
第 10 题 单选 未作答

考虑以下 C++ 代码实现的归并排序算法:

01void merge(int arr[], int left, int mid, int right) {
02    int n1 = mid - left + 1;
03    int n2 = right - mid;
04
05    int L[n1], R[n2];
06
07    for (int i = 0; i < n1; i++)
08        L[i] = arr[left + i];
09    for (int j = 0; j < n2; j++)
10        R[j] = arr[mid + 1 + j];
11
12    int i = 0, j = 0, k = left;
13    while (i < n1 && j < n2) {
14        if (L[i] <= R[j]) {
15            arr[k] = L[i];
16            i++;
17        }
18        else {
19            arr[k] = R[j];
20            j++;
21        }
22        k++;
23    }
24
25    while (i < n1) {
26        arr[k] = L[i];
27        i++;
28        k++;
29    }
30    while (j < n2) {
31        arr[k] = R[j];
32        j++;
33        k++;
34    }
35}
36
37void merge_sort(int arr[], int left, int right) {
38    if (left < right) {
39        int mid = left + (right - left) / 2;
40
41        merge_sort(arr, left, mid);
42        merge_sort(arr, mid + 1, right);
43
44        merge(arr, left, mid, right);
45    }
46}

对长度为 n 的数组 arr,挑用函数 merge_sort(a, 0, n-1),在排序过程中 merge 函数的递归调用次数大约是( )。

(2 分)
GESP 五级 2024-09 · 单选 第10题 | 知识点 归并排序、递归
第 11 题 单选 未作答

现在有 n 个人要过河,每只船最多载 22 人,船的承重为 100kg100\text{kg}。下列代码中,数组 weight 中保存有 n 个人的体重(单位为 kg\text{kg}),已经按从小到大排好序,代码输出过河所需要的船的数目,采用的思想为( )。

01int i, j;
02int count = 0;
03for (i = 0, j = n - 1; i < j; j--) {
04    if (weight[i] + weight[j] <= 100) {
05        i++;
06    }
07    count++;
08}
09printf("过河的船数: %d\n", count);

(2 分)
GESP 五级 2024-09 · 单选 第11题 | 知识点 贪心、双指针
第 12 题 单选 未作答

关于分治算法,以下哪个说法正确?

(2 分)
GESP 五级 2024-09 · 单选 第12题 | 知识点 分治
第 13 题 单选 未作答

根据下述二分查找法,在排好序的数组 1,3,6,9,17,31,39,52,61,791, 3, 6, 9, 17, 31, 39, 52, 61, 79 中查找数值 3131,循环 while (left <= right) 执行的次数为( )。

01int binary_search(vector<int>& nums, int target) {
02    int left = 0;
03    int right = nums.size() - 1;
04
05    while (left <= right) {
06        int mid = left + (right - left) / 2;
07
08        if (nums[mid] == target) {
09            return mid;
10        }
11        else if (nums[mid] < target) {
12            left = mid + 1;
13        }
14        else {
15            right = mid - 1;
16        }
17    }
18    return -1; // 如果找不到目标元素,返回-1
19}

(2 分)
GESP 五级 2024-09 · 单选 第13题 | 知识点 二分查找、程序阅读与输出推断
第 14 题 单选 未作答

以下关于高精度运算的说法错误的是( )。

(2 分)
GESP 五级 2024-09 · 单选 第14题 | 知识点 高精度、数据范围与溢出
第 15 题 单选 未作答

n=7n = 7 时,下面函数的返回值为( )。

01int fun(int n) {
02    if (n == 1) return 1;
03    else if (n >= 5) return n * fun(n - 2);
04    else return n * fun(n - 1);
05}

(2 分)
GESP 五级 2024-09 · 单选 第15题 | 知识点 递归、程序阅读与输出推断
第 16 题 判断 未作答

在操作系统中,需要对一组进程进行循环。每个进程被赋予一个时间片,当时间片用完时,CPU 将切换到下一个进程。这种循环操作可以通过环形链表来实现。

(2 分)
GESP 五级 2024-09 · 判断 第1题 | 知识点 循环链表
第 17 题 判断 未作答

找出自然数 n 以内的所有质数,常用算法有埃拉托斯特尼(埃氏)筛法和线性筛法,其中线性筛法效率更高。

(2 分)
GESP 五级 2024-09 · 判断 第2题 | 知识点 欧拉筛、埃氏筛
第 18 题 判断 未作答

唯一分解定理表明任何一个大于 11 的整数都可以唯一地分解为素数之和。

(2 分)
GESP 五级 2024-09 · 判断 第3题 | 知识点 质因数分解
第 19 题 判断 未作答

贪心算法通过每一步选择局部最优解,从而一定能获得最优解。

(2 分)
GESP 五级 2024-09 · 判断 第4题 | 知识点 贪心
第 20 题 判断 未作答

快速排序和归并排序的平均时间复杂度均为 O(nlogn)O(n \log n),且都是稳定排序。

(2 分)
GESP 五级 2024-09 · 判断 第5题 | 知识点 排序稳定性、快速排序、归并排序
第 21 题 判断 未作答

插入排序的时间复杂度总是比快速排序低。

(2 分)
GESP 五级 2024-09 · 判断 第6题 | 知识点 插入排序、快速排序
第 22 题 判断 未作答

引入分治策略往往可以提升算法效率。一方面,分治策略减少了操作数量;另一方面,分治后有利于系统的并行优化。

(2 分)
GESP 五级 2024-09 · 判断 第7题 | 知识点 分治
第 23 题 判断 未作答

二分查找要求被搜索的序列是有序的,否则无法保证正确性。

(2 分)
GESP 五级 2024-09 · 判断 第8题 | 知识点 二分查找
第 24 题 判断 未作答

在 C++ 语言中,递归的实现方式通常会占用更多的栈空间,可能导致栈溢出。

(2 分)
GESP 五级 2024-09 · 判断 第9题 | 知识点 递归、递归函数
第 25 题 判断 未作答

对于已经定义好的标准数学函数 sin(x),应用程序中的语句 y=sin(sin(x)); 是一种递归调用。

(2 分)
GESP 五级 2024-09 · 判断 第10题 | 知识点 函数定义与调用、递归