#CSP0009. CSP-J 2026 初赛模拟试卷 三
CSP-J 2026 初赛模拟试卷 三
按照您的要求,已将题目中所有使用 \( 和 \) 包裹的数学公式全部替换为 $ 和 $,其余内容(包括选项、代码、标签等)均未改变。修改后的完整题目配置如下:
- 在计算机内部,传送、存储和加工处理数据或指令都是以()形式进行的。 {{ select(1) }}
- 二进制码
- 八进制码
- 十进制码
- 智能拼音码
- 计算机的软件系统通常分为()。 {{ select(2) }}
- 硬件系统和软件系统
- 高级软件和一般软件
- 系统软件和应用软件
- 军用软件和民用软件
- 关于五寸软盘读写孔,正确的说法是()。 {{ select(3) }}
- 从该孔读信息
- 从该孔写信息
- 当该孔处于封住状态时,不能删除盘中文件
- 该孔没有作用
- 一棵二叉树的中序遍历序列为DGBAECHF,后序遍历序列为GDBEHFCA,则前序遍历序列为()。 {{ select(4) }}
- ABCDFGHE
- ABDGCEFH
- ACBGDHEF
- ACEFHBGD
- 下列叙述中错误的是()。 {{ select(5) }}
- 微机应避免置于强磁场之中
- 微机使用时间不宜过长,而应隔几小时关机一次
- 微机应避免频繁开关,以延长其使用寿命
- 微机不宜长期闲置不用
- 计算机网络最主要的优点是()。 {{ select(6) }}
- 运算速度快
- 共享资源
- 精度高
- 存储容量大
- 下列4个不同进制表示的数中,最大的一个数是()。 {{ select(7) }}
- 为了区分汉字与ASCII码,计算机中汉字编码的最高位为()。 {{ select(8) }}
- 1
- 0
- -1
- 2
- 一般来说,在TCP/IP协议族中IP提供的服务属于()。 {{ select(9) }}
- 运输层服务
- 会话层服务
- 表示层服务
- 网络层服务
- 通信时,模拟信号也可以用数字信道来传输,能实现模拟信号与数字信号之间转换功能的是()。 {{ select(10) }}
- D/A
- A/D
- Modem
- Codec
- 一个栈的输入顺序为1,2,3,4,5,下列序列中可能是栈的输出序列的是( )。 {{ select(11) }}
- 54312
- 24135
- 21543
- 12534
- 不属于Internet的功能的是( )。 {{ select(12) }}
- 聊天
- 远程教育
- 查询资料
- 传送能量
- 下列关于计算机病毒的特性的描述中,( )不是正确的。 {{ select(13) }}
- 潜伏性
- 传染性
- 高速性
- 危害性
- 下面不属于网络操作系统的是( )。 {{ select(14) }}
- UNIX
- Windows NT
- NetWare
- DOS
- 根据《计算机软件保护条例》,中国公民开发的软件享有著作权的情形是( )。 {{ select(15) }}
- 不论何人、何地及是否发表的软件
- 只有公开发表的软件
- 只有单位发表的软件
- 只有个人在国内公开发表的软件
阅读程序(1):
#include <bits/stdc++.h>
using namespace std;
const int Maxn = 10005;
int n,b[Maxn];
void mergesort(int *a,int l,int r){
if(l == r) return;
int mid = (l + r) >> 1;
mergesort(a,l,mid),mergesort(a,mid+1,r);
int i = l, j = mid+1, cnt = 0;
while(i <= mid && j <= r){
if(a[i] <= a[j]) b[++cnt] = a[i++];
else b[++cnt] = a[j++];
}
while(i <= mid) b[++cnt] = a[i++];
while(j <= r) b[++cnt] = a[j++];
for(i = l; i <= r; i++) a[i] = b[i-l+1];
}
int a[Maxn];
int main(void){
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
mergesort(a,1,n);
for(int i = 1; i <= n; i++) cout << a[i] << (i == n ? '\n' : ' ');
return 0;
}
- (1分)该算法中参数int *a采用的不是传值方式。 ( ) {{ select(16) }}
- 正确
- 错误
- (1分)该算法输出最后会换行。 ( ) {{ select(17) }}
- 正确
- 错误
- 该算法中 mergesort 函数的时间复杂度为 。 ( ) {{ select(18) }}
- 正确
- 错误
- 如果输入为 5 4 3 9 7 8, 则输出为 3 4 7 8 9。 ( ) {{ select(19) }}
- 正确
- 错误
- 下列选项中与
i == n ? '\n' : ' '功能相同的是( )。 {{ select(20) }}
i != 1 ? '\n' : ' '"\n "[i==n]"\n "[i!=n]' '
- 该算法在最坏情况下的时间复杂度与( )算法相同。 {{ select(21) }}
- 快速排序
- 选择排序
- 计数排序
- 堆排序
阅读程序(2):
#include <bits/stdc++.h>
using namespace std;
int i,j,k,n,m,f[10010],p1,p2,p3;
int find(int k) {
if(f[k] == k) return k;
return f[k] = find(f[k]);
}
int main() {
cin >> n >> m; //假设n,m同量级
for(i=1; i<=n; i++) f[i] = i;
for(i=1; i<=m; i++){
cin >> p1 >> p2 >> p3;
if(p1 == 1)
f[find(p2)] = find(p3);
if(p1 == 2){
if(find(p2) == find(p3))
printf("Y\n");
else
printf("N\n");
}
}
return 0;
}
- 该算法中 p1 的作用是确定操作类型。 ( ) {{ select(22) }}
- 正确
- 错误
- 去掉
for (i=1; i<=n; i++) f[i] = i;对该算法没有影响。 ( ) {{ select(23) }}
- 正确
- 错误
- 如果输入为
2 2 1 1 2 2 1 2,则输出为 Y。 ( ) {{ select(24) }}
- 正确
- 错误
- 如果输入为
2 1 2 1 2,则输出为 N。 ( ) {{ select(25) }}
- 正确
- 错误
- 该算法的时间复杂度为( )。 {{ select(26) }}
- 把
return f[k] = find(f[k]);改成return find(f[k]);则最坏情况下算法的时间复杂度为( )。 {{ select(27) }}
阅读程序(3):
#include <bits/stdc++.h>
using namespace std;
int t,x[100],a[100];
void work(int d,int i,int n){
int k;
if(n == 1){
for(k=0; k<d; k++)
printf("%3d", a[k]);
printf("\n");
} else for(k=i; k<t; k++)
if(n % x[k] == 0){
a[d] = x[k];
work(d+1,k,n/x[k]);
}
}
int main() {
int i,k,n;
cin >> n;
for(i=n; i>1; i--)
if(n % i == 0) x[t++]=i;
work(0,0,n);
return 0;
}
- main() 函数里的 for 循环的作用是求出 n 的所有因数。 ( ) {{ select(28) }}
- 正确
- 错误
- 该程序的作用是对 n 进行素因数分解。 ( ) {{ select(29) }}
- 正确
- 错误
- 去掉
printf("%3d", a[k]);中的 3 对程序没有影响。 ( ) {{ select(30) }}
- 正确
- 错误
- 去掉
if (n % x[k] == 0)对程序有影响。 ( ) {{ select(31) }}
- 正确
- 错误
- 如果输入为 2,那么输出为()。 {{ select(32) }}
- 2
- 21
- 12
- 22
- 如果输入为 72,那么输出的非回车字符有()。 {{ select(33) }}
- 14
- 15
- 16
- 17
完善程序(1):
#include <iostream>
using namespace std;
const int SIZE = 100;
int x[SIZE], y[SIZE], f[SIZE];
int n,i,j,max_f,ans;
int main() {
cin >> n;
for (i=1; i<=n; i++) cin >> x[i] >> y[i];
max_f = 0;
for (i=1; i<=n; i++) {
f[i] = ①;
for (j=1; j<=n; j++) {
if (x[j] < x[i] && ②)
③;
}
if ④ {
max_f = f[i];
⑤;
}
}
for (int i=1; i<=n; i++) cout << f[i] << endl;
cout << ans << endl;
return 0;
}
- ①处应填()。 {{ select(34) }}
- 0
- 1
- i
- INT_MAX
- ②处应填()。 {{ select(35) }}
- y[j] <= y[i]
- y[j] < y[i]
- y[j] > y[i]
- y[j] >= y[i]
- ③处应填()。 {{ select(36) }}
- ans = i
- f[i]++
- f[i]--
- ans++
- ④处应填()。 {{ select(37) }}
- f[i] > max_f
- f[i] >= max_f
- f[i] < max_f
- f[i] <= max_f
- ⑤处应填()。 {{ select(38) }}
- ans++
- ans += max_f
- ans = i
- ans = max_f
完善程序(2):
#include <iostream>
#include <cstring>
using namespace std;
const int SIZE=25;
bool used[SIZE];
int data[SIZE];
int n,m,i,j,k;
bool flag;
int main() {
cin >> n >> m;
memset(used, false, sizeof(used));
for(i=1; i<=m; i++){
data[i] = i;
used[i] = true;
}
flag = true;
while (flag) {
for(i=1; i<=m-1; i++){
cout << data[i] << " ";
}
cout << data[m] << endl;
flag = ①;
for(i=m; i>=1; i--){
②;
for(j=data[i]+1; j<=n; j++)
if(!used[j]){
used[j] = true;
data[i] = ③;
flag = true;
break;
}
if(flag){
for(k=i+1; k<=m; k++)
for(j=1; j<=④; j++)
if(!used[j]){
data[k] = j;
used[j] = true;
break;
}
⑤;
}
}
}
return 0;
}
- ①处应填()。 {{ select(39) }}
- false
- true
- 1
- -1
- ②处应填()。 {{ select(40) }}
- used[i] = true
- data[i] = i
- used[data[i]] = true
- used[data[i]] = false
- ③处应填()。 {{ select(41) }}
- j
- i
- true
- false
- ④处应填()。 {{ select(42) }}
- n
- m
- i
- j
- ⑤处应填()。 {{ select(43) }}
- return 0
- exit
- continue
- break