#3644. C++ 算法能力挑战赛(CSP-J / GESP 6级 专项模拟卷)

C++ 算法能力挑战赛(CSP-J / GESP 6级 专项模拟卷)

第1题

在C++中,若 int a = 7, b = 3;,则表达式 a / ba % b 的值分别是( )。{{ select(1) }}

  • 21
  • 2.331
  • 22
  • 31

第2题

下列关于栈(Stack)和队列(Queue)的描述,正确的是( )。{{ select(2) }}

  • 栈是先进先出(FIFO)的线性表
  • 队列是后进先出(LIFO)的线性表
  • 栈的插入和删除操作通常在同一端进行
  • 队列的插入和删除操作通常在同一端进行

第3题

一棵完全二叉树共有 100 个节点,这棵二叉树的深度(根节点深度为1)是( )。{{ select(3) }}

  • 6
  • 7
  • 8
  • 9

第4题

某算法的时间复杂度为 O(NlogN)O(N \log N)。当 N=1000N=1000 时耗时 10ms,若 NN 增加到 10000,预计运行时间约为( )。{{ select(4) }}

  • 40ms
  • 100ms
  • 133ms
  • 1000ms

第5题

在C++中,关于引用(Reference)的说法,错误的是( )。{{ select(5) }}

  • 引用在定义时必须初始化
  • 引用一旦绑定到一个对象,就不能再绑定到其他对象
  • 对引用的修改会影响它所绑定的原变量
  • 可以定义指向引用的指针

第6题

使用"埃拉托斯特尼筛法"(埃氏筛)求 1 到 NN 之间所有素数,其时间复杂度接近( )。{{ select(6) }}

  • O(N)O(N)
  • O(NloglogN)O(N \log \log N)
  • O(NN)O(N \sqrt{N})
  • O(N2)O(N^2)

第7题

快速排序最坏情况下时间复杂度为 O(N2)O(N^2),为避免最坏情况,常采用的优化策略是( )。{{ select(7) }}

  • 总是选取第一个元素作为基准
  • 总是选取最后一个元素作为基准
  • 随机选取基准或"三数取中"法
  • 增加额外的辅助数组

第8题

循环队列容量为 MAX_SIZE(最多存放 MAX_SIZE-1 个元素),队头指针 front,队尾指针 rear,判断队列已满的条件是( )。{{ select(8) }}

  • front == rear
  • (rear + 1) % MAX_SIZE == front
  • rear == MAX_SIZE - 1
  • front == 0 && rear == MAX_SIZE - 1

第9题

下面代码用辗转相除法求最大公约数,横线处应填( )。

int gcd(int a, int b) {
    while (b != 0) {
        // 横线处
    }
    return a;
}

{{ select(9) }}

  • int temp = b; b = a % b; a = temp;
  • int temp = a; a = b; b = temp % a;
  • b = a % b; a = b;
  • a = a % b; b = a;

第10题

在解决"0/1背包问题"时,用一维数组 dp[j] 优化空间,内层循环遍历背包容量时必须采用( )。{{ select(10) }}

  • 从大到小遍历(从背包最大容量到当前物品重量)
  • 从小到大遍历(从当前物品重量到背包最大容量)
  • 遍历顺序不影响最终结果
  • 只能遍历到背包最大容量的一半

第11题

给定一个序列,归并排序无论初始状态如何,时间复杂度始终稳定在( )。{{ select(11) }}

  • O(N)O(N)
  • O(NlogN)O(N \log N)
  • O(N2)O(N^2)
  • O(2N)O(2^N)

第12题

下列关于哈夫曼树(Huffman Tree)性质的说法,错误的是( )。{{ select(12) }}

  • 哈夫曼树中不存在度为 1 的结点
  • 权值越大的叶子结点离根节点越近
  • 哈夫曼编码是一种前缀编码
  • 给定一组权值,构造出的哈夫曼树形态一定是唯一的

第13题

在C++中,表达式 13 ^ 5(按位异或)的计算结果是( )。{{ select(13) }}

  • 8
  • 18
  • 12
  • 17

第14题

对序列 {12, 13, 11, 18, 60, 35} 建立初始大根堆,堆顶元素是( )。{{ select(14) }}

  • 12
  • 35
  • 60
  • 18

第15题

下列关于二分查找前提条件的描述,最准确的是( )。{{ select(15) }}

  • 数据必须采用链式存储结构
  • 数据必须是有序排列的
  • 数据元素必须是整数
  • 数据必须采用顺序存储结构且有序

第16题

栈是一种"先进先出"(FIFO)的线性数据结构。{{ select(16) }}

  • 正确(√)
  • 错误(×)

第17题

在二叉树中,叶子节点(度为0)的数量一定等于度为2的节点数量加1。{{ select(17) }}

  • 正确(√)
  • 错误(×)

第18题

C++中,全局变量的作用域是整个程序,局部变量的作用域仅限于定义它的函数或代码块内。{{ select(18) }}

  • 正确(√)
  • 错误(×)

第19题

深度优先搜索(DFS)通常使用队列实现,广度优先搜索(BFS)通常使用栈实现。{{ select(19) }}

  • 正确(√)
  • 错误(×)

第20题

快速排序是一种稳定的排序算法。{{ select(20) }}

  • 正确(√)
  • 错误(×)

第21题

在0/1背包问题中,每件物品只能选择一次,要么放入背包,要么不放入。{{ select(21) }}

  • 正确(√)
  • 错误(×)

第22题

含有 NN 个节点的完全二叉树,其深度为 log2N+1\lfloor \log_2 N \rfloor + 1。{{ select(22) }}

  • 正确(√)
  • 错误(×)

第23题

哈夫曼编码是一种定长编码,所有字符的编码长度都相同。{{ select(23) }}

  • 正确(√)
  • 错误(×)

第24题

在无向图的邻接矩阵表示法中,该矩阵一定是对称矩阵。{{ select(24) }}

  • 正确(√)
  • 错误(×)

第25题

动态规划(DP)的核心思想是将复杂问题分解为相互独立的子问题来求解。{{ select(25) }}

  • 正确(√)
  • 错误(×)