#18. CSP-J 2026 第一轮模拟赛(第 08 套)

CSP-J 2026 第一轮模拟赛(第 08 套)

CSP-J 2026 第一轮模拟赛(第 08 套)

满分:100 分 建议用时:120 分钟

所有题目均为单项选择题。判断题中,T 表示正确,F 表示错误。未作答按 0 分计算。

一、单项选择题(共 15 题,每题 2 分,共 30 分)

第 1 题(2 分)

十进制整数 61 转换为二进制数,结果是( )。

{{ select(1) }}

  • 111110
  • 111100
  • 111111
  • 111101

第 2 题(2 分)

十六进制数 (52)₁₆ 对应的十进制数是( )。

{{ select(2) }}

  • 74
  • 82
  • 88
  • 94

第 3 题(2 分)

设 int a=26, b=27, c=3; 表达式 (a & b) ^ c 的值是( )。

{{ select(3) }}

  • 26
  • 27
  • 29
  • 25

第 4 题(2 分)

一幅 64×48 的黑白位图,每个像素只需 1 bit,不考虑文件头,至少需要( )字节存储。

{{ select(4) }}

  • 384
  • 192
  • 768
  • 3072

第 5 题(2 分)

关于程序的编译与运行,下列说法正确的是( )。

{{ select(5) }}

  • 链接过程发生在程序每一次循环执行之后。
  • 源程序只要保存为 .cpp 文件,就一定可以被 CPU 直接执行。
  • 编译器只能检查程序运行结果是否正确,不能发现语法错误。
  • 链接阶段会把目标文件与所需库代码组合成可执行文件。

第 6 题(2 分)

关于计算机网络,下列说法正确的是( )。

{{ select(6) }}

  • HTTP 只能在局域网中使用。
  • DNS 是一种排序算法。
  • UDP 是无连接的传输层协议,通常不保证可靠到达。
  • TCP 完全不需要建立连接。

第 7 题(2 分)

一个初始为空的栈依次执行 push(11)、push(13)、pop()、push(15),此时栈顶元素是( )。

{{ select(7) }}

  • 13
  • 11
  • 栈为空
  • 15

第 8 题(2 分)

一棵含 23 个结点的树共有( )条边。

{{ select(8) }}

  • 22
  • 24
  • 23
  • 44

第 9 题(2 分)

一个含 14 个顶点的无向连通图,边数至少为( )。

{{ select(9) }}

  • 91
  • 14
  • 12
  • 13

第 10 题(2 分)

关于选择排序,下列说法正确的是( )。

{{ select(10) }}

  • 它不能用于整数序列。
  • 它一定需要 O(n²) 的额外存储空间。
  • 它在任何情况下都只需 O(n) 时间。
  • 常见实现的时间复杂度为 O(n²),且通常不稳定。

第 11 题(2 分)

在含 15 个互不相同且已升序排列的元素中,用标准二分查找成功查找一个元素,最多进行( )次关键字比较。

{{ select(11) }}

  • 3
  • 5
  • 4
  • 15

第 12 题(2 分)

下面程序片段的时间复杂度是( )。

for (int i = 1; i <= n; i++)
    for (int j = 1; j <= i; j++)
        x++;

{{ select(12) }}

  • O(n)
  • O(2ⁿ)
  • O(n²)
  • O(log n)

第 13 题(2 分)

从 14 名同学中任选 2 名组成一组,共有( )种不同选法。

{{ select(13) }}

  • 28
  • 182
  • 91
  • 16384

第 14 题(2 分)

执行 int x=44, y=6; cout << x / y + x % y;,输出是( )。

{{ select(14) }}

  • 12
  • 9
  • 7
  • 10

第 15 题(2 分)

解决“把已经计算过的子问题答案保存起来避免重复计算”时,最符合描述的方法是( )。

{{ select(15) }}

  • 深度优先搜索(DFS)
  • 选择排序
  • 动态规划或记忆化
  • 枚举所有排列

二、阅读程序(共 18 题,共 40 分)

阅读下列程序。判断题请选择 TF,其他题请选择 ABCD

程序 1:双指针统计数对(第 16~21 题)

输入整数可重复,统计的是不同下标对。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, S;
    cin >> n >> S;
    vector<int> a(n);
    for (int &x : a)
        cin >> x;
    sort(a.begin(), a.end());
    long long ans = 0;
    int r = n - 1;
    for (int l = 0; l < n; ++l) {
        while (l < r && a[l] + a[r] > S)
            --r;
        if (l >= r)
            break;
        ans += r - l;
    }
    cout << ans << "\n";
}

第 16 题(1 分)

程序统计下标不同的无序数对,其元素和不超过 S。

{{ select(16) }}

  • T
  • F

第 17 题(1.5 分)

变量 r 在整个过程中只会向左移动。

{{ select(17) }}

  • T
  • F

第 18 题(1.5 分)

如果删除 sort,程序仍对任意输入正确。

{{ select(18) }}

  • T
  • F

第 19 题(3 分)

输入:

5 6
1 2 3 4 5

输出是( )。

{{ select(19) }}

  • 5
  • 7
  • 6
  • 4

第 20 题(3 分)

排序后双指针部分的时间复杂度为( )。

{{ select(20) }}

  • O(n²)
  • O(log n)
  • O(n)
  • O(2ⁿ)

第 21 题(3 分)

包含排序后的总时间复杂度为( )。

{{ select(21) }}

  • O(n)
  • O(n log n)
  • O(n²)
  • O(log n)

程序 2:约瑟夫环队列模拟(第 22~27 题)

n,k均为正整数。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, k;
    cin >> n >> k;
    queue<int> q;
    for (int i = 1; i <= n; i++)
        q.push(i);
    while (q.size() > 1) {
        for (int i = 1; i < k; i++) {
            q.push(q.front());
            q.pop();
        }
        q.pop();
    }
    cout << q.front() << "\n";
}

第 22 题(1.5 分)

程序模拟约瑟夫环,每次数到 k 的人出队。

{{ select(22) }}

  • T
  • F

第 23 题(1.5 分)

当 k=1 时,依次删除1,2,...,n-1,最后剩n。

{{ select(23) }}

  • T
  • F

第 24 题(1.5 分)

程序的队列永远不会为空。

{{ select(24) }}

  • T
  • F

第 25 题(3 分)

输入:

5 2

输出是( )。

{{ select(25) }}

  • 3
  • 2
  • 4
  • 5

第 26 题(3 分)

输入:

6 3

输出是( )。

{{ select(26) }}

  • 1
  • 4
  • 3
  • 2

第 27 题(3 分)

该直接模拟的时间复杂度大致为( )。

{{ select(27) }}

  • O(nk)
  • O(n)
  • O(2ⁿ)
  • O(n log n)

程序 3:快速幂(第 28~33 题)

假设结果不溢出。

#include <bits/stdc++.h>
using namespace std;

long long pw(long long a, long long b) {
    if (b == 0)
        return 1;
    long long t = pw(a, b / 2);
    if (b % 2)
        return t * t * a;
    return t * t;
}

int main() {
    long long a, b;
    cin >> a >> b;
    cout << pw(a, b) << "\n";
}

第 28 题(1.5 分)

函数使用递归快速幂。

{{ select(28) }}

  • T
  • F

第 29 题(1.5 分)

当 b 为奇数时结果多乘一个 a。

{{ select(29) }}

  • T
  • F

第 30 题(1.5 分)

递归深度为 O(b)。

{{ select(30) }}

  • T
  • F

第 31 题(3 分)

输入:

3 5

输出是( )。

{{ select(31) }}

  • 81
  • 243
  • 15
  • 729

第 32 题(3 分)

pw(a,0) 的返回值是( )。

{{ select(32) }}

  • 1
  • 未定义
  • 0
  • a

第 33 题(3 分)

若不考虑溢出,乘法次数数量级为( )。

{{ select(33) }}

  • O(2^b)
  • O(b)
  • O(log b)
  • O(1)

三、完善程序(共 10 题,每题 3 分,共 30 分)

阅读程序说明和代码。代码中的横线表示待填空位置,请从对应的四个选项中选择最合适的一项。

完善程序(一):最小公倍数(第 34~38 题)

功能说明: 输入两个正整数 ab,输出它们的最小公倍数。

#include <bits/stdc++.h>
using namespace std;

long long gcd(long long a, long long b) {
    while (________(1)________) {
        long long r = ________(2)________;
        a = ________(3)________;
        b = r;
    }
    return a;
}

int main() {
    long long a, b;
    cin >> a >> b;
    long long g = ________(4)________;
    cout << ________(5)________ << '\n';
    return 0;
}

第 34 题(3 分)

空(1)应填入( )。

{{ select(34) }}

  • a==b
  • b
  • a
  • b==1

第 35 题(3 分)

空(2)应填入( )。

{{ select(35) }}

  • a%b
  • b%a
  • a/b
  • a-b

第 36 题(3 分)

空(3)应填入( )。

{{ select(36) }}

  • a+b
  • r
  • b
  • a

第 37 题(3 分)

空(4)应填入( )。

{{ select(37) }}

  • gcd(a,b)
  • min(a,b)
  • a*b
  • a+b

第 38 题(3 分)

空(5)应填入( )。

{{ select(38) }}

  • g
  • a/g*b
  • a*b*g
  • a+b-g

完善程序(二):矩阵转置(第 39~43 题)

功能说明: 输出一个 n × m 矩阵的转置矩阵。

#include <bits/stdc++.h>
using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    vector<vector<int>> a(n, vector<int>(m));
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            cin >> ________(1)________;
    for (int j = 0; j < ________(2)________; ++j) {
        for (int i = 0; i < ________(3)________; ++i)
            cout << ________(4)________ << ' ';
        cout << ________(5)________;
    }
    return 0;
}

第 39 题(3 分)

空(1)应填入( )。

{{ select(39) }}

  • i+j
  • a[j][i]
  • a[i][j]
  • a[n][m]

第 40 题(3 分)

空(2)应填入( )。

{{ select(40) }}

  • m
  • n*m
  • n
  • 0

第 41 题(3 分)

空(3)应填入( )。

{{ select(41) }}

  • n
  • j
  • m
  • i

第 42 题(3 分)

空(4)应填入( )。

{{ select(42) }}

  • a[j][j]
  • a[i][i]
  • a[i][j]
  • a[j][i]

第 43 题(3 分)

空(5)应填入( )。

{{ select(43) }}

  • n
  • "\n"
  • m
  • 0