#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) }}
110101110100110110110011
第 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) }}
3840480960240
第 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 分)
阅读下列程序。判断题请选择
T或F,其他题请选择A、B、C、D。
程序 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]*2dp[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) }}
n1n-10
第 35 题(3 分)
空(2)应填入( )。
{{ select(35) }}
a[l]+a[r]<Sa[l]+a[r]>Sl+r>Sa[l]==a[r]
第 36 题(3 分)
空(3)应填入( )。
{{ select(36) }}
++l++rans++--r
第 37 题(3 分)
空(4)应填入( )。
{{ select(37) }}
return 1r=n-1breakcontinue
第 38 题(3 分)
空(5)应填入( )。
{{ select(38) }}
r-ln-r1r+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-1a[i]i0
第 40 题(3 分)
空(2)应填入( )。
{{ select(40) }}
i+1in-10
第 41 题(3 分)
空(3)应填入( )。
{{ select(41) }}
a[j]<a[p]a[j]==ij<pa[j]>a[p]
第 42 题(3 分)
空(4)应填入( )。
{{ select(42) }}
swap(a[p],a[i])p=isort(a.begin(),a.end())a[p]=a[i]
第 43 题(3 分)
空(5)应填入( )。
{{ select(43) }}
cout<<x<<' 'cin>>xreturn xx++