CSP-J 2026 第一轮模拟赛(第 02 套)
CSP-J 2026 第一轮模拟赛(第 02 套)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
CSP-J 2026 第一轮模拟赛(第 02 套)
满分:100 分 建议用时:120 分钟
所有题目均为单项选择题。判断题中,
T表示正确,F表示错误。未作答按 0 分计算。
一、单项选择题(共 15 题,每题 2 分,共 30 分)
第 1 题(2 分)
十进制整数 43 转换为二进制数,结果是( )。
{{ select(1) }}
101100101101101010101011
第 2 题(2 分)
十六进制数 (34)₁₆ 对应的十进制数是( )。
{{ select(2) }}
- 64
- 44
- 58
- 52
第 3 题(2 分)
设 int a=20, b=15, c=5; 表达式 (a & b) ^ c 的值是( )。
{{ select(3) }}
- 5
- 2
- 1
- 3
第 4 题(2 分)
一幅 96×48 的黑白位图,每个像素只需 1 bit,不考虑文件头,至少需要( )字节存储。
{{ select(4) }}
11525764608288
第 5 题(2 分)
关于程序的编译与运行,下列说法正确的是( )。
{{ select(5) }}
- 链接过程发生在程序每一次循环执行之后。
- 源程序只要保存为 .cpp 文件,就一定可以被 CPU 直接执行。
- 编译器的主要作用是把高级语言源程序转换为机器能够执行或进一步处理的目标代码。
- 编译器只能检查程序运行结果是否正确,不能发现语法错误。
第 6 题(2 分)
关于计算机网络,下列说法正确的是( )。
{{ select(6) }}
- UDP 一定比 TCP 可靠。
- HTTP 属于物理层协议。
- 路由器只能连接同一台计算机内部的设备。
- TCP 面向连接,并提供可靠的字节流传输。
第 7 题(2 分)
一个初始为空的栈依次执行 push(5)、push(7)、pop()、push(9),此时栈顶元素是( )。
{{ select(7) }}
- 9
- 栈为空
- 5
- 7
第 8 题(2 分)
一棵含 11 个结点的树共有( )条边。
{{ select(8) }}
- 20
- 12
- 10
- 11
第 9 题(2 分)
一个含 8 个顶点的无向连通图,边数至少为( )。
{{ select(9) }}
- 8
- 7
- 6
- 28
第 10 题(2 分)
关于冒泡排序,下列说法正确的是( )。
{{ select(10) }}
- 它不能用于整数序列。
它在任何情况下都只需 O(n) 时间。- 相邻元素交换实现,通常可以稳定排序。
它一定需要 O(n²) 的额外存储空间。
第 11 题(2 分)
在含 63 个互不相同且已升序排列的元素中,用标准二分查找成功查找一个元素,最多进行( )次关键字比较。
{{ select(11) }}
- 5
- 63
- 7
- 6
第 12 题(2 分)
下面程序片段的时间复杂度是( )。
for (int i = 1; i <= n; i++)
for (int j = 1; j <= i; j++)
x++;
{{ select(12) }}
O(n)O(2ⁿ)O(log n)O(n²)
第 13 题(2 分)
从 8 名同学中任选 2 名组成一组,共有( )种不同选法。
{{ select(13) }}
- 16
- 28
256- 56
第 14 题(2 分)
执行 int x=26, y=6; cout << x / y + x % y;,输出是( )。
{{ select(14) }}
- 7
- 4
- 6
- 9
第 15 题(2 分)
解决“反复把问题分成规模更小、结构相同的子问题”时,最符合描述的方法是( )。
{{ select(15) }}
- 递归
- 深度优先搜索(DFS)
- 枚举所有排列
- 选择排序
二、阅读程序(共 18 题,共 40 分)
阅读下列程序。判断题请选择
T或F,其他题请选择A、B、C、D。
程序 1:相邻字符压缩(第 16~21 题)
输入为非空字符串,仅包含数字字符。
#include <bits/stdc++.h>
using namespace std;
int main() {
string s, t;
cin >> s;
for (char c : s)
if (t.empty() || t.back() != c)
t += c;
cout << t << "\n" << t.size() << "\n";
}
第 16 题(1 分)
程序会保留每一段连续相同字符中的第一个字符。
{{ select(16) }}
- T
- F
第 17 题(1.5 分)
若输入字符串中没有相邻相同字符,则输出字符串与输入相同。
{{ select(17) }}
- T
- F
第 18 题(1.5 分)
程序会统计每个字符在原串中的总出现次数。
{{ select(18) }}
- T
- F
第 19 题(3 分)
输入:
aaabbccccdaa
第一行输出是( )。
{{ select(19) }}
aabcdaabccdaabcdabcda
第 20 题(3 分)
输入:
111001110
第二行输出是( )。
{{ select(20) }}
- 9
- 4
- 5
- 3
第 21 题(3 分)
若输入长度为 n,则 t.size() 的最小可能值是( )。
{{ select(21) }}
n-1- n
- 0
- 1
程序 2:队列操作模拟(第 22~27 题)
操作1入队,2出队,3查询队首。
#include <bits/stdc++.h>
using namespace std;
int main() {
int m;
cin >> m;
queue<int> q;
while (m--) {
int op;
cin >> op;
if (op == 1) {
int x;
cin >> x;
q.push(x);
} else if (op == 2 && !q.empty())
q.pop();
else if (op == 3)
cout << (q.empty() ? -1 : q.front()) << ' ';
}
}
第 22 题(1.5 分)
队列遵循先进先出原则。
{{ select(22) }}
- T
- F
第 23 题(1.5 分)
当空队列执行操作2时,程序会崩溃。
{{ select(23) }}
- T
- F
第 24 题(1.5 分)
操作3不会改变队列内容。
{{ select(24) }}
- T
- F
第 25 题(3 分)
输入:
7
1 5
1 8
3
2
3
2
3
输出是( )。
{{ select(25) }}
5 8 -18 5 -15 5 85 8 8
第 26 题(3 分)
连续执行 push(1),push(2),pop(),push(3) 后,队首是( )。
{{ select(26) }}
- 3
- 空
- 2
- 1
第 27 题(3 分)
若共 m 个操作,时间复杂度通常为( )。
{{ select(27) }}
O(m²)O(m)O(log m)O(1)
程序 3:记忆化斐波那契(第 28~33 题)
假设输入下标合法且结果不溢出。
#include <bits/stdc++.h>
using namespace std;
long long memo[50];
long long f(int n) {
if (n <= 1)
return n;
if (memo[n])
return memo[n];
return memo[n] = f(n - 1) + f(n - 2);
}
int main() {
int n;
cin >> n;
cout << f(n) << "\n";
}
第 28 题(1.5 分)
程序计算斐波那契数列 F0=0,F1=1。
{{ select(28) }}
- T
- F
第 29 题(1.5 分)
memo 用于避免重复计算相同子问题。
{{ select(29) }}
- T
- F
第 30 题(1.5 分)
使用记忆化后时间复杂度仍为 O(2^n)。
{{ select(30) }}
- T
- F
第 31 题(3 分)
输入 10,输出是( )。
{{ select(31) }}
144- 89
- 55
- 34
第 32 题(3 分)
首次计算 f(6) 时,memo[2] 到 memo[6] 中非零的项有( )个。
{{ select(32) }}
- 3
- 4
- 6
- 5
第 33 题(3 分)
数组长度50意味着安全的最大常用下标是( )。
{{ select(33) }}
- 51
- 49
- 50
- 48
三、完善程序(共 10 题,每题 3 分,共 30 分)
阅读程序说明和代码。代码中的横线表示待填空位置,请从对应的四个选项中选择最合适的一项。
完善程序(一):二分查找(第 34~38 题)
功能说明: 在升序数组中查找 x,找到时输出其下标,否则输出 -1。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, x;
cin >> n >> x;
vector<int> a(n);
for (int &v : a)
cin >> v;
int l = 0;
int r = ________(1)________;
int ans = -1;
while (________(2)________) {
int mid = ________(3)________;
if (a[mid] == x) {
ans = mid;
________(4)________;
}
if (a[mid] < x)
l = ________(5)________;
else
r = mid - 1;
}
cout << ans << '\n';
return 0;
}
第 34 题(3 分)
空(1)应填入( )。
{{ select(34) }}
nxn-11
第 35 题(3 分)
空(2)应填入( )。
{{ select(35) }}
ans==-1l<rl>rl<=r
第 36 题(3 分)
空(3)应填入( )。
{{ select(36) }}
(l+r)/2l+r/2r-ll*r
第 37 题(3 分)
空(4)应填入( )。
{{ select(37) }}
continuereturn 0l++break
第 38 题(3 分)
空(5)应填入( )。
{{ select(38) }}
midmid+1l+1r-1
完善程序(二):埃氏筛法(第 39~43 题)
功能说明: 输出所有不超过 n 的质数。
#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<bool> isPrime(n + 1, ________(1)________);
if (n >= 0)
isPrime[0] = false;
if (n >= 1)
isPrime[1] = false;
for (int i = 2; ________(2)________; ++i) {
if (isPrime[i]) {
for (int j = ________(3)________; j <= n; j += ________(4)________)
isPrime[j] = false;
}
}
for (int i = 2; i <= n; ++i) {
if (________(5)________)
cout << i << ' ';
}
return 0;
}
第 39 题(3 分)
空(1)应填入( )。
{{ select(39) }}
falsentrue0
第 40 题(3 分)
空(2)应填入( )。
{{ select(40) }}
i<n/2i*i<=ni==ni<=n
第 41 题(3 分)
空(3)应填入( )。
{{ select(41) }}
n-ii+1i*i2*i
第 42 题(3 分)
空(4)应填入( )。
{{ select(42) }}
ij12
第 43 题(3 分)
空(5)应填入( )。
{{ select(43) }}
i%2==0!isPrime[i]i==nisPrime[i]