#19. CSP-J 2026 第一轮模拟赛(第 09 套)

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

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

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

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

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

第 1 题(2 分)

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

{{ select(1) }}

  • 1000000
  • 1000010
  • 111111
  • 1000001

第 2 题(2 分)

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

{{ select(2) }}

  • 93
  • 87
  • 99
  • 79

第 3 题(2 分)

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

{{ select(3) }}

  • 30
  • 31
  • 29
  • 33

第 4 题(2 分)

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

{{ select(4) }}

  • 320
  • 160
  • 640
  • 2560

第 5 题(2 分)

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

{{ select(5) }}

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

第 6 题(2 分)

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

{{ select(6) }}

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

第 7 题(2 分)

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

{{ select(7) }}

  • 栈为空
  • 14
  • 12
  • 16

第 8 题(2 分)

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

{{ select(8) }}

  • 26
  • 48
  • 25
  • 24

第 9 题(2 分)

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

{{ select(9) }}

  • 13
  • 15
  • 14
  • 105

第 10 题(2 分)

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

{{ select(10) }}

  • 平均时间复杂度为 O(n log n),最坏可达到 O(n²)。
  • 它不能用于整数序列。
  • 它在任何情况下都只需 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(log n)
  • O(n)
  • O(2ⁿ)
  • O(n²)

第 13 题(2 分)

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

{{ select(13) }}

  • 30
  • 210
  • 32768
  • 105

第 14 题(2 分)

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

{{ select(14) }}

  • 15
  • 14
  • 17
  • 12

第 15 题(2 分)

解决“在有序数组中不断舍弃一半搜索区间”时,最符合描述的方法是( )。

{{ select(15) }}

  • 选择排序
  • 深度优先搜索(DFS)
  • 枚举所有排列
  • 二分查找

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

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

程序 1:最长连续字符段(第 16~21 题)

输入为非空字符串。

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

int main() {
    string s;
    cin >> s;
    int best = 1, cur = 1;
    char who = s[0];
    for (int i = 1; i < (int) s.size(); ++i) {
        if (s[i] == s[i - 1])
            ++cur;
        else
            cur = 1;
        if (cur > best) {
            best = cur;
            who = s[i];
        }
    }
    cout << who << " " << best << "\n";
}

第 16 题(1 分)

程序寻找最长连续相同字符段。

{{ select(16) }}

  • T
  • F

第 17 题(1.5 分)

若有多个最长段,程序输出最后出现的最长段字符。

{{ select(17) }}

  • T
  • F

第 18 题(1.5 分)

输入字符串不能为空,否则访问 s[0] 有问题。

{{ select(18) }}

  • T
  • F

第 19 题(3 分)

输入:

aabbbccbbb

输出是( )。

{{ select(19) }}

  • b 6
  • b 3
  • c 2
  • a 2

第 20 题(3 分)

输入:

xyz

输出是( )。

{{ select(20) }}

  • z 1
  • z 3
  • x 1
  • x 3

第 21 题(3 分)

程序的时间复杂度为( )。

{{ select(21) }}

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

程序 2:后继指针遍历(第 22~27 题)

0 表示链结束。

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

int main() {
    int n, s;
    cin >> n >> s;
    vector<int> nxt(n + 1);
    for (int i = 1; i <= n; i++)
        cin >> nxt[i];
    vector<int> vis(n + 1, 0);
    int cnt = 0;
    while (s != 0 && !vis[s]) {
        vis[s] = 1;
        ++cnt;
        s = nxt[s];
    }
    cout << cnt << " " << s << "\n";
}

第 22 题(1.5 分)

nxt 数组可看作每个结点唯一指向的下一个结点。

{{ select(22) }}

  • T
  • F

第 23 题(1.5 分)

vis 用于防止进入环后无限循环。

{{ select(23) }}

  • T
  • F

第 24 题(1.5 分)

输出的 s 一定为0。

{{ select(24) }}

  • T
  • F

第 25 题(3 分)

输入:

5 1
2 3 4 5 0

输出是( )。

{{ select(25) }}

  • 4 0
  • 5 1
  • 4 5
  • 5 0

第 26 题(3 分)

输入:

4 1
2 3 2 0

输出是( )。

{{ select(26) }}

  • 2 2
  • 4 0
  • 3 2
  • 3 0

第 27 题(3 分)

循环最多执行( )次。

{{ select(27) }}

  • n
  • log n
  • 1

程序 3:递归回文判断(第 28~33 题)

输入为非空字符串。

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

bool pal(const string &s, int l, int r) {
    if (l >= r)
        return true;
    if (s[l] != s[r])
        return false;
    return pal(s, l + 1, r - 1);
}

int main() {
    string s;
    cin >> s;
    cout << (pal(s, 0, s.size() - 1) ? "YES" : "NO") << "\n";
}

第 28 题(1.5 分)

函数 pal 递归判断区间 s[l..r] 是否回文。

{{ select(28) }}

  • T
  • F

第 29 题(1.5 分)

长度0或1的区间被视为回文。

{{ select(29) }}

  • T
  • F

第 30 题(1.5 分)

每次递归只移动左端点。

{{ select(30) }}

  • T
  • F

第 31 题(3 分)

输入:

abccba

输出是( )。

{{ select(31) }}

  • 6
  • 0
  • YES
  • NO

第 32 题(3 分)

输入:

abca

第一次字符比较结果是( )。

{{ select(32) }}

  • 相等
  • 越界
  • 没有比较
  • 不等

第 33 题(3 分)

时间复杂度为( )。

{{ select(33) }}

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

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

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

完善程序(一):计数排序(第 34~38 题)

功能说明: 对取值范围为 0~100 的整数序列进行升序排序。

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

int main() {
    int n;
    cin >> n;
    int cnt[101] = {};
    for (int i = 0, x; i < n; ++i) {
        cin >> x;
        ________(1)________;
    }
    for (int x = 0; x <= 100; ++x) {
        while (________(2)________) {
            cout << ________(3)________ << ' ';
            ________(4)________;
        }
    }
    return ________(5)________;
}

第 34 题(3 分)

空(1)应填入( )。

{{ select(34) }}

  • x++
  • cnt[x]++
  • cnt[i]++
  • cnt[0]++

第 35 题(3 分)

空(2)应填入( )。

{{ select(35) }}

  • n>0
  • cnt[x]==0
  • cnt[x]>0
  • x<n

第 36 题(3 分)

空(3)应填入( )。

{{ select(36) }}

  • i
  • n
  • cnt[x]
  • x

第 37 题(3 分)

空(4)应填入( )。

{{ select(37) }}

  • n--
  • cnt[x]--
  • cnt[x]++
  • x++

第 38 题(3 分)

空(5)应填入( )。

{{ select(38) }}

  • 0
  • n
  • cnt[0]
  • 1

完善程序(二):子集和判定(第 39~43 题)

功能说明: 给定若干正整数,判断是否存在一个子集,使其中元素之和等于 T

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

int n, T, a[25];

bool dfs(int p, int sum) {
    if (sum == T)
        return ________(1)________;
    if (p == n || sum > T)
        return ________(2)________;
    if (dfs(________(3)________, sum))
        return true;
    return dfs(p + 1, ________(4)________);
}

int main() {
    cin >> n >> T;
    for (int i = 0; i < n; ++i)
        cin >> a[i];
    cout << (dfs(________(5)________, 0) ? "YES" : "NO") << '\n';
    return 0;
}

第 39 题(3 分)

空(1)应填入( )。

{{ select(39) }}

  • sum
  • 0
  • true
  • false

第 40 题(3 分)

空(2)应填入( )。

{{ select(40) }}

  • T
  • p
  • true
  • false

第 41 题(3 分)

空(3)应填入( )。

{{ select(41) }}

  • n
  • p
  • 0
  • p+1

第 42 题(3 分)

空(4)应填入( )。

{{ select(42) }}

  • a[p]
  • sum+a[p]
  • T-sum
  • sum

第 43 题(3 分)

空(5)应填入( )。

{{ select(43) }}

  • 0
  • 1
  • n
  • T