#283. GESP202509五级选择题

GESP202509五级选择题

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

  1. 以下哪种情况使用链表比数组更合适?( ) {{ select(1) }}
  • 数据量固定且读多写少
  • 需要频繁在中间或开头插入、删除元素
  • 需要高效随机访问元素
  • 存储空间必须连续
  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;

  1. 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;

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

  1. 计算两个正整数最大公约数的gcd0函数,横线处应填写( )? {{ select(5) }}
  • b
  • a
  • temp
  • a * b

  1. 埃拉托斯特尼筛法的sieve函数,横线处应填入( )? {{ select(6) }}
  • i
  • i+1
  • i*2
  • i*i

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

  1. 关于埃氏筛和线性筛的比较,说法错误的是( )? {{ select(8) }}
  • 埃氏筛可能会对同一个合数进行多次标记
  • 线性筛的理论时间复杂度更优,所以线性筛的速度往往优于埃氏筛
  • 线性筛保证每个合数只被其最小质因子筛到一次
  • 对于常见范围(n ≤ 10⁷),埃氏筛因实现简单、常数较小,速度往往优于线性筛
  1. 唯一分解定理描述的是( )? {{ select(9) }}
  • 每个整数都能表示为任意素数的乘积
  • 每个大于1的整数能唯一分解为素数幂乘积(忽略顺序)
  • 合数不能分解为素数乘积
  • 素数只有两个因子: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;

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

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

  1. 安排最多不重叠电影的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]

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

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