#3232. 东方茂 2026 CSPJ 初赛模拟题
东方茂 2026 CSPJ 初赛模拟题
东方茂 2026 CSPJ 初赛模拟题
全卷共 26 题,满分 100 分。第 16、17 题为判断题;其余题目均为单项选择题。
一、单项选择题
1. 八进制数 (7042)₈ 转化为十六进制数是( )。
{{ select(1) }}
(3521)₁₆(F22)₁₆(E22)₁₆(111000100010)₁₆
2. 设栈 S 和队列 Q 初始状态为空,元素 a1, a2, ..., a6 依次通过栈 S,一个元素出栈后就进入队列 Q。若出队的顺序分别是 a2, a1, a3, a6, a5, a4,则栈 S 的容量至少是( )。
{{ select(2) }}
- 2
- 5
- 3
- 4
3. 逻辑表达式( )的值与变量 A 的真假无关。
{{ select(3) }}
(A ∧ B) ∨ (¬A ∧ B)(A ∨ B) ∧ ¬A(A ∨ B) ∧ ¬B(A ∨ B) ∧ ¬A ∧ B
4. n 是一个三位数,那么 n 的十位数字为( )。
{{ select(4) }}
(n % 100) / 10(n / 100) % 10(n / 100) % 100(n % 10) / 10
5. 基于比较的排序时间复杂度的下限是( ),其中 n 表示待排序的元素个数。
{{ select(5) }}
O(n²)O(n log₂ n)O(n)O(log₂ n)
6. 完全二叉树共有 2 × N - 1 个结点,则它的叶结点数是( )。
{{ select(6) }}
N - 12 × N2 × N - 1N
7. 45 和 30 的最小公倍数是( )。
{{ select(7) }}
- 45
- 30
- 90
- 180
8. 一棵 7 个结点的二叉树的中序遍历为 ABDGECF,先序遍历为 DBACEGF,后序遍历为( )。
{{ select(8) }}
ABCDEFGDGBEFACGBEACFDABGEFCD
9. 一个有 n 个顶点的强连通图最少有( )条边。
{{ select(9) }}
nn + 1n - 1n × (n - 1)
10. 若有如下程序段,其中 s、a、b、c 均已定义为整型变量,且 a、c 均已赋值(c > 0)。
s = a;
for (b = 1; b <= c; b++)
s = s - 1;
则与上述程序段功能等价的赋值语句是( )。
{{ select(10) }}
s = a - b;s = s - c;s = a - c;s = b - c;
11. 7 个人分乘两辆不同的汽车,每辆车最多坐 4 人,则不同的乘车方法数为( )。
{{ select(11) }}
- 40
- 50
- 70
- 60
12. 以下关于图的不正确说法是( )。
{{ select(12) }}
- 所有顶点的度数之和不一定等于边数的 2 倍
- 所有顶点的度数之和等于边数的 2 倍
- 在有向图中,顶点的入度之和等于出度之和
- 任意一个图一定有偶数个度数为奇数的顶点
13. 定义一个数是“好的”:当且仅当这个数是一个六位数(允许有前导零),并且其中含有数字 9。那么符合“好的”条件的数的个数是( )。
{{ select(13) }}
- 531441
- 1000000
- 99999
- 468559
14. 下列叙述中正确的是( )。
{{ select(14) }}
- 二叉树是线性结构
- 栈与队列是非线性结构
- 线性表是线性结构
- 线性链表是非线性结构
15. 现有八人排成一排照相,其中甲、乙、丙三人两两之间都不能相邻,排法有( )种。
{{ select(15) }}
A(6, 3) × A(5, 5)A(8, 8) - A(6, 6) × A(3, 3)A(5, 3) × A(3, 3)A(8, 8) - A(6, 4)
二、阅读程序
阅读下面程序,完成第 16~21 题。
#include <bits/stdc++.h>
using namespace std;
int main() {
int num = 0;
cin >> num; // 保证 num >= 100,且在 int 范围内
int max_primedivisor = 0;
int cnt = 1;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
int tmp = 1;
while (num % i == 0) num /= i, tmp++;
max_primedivisor = max(max_primedivisor, i);
cnt *= tmp;
}
}
max_primedivisor = max(max_primedivisor, num);
if (num > 1) cnt *= 2;
cout << max_primedivisor << " " << cnt << "\n";
return 0;
}
16. 代码中 max_primedivisor = max(max_primedivisor, num); 这句话去掉后,对答案没有影响。( )
{{ select(16) }}
- 正确(T)
- 错误(F)
17. 当读入的 num = p × q,其中 p < q,且 p、q 为质数时,for 循环中 i 遍历到 q 时退出循环。( )
{{ select(17) }}
- 正确(T)
- 错误(F)
18. 该算法的最坏时间复杂度为( )。
{{ select(18) }}
O(log₂ num)O(√num)O(num)O(num√num)
19. 当读入 2021 时,输出为( )。
{{ select(19) }}
43 243 447 247 4
20. 当读入的数 num = p × p × p × q × q × r × r × s × t 时,其中 p < q < r < s < t,且 p、q、r、s、t 均为质数,则输出的第二个数为( )。
{{ select(20) }}
- 144
- 9
- 12
- 不确定
21. 在最好的情况下,时间复杂度为( )。
{{ select(21) }}
O(√num)O(num)O(num√num)O(log num)
三、完善程序
阅读下面题目,完成第 22~26 题。
输入月份 m(1 ≤ m ≤ 12),按一定格式打印 2015 年第 m 月的月历。例如,2015 年 1 月的月历打印效果如下(第一列为周日):
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
#include <iostream>
using namespace std;
const int dayNum[] = {-1, 31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31};
int m, offset, i;
int main() {
cin >> m;
cout << "S\tM\tT\tW\tT\tF\tS" << endl;
// '\t' 为 Tab 制表符
①;
for (i = 1; i < m; i++)
offset = ②;
for (i = 0; i < offset; i++)
cout << '\t';
for (i = 1; i <= ③; i++) {
cout << ④;
if (i == dayNum[m] || ⑤ == 0)
cout << endl;
else
cout << '\t';
}
return 0;
}
22. ① 处应填( )。
{{ select(22) }}
offset = 0offset = 1offset = 3offset = 4
23. ② 处应填( )。
{{ select(23) }}
dayNum[i]offset + dayNum[i](offset + dayNum[i]) % 7(offset + dayNum[i - 1]) % 7
24. ③ 处应填( )。
{{ select(24) }}
mdayNum[m]offsetoffset + dayNum[i]
25. ④ 处应填( )。
{{ select(25) }}
ii + 1i - 1dayNum[i]
26. ⑤ 处应填( )。
{{ select(26) }}
offset + i(offset + i) % 7offset + dayNum[i](offset + dayNum[i]) % 7