2024年3月CCF GESP C++五级单选题(共15题,每题2分,满分30分)
- 唯一分解定理描述的内容是( )?
{{ select(1) }}
- 任意整数都可以分解为素数的乘积
- 每个合数都可以唯一分解为一系列素数的乘积
- 两个不同的整数可以分解为相同的素数乘积
- 以上都不对
- 贪心算法的核心思想是( )?
{{ select(2) }}
- 在每一步选择中都做当前状态下的最优选择
- 在每一步选择中都选择局部最优解
- 在每一步选择中都选择全局最优解
- 以上都对
- 下面的C++代码片段用于计算阶乘,横线处应填入( )以实现正确的阶乘计算?
{{ select(3) }}
- return n * factorial(n - 1);
- return factorial(n - 1) / n;
- return n * factorial(n);
- return factorial(n / 2) * factorial(n / 2);

- 下面的代码片段用于在双向链表中删除一个节点,横线处应填入( )以正确实现相应功能?
{{ select(4) }}
- if (current->next != nullptr) current->next->prev = current->prev;
- current->prev->next = current->next;
- delete current->next;
- current->prev = current->next;

- 辗转相除法也被称为( )?
{{ select(5) }}
- 用于计算斐波那契数列的递归代码,其时间复杂度是( )?
{{ select(6) }}
- (O(1))
- (O(n))
- (O(2^n))
- (O(log n))

- 用于将两个高精度整数进行相加的代码,横线处应填入( )以正确实现相应功能?
{{ select(7) }}
- result = to_string(sum % 10) + result;
- result = to_string(carry % 10) + result;
- result = to_string(sum / 10) + result;
- result = to_string(sum % 10 + carry) + result;

- 给定序列:1,3,6,9,17,31,39,52,61,79,81,90,96,使用二分查找代码查找元素82时,最后输出的times值(循环次数)为( )?
{{ select(8) }}

- 用于判断一个正整数是否为素数的代码,需修改哪项以正确实现功能?( )
{{ select(9) }}
- num < 2 应该改为 num <= 2
- 循环条件 i * i < num 应该改为 i * i <= num
- 循环条件应该是 i <= num
- 循环体中应该是 if (num % i != 0)

- 在埃拉托斯特尼筛法中,要筛选出不大于n的所有素数,最外层循环应遍历的范围是( )?
{{ select(10) }}
- for (int i = 2; i <= n; ++i)
- for (int i = 1; i < n; ++i)
- for (int i = 2; i <= sqrt(n); ++i)
- for (int i = 1; i <= sqrt(n); ++i)

- 素数的线性筛法时间复杂度为( )?
{{ select(11) }}
- (O(n))
- (O(n log log n))
- (O(n log n))
- (O(n^2))
- 归并排序的基本思想是( )?
{{ select(12) }}
- 在快速排序中,选择的主元素(pivot)会影响算法的( )?
{{ select(13) }}
- 不影响
- 时间复杂度
- 空间复杂度
- 时间复杂度和空间复杂度
- 递归函数在调用自身时,必须满足( )以避免无限递归?
{{ select(14) }}
- 有终止条件
- 函数参数递减(或递增)
- 函数返回值固定
- 以上都对
- 假设给定链表包含元素5,调用searchValue(head, 5)函数的返回值为( )?
{{ select(15) }}
