2025年9月CCF GESP C++五级单选题(共15题,每题2分,满分30分)
- 以下哪种情况使用链表比数组更合适?( )
{{ select(1) }}
- 数据量固定且读多写少
- 需要频繁在中间或开头插入、删除元素
- 需要高效随机访问元素
- 存储空间必须连续
- 单链表删除所有值等于val的结点的removeElements函数,横线处应填写( )?
{{ select(2) }}
- Node* del = cur; cur = del->next; delete del;
- Node* del = cur->next; cur->next = del; delete del;
- Node* del = cur->next; cur->next = del->next; delete del;
- Node* del = cur->next; delete del; cur->next = del->next;

- Floyd快慢指针法判断单链表是否有环的hasCycle函数,横线处应填写( )?
{{ select(3) }}
- slow = slow->next; fast = fast->next->next;
- slow = fast->next; fast = slow->next->next;
- slow = slow->next; fast = slow->next->next;
- slow = fast->next; fast = fast->next->next;

- 判断正整数是否为完全数的isPerfectNumber函数,横线处应填写( )?
{{ select(4) }}
- i <= n
- i*i <= n
- i <= n/2
- i < n

- 计算两个正整数最大公约数的gcd0函数,横线处应填写( )?
{{ select(5) }}

- 埃拉托斯特尼筛法的sieve函数,横线处应填入( )?
{{ select(6) }}

- 线性筛法的linearSieve函数,横线处应填入( )?
{{ select(7) }}
- i%p == 0
- p%i == 0
- i == p
- i*p == n

- 关于埃氏筛和线性筛的比较,说法错误的是( )?
{{ select(8) }}
- 埃氏筛可能会对同一个合数进行多次标记
- 线性筛的理论时间复杂度更优,所以线性筛的速度往往优于埃氏筛
- 线性筛保证每个合数只被其最小质因子筛到一次
- 对于常见范围(n ≤ 10⁷),埃氏筛因实现简单、常数较小,速度往往优于线性筛
- 唯一分解定理描述的是( )?
{{ select(9) }}
- 每个整数都能表示为任意素数的乘积
- 每个大于1的整数能唯一分解为素数幂乘积(忽略顺序)
- 合数不能分解为素数乘积
- 素数只有两个因子:1和自身
- 查找nxn有序矩阵中第k小元素的kthSmallest函数,两处横线上应分别填写( )?
{{ select(10) }}
- hi = mid - 1; lo = mid + 1;
- hi = mid; lo = mid;
- hi = mid; lo = mid + 1;
- hi = mid + 1; lo = mid;

- 关于快速排序算法的说法,错误的是( )?
{{ select(11) }}
- 快速排序实践中通常比归并排序更高效,因常数小、支持就地排序
- 平均情况下时间复杂度为 (O(n log n))
- 最差情况下时间复杂度为 (O(n²))
- 划分函数中“从右往左查找”与“从左往右查找”的顺序可以交换

- 归并排序的merge函数,横线处应填写( )?
{{ select(12) }}
- i < mid
- j < right
- i <= mid
- j <= right

- 安排最多不重叠电影的maxMovies函数,两处横线上应分别填写( )?
{{ select(13) }}
- a[0] < b[0] 和 lastEnd
- a[1] < b[1] 和 lastEnd
- a[0] < b[0] 和 movies[i][0]
- a[1] < b[1] 和 movies[i][0]

- 分治实现查找最大连续子数组和的代码,说法错误的是( )?
{{ select(14) }}
- 上述代码采用分治算法实现
- 上述代码采用贪心算法
- 上述代码时间复杂度为 (O(n log n))
- 上述代码采用递归方式实现

- 对非负整数数组执行+1操作的plusOne函数,横线处应填写( )?
{{ select(15) }}
- digits[i] = 0;
- digits[i] = 9;
- digits[i] = 1;
- digits[i] = 10;
