#267. GESP2024091五级选择题

GESP2024091五级选择题

2024年9月CCF GESP C++五级单选题(共15题,每题2分,满分30分)

  1. 下面关于链表和数组的描述,错误的是( )? {{ select(1) }}
  • 数组大小固定,链表大小可动态调整
  • 数组支持随机访问,链表只能顺序访问
  • 存储相同数目的整数,数组比链表所需的内存多
  • 数组插入和删除元素效率低,链表插入和删除元素效率高
  1. 通过( )操作,能完成在双向循环链表结点p之后插入结点s的功能(其中next域为结点的直接后继,prev域为结点的直接前驱)? {{ select(2) }}
  • p->next->prev = s; s->prev = p; p->next = s; s->next = p->next;
  • p->next->prev = s; p->next = s; s->prev = p; s->next = p->next;
  • s->prev = p; s->next = p->next; p->next = s; p->next->prev = s;
  • s->next = p->next; p->next->prev = s; s->prev = p; p->next = s;
  1. 对sumA和sumB两个函数,说法错误的是( )? {{ select(3) }}
  • sumA体现了迭代的思想
  • sumB采用的是递归方式
  • sumB函数比sumA的时间效率更高
  • 两个函数实现的功能相同

4. 函数fun(int a, int b)中,fun(20, 12)的返回值为( )? {{ select(4) }}

  • 20
  • 12
  • 4
  • 2

  1. 实现素数表埃拉托斯特尼筛法的代码,横线处应填的最佳代码是( )? {{ select(5) }}
  • for (int j = i; j <= n; j++)
  • for (int j = i * i; j <= n; j++)
  • for (int j = i * i; j <= n; j += i)
  • for (int j = i; j <= n; j += i)

  1. 实现素数表线性筛法的代码,横线处应填的代码是( )? {{ select(6) }}
  • for (int j=0;j<primes.size() && i*primes[j] <=n; j++)
  • for (int j=1;j<primes.size() && i*j<=n;j++)
  • for(int j=2;j<primes.size() && i*primes[j]<=n;j++)
  • 以上都不对

  1. 找出n的所有因数的函数,其时间复杂度是( )? {{ select(7) }}
  • (O(n^2))
  • (O(log n))
  • (O(\sqrt{n}log n))
  • (O(n))

  1. 计算x的n次方的快速幂函数,其时间复杂度为( )? {{ select(8) }}
  • A. (O(n))
  • B. (O(n^2))
  • C. (O(log n))
  • D. (O(n log n))

  1. 快速排序算法输入长度为n的已排序数组,且总是选择第一个元素作为基准元素,以下描述正确的是( )? {{ select(9) }}
  • 快速排序对于此类输入的表现最好,因为数组已经排序
  • 快速排序对于此类输入的时间复杂度是 (O(n log n))
  • 快速排序对于此类输入的时间复杂度是 (O(n^2))
  • 快速排序无法对此类数组进行排序,因为数组已经排序
  1. 归并排序算法中,对长度为n的数组调用merge_sort(a, 0, n-1),排序过程中merge函数的递归调用次数大约是( )? {{ select(10) }}
  • O(1)
  • O(n)
  • O(log n)
  • O(n log n)

  1. 计算n个人过河所需船数的代码(每船最多载2人,承重100kg,体重数组已排序),采用的思想为( )? {{ select(11) }}
  • 枚举算法
  • 贪心算法
  • 迭代算法
  • 递归算法

  1. 关于分治算法,以下说法正确的是( )? {{ select(12) }}
  • 分治算法将问题分成子问题,然后分别解决子问题,最后合并结果
  • 归并排序不是分治算法的应用
  • 分治算法通常用于解决小规模问题
  • 分治算法的时间复杂度总是优于 (O(n log n))
  1. 使用二分查找法在有序数组1,3,6,9,17,31,39,52,61,79中查找数值31,循环while (left <= right)执行的次数为( )? {{ select(13) }}
  • 1
  • 2
  • 3
  • 4

  1. 以下关于高精度运算的说法错误的是( )? {{ select(14) }}
  • 高精度计算主要是用来处理大整数或需要保留多位小数的运算
  • 大整数除以小整数的处理步骤可以是,将被除数和除数对齐,从左到右逐位尝试将除数乘以某个数,通过减法得到新的被除数,并累加商
  • 高精度乘法的运算时间只与参与运算的两个整数中长度较长者的位数有关
  • 高精度加法运算的关键在于逐位相加并处理进位
  1. 当n=7时,函数fun(int n)的返回值为( )? {{ select(15) }}
  • 105
  • 840
  • 210
  • 420