#15. CSP-J 2026 第一轮模拟赛(第 05 套)

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

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

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

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

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

第 1 题(2 分)

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

{{ select(1) }}

  • 110101
  • 110100
  • 110110
  • 110011

第 2 题(2 分)

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

{{ select(2) }}

  • 59
  • 79
  • 73
  • 67

第 3 题(2 分)

设 int a=23, b=21, c=4; 表达式 (a & b) ^ c 的值是( )。

{{ select(3) }}

  • 18
  • 19
  • 21
  • 17

第 4 题(2 分)

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

{{ select(4) }}

  • 3840
  • 480
  • 960
  • 240

第 5 题(2 分)

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

{{ select(5) }}

  • 编译器只能检查程序运行结果是否正确,不能发现语法错误。
  • 源程序只要保存为 .cpp 文件,就一定可以被 CPU 直接执行。
  • 链接过程发生在程序每一次循环执行之后。
  • C++ 源程序通常需要先经过编译、链接,生成可执行程序后才能运行。

第 6 题(2 分)

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

{{ select(6) }}

  • HTTP 负责把域名转换为 IP 地址。
  • DNS 的主要作用之一是把域名解析为 IP 地址。
  • TCP 是一种图像压缩格式。
  • IP 地址只用于标识网页文件名。

第 7 题(2 分)

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

{{ select(7) }}

  • 栈为空
  • 10
  • 12
  • 8

第 8 题(2 分)

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

{{ select(8) }}

  • 32
  • 16
  • 18
  • 17

第 9 题(2 分)

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

{{ select(9) }}

  • 55
  • 11
  • 9
  • 10

第 10 题(2 分)

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

{{ select(10) }}

  • 它在任何情况下都只需 O(n) 时间。
  • 对接近有序的数据通常表现较好,并可以稳定实现。
  • 它不能用于整数序列。
  • 它一定需要 O(n²) 的额外存储空间。

第 11 题(2 分)

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

{{ select(11) }}

  • 5
  • 4
  • 31
  • 6

第 12 题(2 分)

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

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

{{ select(12) }}

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

第 13 题(2 分)

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

{{ select(13) }}

  • 22
  • 110
  • 55
  • 2048

第 14 题(2 分)

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

{{ select(14) }}

  • 13
  • 8
  • 11
  • 10

第 15 题(2 分)

解决“按当前局部最优选择逐步构造方案”时,最符合描述的方法是( )。

{{ select(15) }}

  • 贪心
  • 枚举所有排列
  • 选择排序
  • 深度优先搜索(DFS)

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

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

程序 1:偶数前缀和(第 16~21 题)

阅读程序并回答问题。

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

int main() {
    int n;
    cin >> n;
    long long sum = 0;
    int even = 0;
    for (int i = 0, x; i < n; ++i) {
        cin >> x;
        sum += x;
        if (sum % 2 == 0)
            ++even;
    }
    cout << even << "\n";
}

第 16 题(1 分)

程序统计前缀和为偶数的位置个数。

{{ select(16) }}

  • T
  • F

第 17 题(1.5 分)

程序统计原序列中偶数元素的个数。

{{ select(17) }}

  • T
  • F

第 18 题(1.5 分)

负数前缀和也可以用 sum%2 判断奇偶性。

{{ select(18) }}

  • T
  • F

第 19 题(3 分)

输入:

6
1 2 3 4 5 6

输出是( )。

{{ select(19) }}

  • 5
  • 3
  • 2
  • 4

第 20 题(3 分)

输入:

4
2 2 2 2

输出是( )。

{{ select(20) }}

  • 4
  • 0
  • 2
  • 3

第 21 题(3 分)

若所有输入都是奇数,n=7,则输出为( )。

{{ select(21) }}

  • 2
  • 7
  • 4
  • 3

程序 2:选择排序交换次数(第 22~27 题)

阅读程序。

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

int main() {
    int n;
    cin >> n;
    vector<int> a(n);
    for (int &x : a)
        cin >> x;
    int swaps = 0;
    for (int i = 0; i < n; i++) {
        int p = i;
        for (int j = i + 1; j < n; j++)
            if (a[j] < a[p])
                p = j;
        if (p != i) {
            swap(a[p], a[i]);
            ++swaps;
        }
    }
    cout << swaps << "\n";
}

第 22 题(1.5 分)

程序实现选择排序。

{{ select(22) }}

  • T
  • F

第 23 题(1.5 分)

无论输入如何,swaps 都等于 n。

{{ select(23) }}

  • T
  • F

第 24 题(1.5 分)

比较次数的数量级为 O(n²)。

{{ select(24) }}

  • T
  • F

第 25 题(3 分)

输入:

4
1 2 3 4

输出是( )。

{{ select(25) }}

  • 0
  • 1
  • 3
  • 4

第 26 题(3 分)

输入:

4
4 3 2 1

输出是( )。

{{ select(26) }}

  • 4
  • 3
  • 2
  • 1

第 27 题(3 分)

常见选择排序是否稳定?( )

{{ select(27) }}

  • 无法排序重复值
  • 稳定
  • 不稳定
  • 只对奇数稳定

程序 3:爬楼梯动态规划(第 28~33 题)

n≥0。

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

int main() {
    int n;
    cin >> n;
    vector<long long> dp(n + 2);
    dp[0] = 1;
    for (int i = 1; i <= n; i++) {
        dp[i] += dp[i - 1];
        if (i >= 2)
            dp[i] += dp[i - 2];
    }
    cout << dp[n] << "\n";
}

第 28 题(1.5 分)

程序计算每次走1级或2级台阶到达第n级的方案数。

{{ select(28) }}

  • T
  • F

第 29 题(1.5 分)

dp[0]=1 表示空路径有一种方案。

{{ select(29) }}

  • T
  • F

第 30 题(1.5 分)

dp[2]=1。

{{ select(30) }}

  • T
  • F

第 31 题(3 分)

输入 5,输出是( )。

{{ select(31) }}

  • 13
  • 16
  • 5
  • 8

第 32 题(3 分)

dp[i] 的递推式是( )。

{{ select(32) }}

  • dp[i-1]-dp[i-2]
  • dp[i-1]*2
  • dp[i/2]
  • dp[i-1]+dp[i-2]

第 33 题(3 分)

时间复杂度为( )。

{{ select(33) }}

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

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

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

完善程序(一):双指针统计(第 34~38 题)

功能说明: 在升序数组中,统计元素和不超过 S 的不同下标对数量。

#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;
    long long ans = 0;
    int r = ________(1)________;
    for (int l = 0; l < n; ++l) {
        while (l < r && ________(2)________)
            ________(3)________;
        if (l >= r)
            ________(4)________;
        ans += ________(5)________;
    }
    cout << ans << '\n';
    return 0;
}

第 34 题(3 分)

空(1)应填入( )。

{{ select(34) }}

  • n
  • 1
  • n-1
  • 0

第 35 题(3 分)

空(2)应填入( )。

{{ select(35) }}

  • a[l]+a[r]<S
  • a[l]+a[r]>S
  • l+r>S
  • a[l]==a[r]

第 36 题(3 分)

空(3)应填入( )。

{{ select(36) }}

  • ++l
  • ++r
  • ans++
  • --r

第 37 题(3 分)

空(4)应填入( )。

{{ select(37) }}

  • return 1
  • r=n-1
  • break
  • continue

第 38 题(3 分)

空(5)应填入( )。

{{ select(38) }}

  • r-l
  • n-r
  • 1
  • r+l

完善程序(二):选择排序(第 39~43 题)

功能说明: 将输入的整数按升序排列后输出。

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

int main() {
    int n;
    cin >> n;
    vector<int> a(n);
    for (int &x : a)
        cin >> x;
    for (int i = 0; i < n; ++i) {
        int p = ________(1)________;
        for (int j = ________(2)________; j < n; ++j) {
            if (________(3)________)
                p = j;
        }
        if (p != i)
            ________(4)________;
    }
    for (int x : a)
        ________(5)________;
    return 0;
}

第 39 题(3 分)

空(1)应填入( )。

{{ select(39) }}

  • n-1
  • a[i]
  • i
  • 0

第 40 题(3 分)

空(2)应填入( )。

{{ select(40) }}

  • i+1
  • i
  • n-1
  • 0

第 41 题(3 分)

空(3)应填入( )。

{{ select(41) }}

  • a[j]<a[p]
  • a[j]==i
  • j<p
  • a[j]>a[p]

第 42 题(3 分)

空(4)应填入( )。

{{ select(42) }}

  • swap(a[p],a[i])
  • p=i
  • sort(a.begin(),a.end())
  • a[p]=a[i]

第 43 题(3 分)

空(5)应填入( )。

{{ select(43) }}

  • cout<<x<<' '
  • cin>>x
  • return x
  • x++