#3655. C++ 算法能力挑战赛 · 单项选择题(CSP-J / GESP 6级)
C++ 算法能力挑战赛 · 单项选择题(CSP-J / GESP 6级)
单项选择题:共 15 题,每题 2 分,满分 30 分。每题只有一个正确选项。
第1题
在C++中,若 int a = 7, b = 3;,则表达式 a / b 和 a % b 的值分别是( )。{{ select(1) }}
2和12.33和12和23和1
第2题
下列关于栈(Stack)和队列(Queue)的描述,正确的是( )。{{ select(2) }}
- 栈是先进先出(FIFO)的线性表
- 队列是后进先出(LIFO)的线性表
- 栈的插入和删除操作通常在同一端进行
- 队列的插入和删除操作通常在同一端进行
第3题
一棵完全二叉树共有 100 个节点,这棵二叉树的深度(根节点深度为1)是( )。{{ select(3) }}
- 6
- 7
- 8
- 9
第4题
某算法的时间复杂度为 。当 时耗时 10ms,若 增加到 10000,预计运行时间约为( )。{{ select(4) }}
- 40ms
- 100ms
- 133ms
- 1000ms
第5题
在C++中,关于引用(Reference)的说法,错误的是( )。{{ select(5) }}
- 引用在定义时必须初始化
- 引用一旦绑定到一个对象,就不能再绑定到其他对象
- 对引用的修改会影响它所绑定的原变量
- 可以定义指向引用的指针
第6题
使用"埃拉托斯特尼筛法"(埃氏筛)求 1 到 之间所有素数,其时间复杂度接近( )。{{ select(6) }}
第7题
快速排序最坏情况下时间复杂度为 ,为避免最坏情况,常采用的优化策略是( )。{{ select(7) }}
- 总是选取第一个元素作为基准
- 总是选取最后一个元素作为基准
- 随机选取基准或"三数取中"法
- 增加额外的辅助数组
第8题
循环队列容量为 MAX_SIZE(最多存放 MAX_SIZE-1 个元素),队头指针 front,队尾指针 rear,判断队列已满的条件是( )。{{ select(8) }}
front == rear(rear + 1) % MAX_SIZE == frontrear == MAX_SIZE - 1front == 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) }}
第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) }}
- 数据必须采用链式存储结构
- 数据必须是有序排列的
- 数据元素必须是整数
- 数据必须采用顺序存储结构且有序