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

GESP 五级 · 2024 真题

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

判 分 报 告

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

客 观 题

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

下面 C++ 代码用于求斐波那契数列,该数列第 1122 项为 11,以后各项均是前两项之和。函数 fibo() 属于( )。

01int fibo(int n) {
02    if (n <= 0)
03        return 0;
04    if (n == 1 || n == 2)
05        return 1;
06
07    int a = 1, b = 1, next;
08    for (int i = 3; i <= n; i++) {
09        next = a + b;
10        a = b;
11        b = next;
12    }
13    return next;
14}

(2 分)
GESP 五级 2024-06 · 单选 第1题 | 知识点 递推、递归
第 2 题 单选 未作答

下面 C++ 代码用于将输入金额换成最少币种组合方案,其实现算法是( )。

01#include <iostream>
02using namespace std;
03
04#define N_COINS 7
05int coins[N_COINS] = {100, 50, 20, 10, 5, 2, 1}; //货币面值,单位相同
06int coins_used[N_COINS];
07
08void find_coins(int money) {
09    for (int i = 0; i < N_COINS; i++) {
10        coins_used[i] = money / coins[i];
11        money = money % coins[i];
12    }
13    return;
14}
15int main() {
16    int money;
17    cin >> money;    //输入要换算的金额
18
19    find_coins(money);
20    for (int i = 0; i < N_COINS; i++)
21        cout << coins_used[i] << endl;
22
23    return 0;
24}

(2 分)
GESP 五级 2024-06 · 单选 第2题 | 知识点 贪心
第 3 题 单选 未作答

小杨采用如下双链表结构保存他喜欢的歌曲列表:

01struct dl_node {
02    string song;
03    dl_node* next;
04    dl_node* prev;
05};

小杨想在头指针为 head 的双链表中查找他喜欢的某首歌曲,采用如下查询函数,该操作的时间复杂度为( )。

01dl_node* search(dl_node* head, string my_song) {
02    dl_node* temp = head;
03    while (temp != nullptr) {
04        if (temp->song == my_song)
05            return temp;
06        temp = temp->next;
07    }
08    return nullptr;
09}

(2 分)
GESP 五级 2024-06 · 单选 第3题 | 知识点 双向链表、时间复杂度
第 4 题 单选 未作答

在双向链表头部插入一个新节点,为了保持链表结构正确,横线上应填入的代码为( )。

01void insert(dl_node *head, string my_song) {
02    p = new dl_node;
03    p->song = my_song;
04    p->prev = nullptr;
05    p->next = head;
06
07    if (head != nullptr) {
08        ____________ // 在此处填入代码
09    }
10    head = p;
11}

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

下面是根据欧几里得算法编写的函数,它计算的是 ab 的( )。

01int gcd(int a, int b) {
02    while (b != 0) {
03        int temp = b;
04        b = a % b;
05        a = temp;
06    }
07    return a;
08}

(2 分)
GESP 五级 2024-06 · 单选 第5题 | 知识点 最大公约数、while循环
第 6 题 单选 未作答

欧几里得算法还可以写成如下形式:下面有关说法,错误的是( )。

01int gcd(int a, int b) {
02    return b == 0 ? a : gcd(b, a % b);
03}

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

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

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

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

线性筛法(欧拉筛)求小于等于 n 的所有素数,其时间复杂度是( )。

(2 分)
GESP 五级 2024-06 · 单选 第8题 | 知识点 欧拉筛、时间复杂度
第 9 题 单选 未作答

为了正确实现快速排序,下面横线上的代码应为( )。

01void qsort(vector<int>& arr, int left, int right) {
02    int i, j, mid;
03    int pivot;
04
05    i = left;
06    j = right;
07    mid = (left + right) / 2; // 计算中间元素的索引
08    pivot = arr[mid]; // 选择中间元素作为基准值
09
10    do {
11        while (arr[i] < pivot) i++;
12        while (arr[j] > pivot) j--;
13        if (i <= j) {
14            swap(arr[i], arr[j]); // 交换两个元素
15            i++; j--;
16        }
17    } ____________; // 在此处填入代码
18    if (left < j) qsort(arr, left, j); // 对左子数组进行快速排序
19    if (i < right) qsort(arr, i, right); // 对右子数组进行快速排序
20}

(2 分)
GESP 五级 2024-06 · 单选 第9题 | 知识点 快速排序、程序补全
第 10 题 单选 未作答

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

(2 分)
GESP 五级 2024-06 · 单选 第10题 | 知识点 分治
第 11 题 单选 未作答

根据下述二分查找法,在排好序的数组 1,3,6,9,17,31,39,52,61,79,81,90,961, 3, 6, 9, 17, 31, 39, 52, 61, 79, 81, 90, 96 中查找数值 8282,和 8282 比较的数组元素分别是( )。

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

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

要实现一个高精度减法函数,则下面代码中加划线应该填写的代码为( )。

01//假设a和b均为正数,且a表示的数比b大
02vector<int> minus(vector<int> a, vector<int> b) {
03    vector<int> c;
04    int len1 = a.size();
05    int len2 = b.size();
06    int i, t;
07
08    for (i = 0; i < len2; i++) {
09        if (a[i] < b[i]) {   //借位
10            ____________    // 在此处填入代码
11            a[i] += 10;
12        }
13        t = a[i] - b[i];
14        c.push_back(t);
15    }
16
17    for (; i < len1; i++)
18        c.push_back(a[i]);
19
20    len3 = c.size();
21    while (c[len3 - 1] == 0) {//去除前导0
22        c.pop_back();
23        len3--;
24    }
25    return c;
26}

(2 分)
GESP 五级 2024-06 · 单选 第12题 | 知识点 高精度、程序补全
第 13 题 单选 未作答

AB 是两个长度为 n 的有序数组,现将 AB 合并成一个有序数组,归并排序算法在最坏情况下至少要做( )次比较。

(2 分)
GESP 五级 2024-06 · 单选 第13题 | 知识点 归并排序、排序复杂度
第 14 题 单选 未作答

给定如下函数:

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

则当 n=7n = 7 时,函数返回值为( )。

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

给定如下递归函数(含输出打印):

01int fun(int n) {
02    cout << n << " ";
03    if (n == 1) return 1;
04    if (n == 2) return 2;
05    return fun(n - 2) + fun(n - 1);
06}

则当 n=4n = 4 时,屏幕上输出序列为( )。

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

如果将双向链表的最后一个结点的下一项指针指向第一个结点,第一个结点的前一项指针指向最后一个结点,则该双向链表构成循环链表。

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

数组和链表都是线性表,链表的优点是插入删除不需要移动元素,并且能随机查找。

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

链表的存储空间物理上可以连续,也可以不连续。

(2 分)
GESP 五级 2024-06 · 判断 第3题 | 知识点 单向链表
第 19 题 判断 未作答

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

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

唯一分解定理表明任何一个大于 11 的整数都可以唯一地表示为一系列质数的乘积,即质因数分解是唯一的。

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

贪心算法通过每一步选择局部最优解来获得全局最优解,但并不一定能找到最优解。

(2 分)
GESP 五级 2024-06 · 判断 第6题 | 知识点 贪心
第 22 题 判断 未作答

归并排序和快速排序都采用递归实现,也都是不稳定排序。

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

插入排序有时比快速排序时间复杂度更低。

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

在进行全国人口普查时,将其分解为对每个省市县乡来进行普查和统计。这是典型的分治策略。

(2 分)
GESP 五级 2024-06 · 判断 第9题 | 知识点 分治
第 25 题 判断 未作答

在下面 C++ 代码中,由于删除了变量 ptr,因此 ptr 所对应的数据也随之删除,故执行下述代码时,将报错。

01int* ptr = new int(10);
02cout << *ptr << endl;
03delete ptr;
04cout << ptr << endl;

(2 分)
GESP 五级 2024-06 · 判断 第10题 | 知识点 指针、程序阅读与输出推断