全国入门组 CSP-J 初赛模拟试题 (8)
一、单项选择题 (共15题,每题2分,共计30分;每题有且仅有一个正确选项)
1) IPv4中,以下 IP地址不合法的是( )




查看答案
2) 已知A,B,C是3个二进制数,符号∨表示逻辑与运算,符号∧表示逻辑或运算。 若A=1100 1101 0011 B= 1100 0111 0110 C= 0011 0110 1010 则表达式(A∨B)∧(A∨C)的值为()




查看答案
3) Linux下可执行文件的默认扩展名为( )




查看答案
4) 八进制数7042转化为十六进制数是( )




查看答案
5) 以下排序算法中,不需要进行关键字比较操作的算法是( )




查看答案
6) 一个袋子中有3个蓝球,2个红球,2个黄球,则从中抽出三个球颜色各不相同的概率是多 少?( )




查看答案
7) 定义L数:素数或者是回文数满足两者中任意一个条件的数。大于等于10并且小于等于120的“L数”共有多少个? (注:回文数指从左到右读与从右到左读是相同的,如“121”、“1331”;两个条件都成立也是L数,如“131”)( )




查看答案
8) 定义一颗有根树的深度:根结点的深度为0,其余结点的深度等于该结点的父亲结点的深度加1。以下数字中哪一个可 以作为一颗深度为9的完全二叉树的总节点数?( )




查看答案
9) 共9个互不相同的数,它们的最大公约数是2021的一个大于1的因子(6有2、3、6这三个大于1的因子,因子可以包含自身),且这9个数的和小于等于2021,则这9个数的和是多少?( )




查看答案
10) 以下哪位科学家被称为“博弈论之父”,“现代计算机之父”? ( )




查看答案
11) 设栈S和队列Q初始状态为空,元素a1,a2,...,a6依次通过栈S,一个元素出栈后就进 入队列Q,若出队的顺序分别是a2,a1, a3,a6,a5,a1,则栈S的容量至少是( )




查看答案
12) 对有序数组{5,13, 19,21,37,56,64,75,88,92,100}进行二分查找,等概率的情 况下在找成功的平均查找长度(平均比较次数)是( )




查看答案
13) 一个 n 个顶点的强连通图最少有几条边( )




查看答案
14) 在1和2015 之间(包括1和2015在内)不能被4、5、6三个数任意一个数整除的数有几个?( )




查看答案
15) 关干Catalan数 C,下列说法错误的是( )。




查看答案
二、阅读程序 (程序输入不超过数组或字符串定义的范围;除特殊说明外,判断题1.5分,选择题3分,共计40分)
#include <bits/stdc++.h>
using namespace std;
int p;
void fun(int &x,int &y);
void func(int &x,int &y) {
if(y>x)return;
x--;y/=2;
fun(x,y);
}
void fun(int &x,int &y) {
if(x==1)return;
x/=2;y+=p;
func(x,y);
}
int main() {
int x,y;
cin>>x>>y>>p;
fun(x,y);
cout<<x<<' '<<y;
return 0;
}
16) 将第四行的&去除后,程序仍能通过编译。( )

查看答案
17) 读入的x,y,p为int范围内任意值时程序均能完成运行。( )

查看答案
18) 若x=1时,输出的x,y与输入的一致。()

查看答案
19) 输出的x必然小于等于输入的x。( )

查看答案
20) 输入为7 33 2时,输出为( )




查看答案
21) 输人为33 7 2时,输出为( )




查看答案
#include <iostream>
using namespace std;
const int maxn= 105;
int n,a[maxn],b[maxn];
int main()
{
cin >> n;
int x;
for (int i=1; i<=n; i++){
cin>>x;
a[i]=b[i]=x;
}

for (int i=1; i<=n; i++)
for (int j=i+1; j<=n; j++){
if (a[i]>a[j]) swap(a[i],a[j]);
if (b[i]<b[j]) swap(b[i],b[j]);
}

for (int i=1; i<=n; i++) cout<<a[i]<<" ";
cout<<"\n";
for (int i=1; i<=n; i++) cout<<b[i]<<" ";
cout<<"\n";
return 0;
}
22) 若输入的X[1],X[2],...,X[N]中有相同的数,程序会陷入死循环。()

查看答案
23) 当且仅当输入的X[1],X[2],…,X[N]全部相同时输出的两行结果相同。()

查看答案
24) 该算法的原理是基数排序。()

查看答案
25) 若输入的X[1],X[2],...,X[N]互不相同,则下列说法正确的是( )




查看答案
26) 下列说法不正确的是( )




查看答案
27) 该程序的时间复杂度为( )




查看答案
#include <bits/stdc++.h>
using namespace std;
int main() {
int num=0;
cin>> num;
//保证num>= 100,且在int范围内
int max_primedivisor=0;
int cnt=1;
for (int i= 2; i*i<= num; i++) {
if (num%i==0) {
int tmp= 1;
while (num%i==0) num/= i,tmp++;
max_primedivisor = max(max_primedivisor,i);
num*=tmp;
}
}
max_primedivisor = max(max_primedivisor ,num);
if (num>1) cnt *= 2;
cout<< max_primedivisor<<" "<<cnt <<"\n" ;
return 0;
}
28) 代码中max_primedivisor = max(max_primedivisor ,num);这句话去掉对答案没有影响。()

查看答案
29) 当读入的num=p*q.其中p<q,且p,q为质数,则for循环中i遍历到q时退出循环。()

查看答案
30) 该算法的最坏时间复杂度为()




查看答案
31) 当读入2021时输出为( )




查看答案
32) 当读入的数num=p*p*p*q*q*r*r*s*t时,其中p<q<r<s<t,且p,r,q,r,s,t均为质数,则输出的第二个数()




查看答案
33) 在最好的情况下,时间复杂度为()




查看答案
三、完善程序 (单选题,每题3分,共计30分)
(电电鼠与方阵)有一个n*n (2<=n<=5000)的方阵,其中每个方格有一个电力值。小Y可以在这个方阵中得到电力,方法就是在一些方格放上电电鼠来吸收电力,这样就可以获得这些方格上的电力。不过放的电电鼠须要遵循两个规则:1.一个方格最多只能放一只电电鼠;2.所有2*2的子矩阵(共有(n-1)*(n- 1)个)必须恰好包含两只电电鼠。小Y用了一个程序求出了能获得的最大总电力值。
试补全程序。

#include<bits/stdc++.h>
using namespace std;
const int N=5100;
int a___(1)___;
int main() {
int n,ans1=0,ans2=0;
scanf("%d",&n);
for (int i= 1; i<= n; i++)
for (int j=1; j<= n; j++)
scanf("%d",&a[i][j]);
for (int i=1; i<=n; i++) {
int odd=0,even=0;
for (int j=1; j<=n; j++) {
int x=___(2)___;
if(j&1) odd += x; else even += x;
}
ans1 + = max(odd, even);
}
for (int i=1; i <= n; i++) {
int odd = 0, even = 0;
for(int j=1; j<=n; j++) {
int x=___(3)___;
if(___(4)___) even+=x; else odd += x;
}
ans2 += max(odd, even);
}
printf("%d\n",___(5)___);
return 0;
}
34) ①处应填( )




查看答案
35) ②处应填( )




查看答案
36) ③处应填( )




查看答案
37) ④处应填( )




查看答案
38) ⑤处应填( )




查看答案
(排列)给定一个1~n的排列A,你需要给出一个1~n的排列B,使得排列B的字典序的值最小。输出字典序最小的排列B。
输人两行,第一行一个正整数n.
第二行n个整数表示排列A.
提示:将问题分为n是奇数和n是偶数考虑,贪心处理。
试补全程序。
#include<bits/stdc++.h>
using namespace std;
int A[1000010];int B[1000010];int C[1000010];
int main() {
int n;scanf("%d" ,&n);
for(int i=1; i<= n; i++ )scanf("%d" ,&A[i]);

if(___(1)___) {
int p1=0;int p2=___(2)___;
for(int i=1; i<=n; i++) {
if(A[i]>n/2) {
B[i]=++p1;
} else {
B[i]= ++p2;
}
}
} else {
int p1=0;int p2= n/2;
for(int i=1; i<=n; i++) {
if(A[i]>___(3)___) {
B[i]=++p1;
} else {
B[i]=++p2;
}
}

p1=0;p2=n/2+1;
for(int i=1; i<=n; i++){
if(A[i]>___(4)___) {
C[i]=++p1;
} else {
C[i]= ++p2;
}
}

int flag=0;
for(int i=1; i<=n; i++) {
if(B[i]<C[i]) { flag=1;break;}
if(B[i]>C[i]) { flag=2;break;}
}
if(flag!=___(5)___)swap(B,C);
}
for(int i=1; i<n; i++) printf("%d ",B[i]);
printf("%d\n" ,B[n]);
return 0;
}
39) ①处应填( )




查看答案
40) ②处应填( )




查看答案
41) ③处应填( )




查看答案
42) ④处应填( )




查看答案
43) ⑤处应填( )




查看答案
增值服务权益

1. 试题参考答案和解析查看;
2. 试卷模拟测试;
3. 随机组题测试;
4. 试卷PDF文件下载;
5. 赠送等值学豆;

  订阅  
学员服务
教研服务

小鹏STEM教研服务系统是面向教师的一站式教研、教学和知识管理系统。
订阅服务后,所有题目均可无限制查看和服务。

  详情