#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 - 1
  • 2 × N
  • 2 × N - 1
  • N

7. 45 和 30 的最小公倍数是( )。

{{ select(7) }}

  • 45
  • 30
  • 90
  • 180

8. 一棵 7 个结点的二叉树的中序遍历为 ABDGECF,先序遍历为 DBACEGF,后序遍历为( )。

{{ select(8) }}

  • ABCDEFG
  • DGBEFAC
  • GBEACFD
  • ABGEFCD

9. 一个有 n 个顶点的强连通图最少有( )条边。

{{ select(9) }}

  • n
  • n + 1
  • n - 1
  • n × (n - 1)

10. 若有如下程序段,其中 sabc 均已定义为整型变量,且 ac 均已赋值(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,且 pq 为质数时,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 2
  • 43 4
  • 47 2
  • 47 4

20. 当读入的数 num = p × p × p × q × q × r × r × s × t 时,其中 p < q < r < s < t,且 pqrst 均为质数,则输出的第二个数为( )。

{{ select(20) }}

  • 144
  • 9
  • 12
  • 不确定

21. 在最好的情况下,时间复杂度为( )。

{{ select(21) }}

  • O(√num)
  • O(num)
  • O(num√num)
  • O(log num)

三、完善程序

阅读下面题目,完成第 22~26 题。

输入月份 m1 ≤ 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 = 0
  • offset = 1
  • offset = 3
  • offset = 4

23. ② 处应填( )。

{{ select(23) }}

  • dayNum[i]
  • offset + dayNum[i]
  • (offset + dayNum[i]) % 7
  • (offset + dayNum[i - 1]) % 7

24. ③ 处应填( )。

{{ select(24) }}

  • m
  • dayNum[m]
  • offset
  • offset + dayNum[i]

25. ④ 处应填( )。

{{ select(25) }}

  • i
  • i + 1
  • i - 1
  • dayNum[i]

26. ⑤ 处应填( )。

{{ select(26) }}

  • offset + i
  • (offset + i) % 7
  • offset + dayNum[i]
  • (offset + dayNum[i]) % 7