全国入门组 CSP-J 初赛模拟试题 (2)
一、单项选择题 (共15题,每题2分,共计30分;每题有且仅有一个正确选项)
1) 以下哪些不是属于国家顶级域名的是()




查看答案
2) 2个10进制数1111和1010的异或运算结果的10进制表示是()




查看答案
3) 8位二进制数中去掉符号位,最大能表示多少字符()




查看答案
4) 在写递归函数时,哪些定义一般不写在递归函数中()




查看答案
5) 一棵完全二叉树,共有1234个节点,其叶子结点的个数为()




查看答案
6) 某公司派赵钱孙李周五人出国学习,选派条件是: a.若赵去,钱也去; b.李、周两人必有一人去 c.如周去,则赵、钱也同去; d.孙、李二人同去或同不去 如何选他们出国?( )




查看答案
7) 已知一棵二叉树前序遍历为ABCDEFGI,后序遍历为CEDBIGFA,则其中序遍历可能为()




查看答案
8) 8颗子弹,编号为1、2、3、4、5、6、7、8,从编号1开始按序嵌入弹夹,以下有哪个不是正常的打出子弹的次序()




查看答案
9) 已知循环队列空间为30,队头位置编号为12,队尾元素下一个空位置编号为5,则队伍中元素个数为()




查看答案
10) 甲箱中有200 个螺杆,其中有160 个A型螺杆:乙箱中有240 个螺母,其中有180个A型的。现从甲乙两箱中各任取一个,则能配成A型螺栓的概率为多少?()




查看答案
11) 今年信息学进复赛的同学有6人,老师将他们排成一圈分发奖品,请问有几种排法()




查看答案
12) 设二维数组A的行下标为0至5,列下标为1至5,F的每个数据元素均占2个字节。在按行存贮的情况下,已知数据元素A[3][3]的第一个字节是2019,则A[4][4]的第一个字节的地址为()




查看答案
13) 在右图中,有() 个顶点出发存在一条路径可以遍历图中得每条边,而且仅遍历一次。




查看答案
14) 有A、B、C、D、E、F六个绝顶聪明又势均力敌的盗墓贼,他们都排着队,他们每个人都想独吞财宝,最前面的A如果拿了财宝,那么体力下降,则其后面的B会杀掉A,拿了财宝,当然B拿了财宝,体力也会下降,一样会被C杀掉,如果B不拿财宝,则C无法杀B,请问A、C、E的最终想法是()




查看答案
15) 以下哪个不属于应用层的()




查看答案
二、阅读程序 (程序输入不超过数组或字符串定义的范围;除特殊说明外,判断题1.5分,选择题3分,共计40分)
#include <bits/stdc++.h>
using namespace std;
int main() {
string s;
char s1[100];
int len,j=0;
cin>>s;
len=s.size();
memset(s1,0,sizeof(s1));
for(int i=0; i<len; i++) {
if(i%2==0)
if((s[i]>='A' && s[i]<'z') || (s[i]>='a' && s[i]<'z')) {
s1[j]=s[i]+1;
++j;
}
}
cout<<s1<<endl;
return 0;
}
16) 输出的字符串只能是字母组成。 ()

查看答案
17) 将12行的<改为<=则输出结果有可能包含数。()

查看答案
18) 将第9行删除,程序运行结果不会改。()

查看答案
19) 将11行删除,输出字符的长度和输入字符的长度一致。 ()

查看答案
20) 如输入的字符串长度为10,则输出的字符串长度最长可能为多少()




查看答案
21) 如输入的字符串都是字母,则输出中哪个字母可能出现()




查看答案
#include <bits/stdc++.h>
using namespace std;
int main() {
int a[1001],i,j,t,n;
for(i=0; i<=1000; i++)
a[i]=0;
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%d" ,&t);
a[t]++;
}
for(i=1000; i>=0; i--)
for(j=1; j<=a[i]; j++)
printf("%d ",i);
return 0;
}
22) 输入10个数字,输出结果是从小到大。()

查看答案
23) (2分)输入的数字中有2个1,则输出时出来第一个1是第一个输入。()

查看答案
24) (2分)第13行的<=改为<号,且输入数据为10 2 12 33 34 1 28 7 22 9 0,则无输出。 ()

查看答案
25) 第12行改为for(i=0; i<=1000;i++)则程序运行结果不变。

查看答案
26) 第12行改为for(i=1000;i>1;i--):第13行改为for(j=a[i]; j>1; j--)输入数据为5 21 23 3 34 44,则运行结果( )




查看答案
27) (4分)第10行改为++a[t]或a[t++],则输入5 1 2 3 4 5,输出结果为( )




查看答案
#include <bits/stdc++.h>
using namespace std;
const int maxn=500000, INF=0x3f3f3f3f;
int L[maxn/2+2], R[maxn/2+2];
void unknown(int a[],int n,int left,int mid,int right) {
int n1=mid-left , n2=right-mid;
for(int i=0; i<n1; i++)
L[i]=a[left+1];
for(int i=0; i<n2; i++)
R[i]=a[mid+i];
L[n1]=R[n2]=INF;
int i=0,j=0;
for(int k=left; k<right; k++) {
if(L[i]<=R[j])
a[k]=L[i++];
else
a[k]=R[j++];
}
}
void unknownsort(int a[],int n, int left,int right) {
if(left+1<right) {
int mid=(left+right)/2;
unknownsort(a,n,left ,mid);
unknownsort(a,n, mid,right);
unknown(a,n,left , mid, right);
}
}
int main() {
int a[maxn],n;
cin>>n;
for(int i=0; i<n; i++) cin>>a[i];
unknownsort(a,n,0,n);
for(int i=0; i<n; i++) {
if(i) cout<<" ";
cout<<a[i];
}
cout<<endl;
return 0;
}
28) 第13行的<改为<=将不会改变运行结果。

查看答案
29) 第21行的<改为<=将不会改变运行结果。

查看答案
30) 此类排序方法是高效的但是不稳定。

查看答案
31) 第4行的2个“+2”都去掉将不会改变运行结果。

查看答案
32) 此题是哪种排序()




查看答案
33) 此题用到了()思想




查看答案
三、完善程序 (单选题,每题3分,共计30分)
田忌赛马,田忌每赢一次齐王的马就得200金币,当然输了就扣200金币,平局则金币数不变。
#include<bits/stdc++.h>
using namespace std;
int main() {
int n;
while(cin>>n&&n!=0) {
int tj[1001], king[1001], count=0;
int tj_min=0, tj_max=n-1;
int king_min=0,king_max=n-1;
for(int i=0; i<n; i++) cin>>tj[i];
for(int i=0; i<n; i++) cin>>king[i];
sort(tj,tj+n);
sort(king, king+n);
while(n--) {
if(tj[___(1)___]>king[___(2)___]) {
count++;
tj_max--;
king_max--;
}
else if(tj[___(3)___]<king[___(4)___]) {
count--;
tj_min++;
king_max--;
}
else
{
if(tj[tj_min]>king[king_min]) {
count++;
___(5)___;
___(6)___;
}
else{
if(___(7)___)
count--;
tj_min++;
___(8)___;
}
}
}
cout<<count*200<<endl;
}
return 0;
}
34) (1)和(2)处填()




查看答案
35) (3)和(4)处填()




查看答案
36) (5)和(6)处填()




查看答案
37) (7) 处填()




查看答案
38) (8) 处填()




查看答案
寻路问题: N*N 矩阵,其中0是表示可以走的,1表示无法走,矩阵有二维数组表示,走上角是
入口,右下角是出口,只能横着走和竖着走,要求找出最短路径
#include<bits/stdc++.h>
using namespace std;
int mymax=10000;
int f[4][2]= {{-1,0},{1,0},{0,-1},{0,1}};
int a[20][20],v[20][20],v1[20][20];
int l=1;
int n;//矩阵的规模
bool check(int x1,int y1) {
if(x1<0||x1>=n ||___(1)___ )return false;
if(a[x1][y1]==1||___(2)___ )return false;
return true;
}
void dfs(int x,int y) {
if(x==n-1&&y==n-1) {
if(l<mymax) {
mymax=l ;
memcpy(v1,v,sizeof(v1));
}
return ;
}
for(int k=0; k<4; k++) {
int x1,y1;
x1=x+___(3)___ ;
y1=y+___(4)___ ;
if(check(x1,y1)) {
___(5)___ ;
___(6)___ ;
dfs(x1,y1);
___(7)___ ;
v[x1][y1]=0;
}
}
}
int main() {
cin>>n;
for(int i=0; i<n; i++) {
for(int j=0; j<n; j++)
cin>>a[i][j];
}
dfs(0, 0);
int d=v1[n-1][n-1];
int x=n-1,y=n-1;
int k;
int qn[400][2];
qn[0][0]=n-1;
qn[0][1]=n-1;
for(k=1;; k++) {
x=x-f[d][0];
y=y-f[d][1];
qn[k][0]=x;
qn[k][1]=y;
d=v1[x][y];
if(x==0&&y==0)break;
}
for(int i=k; i>=0; 1--)
cout<<___(8)___ <<", "<<___(9)___ <<endl;
return 0;
}
39) (1)和(2)处填()




查看答案
40) (3)和(4)处填()




查看答案
41) (5)处填()




查看答案
42) (6)和(7)处填()




查看答案
43) (8)和(9)处填()




查看答案
增值服务权益

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

  订阅  
学员服务
教研服务

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

  详情