乔斯2024 CSP-J 初赛模拟赛(⼀)
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
一、单选题(共 15 题,每题 2 分,共计 30 分)
- 1MB等于( )
{{ select(1) }}
1000×1000 字节
1024×1024 字节
1024 字节
1000 字节
- 以下哪个不是⾯向对象的特征( )。
{{ select(2) }}
- 在8位⼆进制补码中,10101011表⽰的数是⼗进制下的( )
{{ select(3) }}
43
-85
-43
-84
4.以下哪⼀种设备属于输出设备( )。
{{ select(4) }}
- 扫描仪
- 键盘
- ⿏标
- 打印机
5.设 x=true,y=true,z=false,以下逻辑运算表达式值为真的是( )。 {{ select(5) }}
- (y∨z)∧x∧z
- x∧(z∨y)∧z
- (x∧y)∧z
- (x∧y)∨(z∨x)
6.计算机应⽤的最早领域是( ) {{ select(6) }}
- 数值计算
- ⼈⼯智能
- 机器⼈
- 过程控制
7.C++ 是⼀种( )。
{{ select(7) }}
- 绘图软件
- 程序设计语⾔
- 操作系统
- ⽹络浏览器
8.设G 是有n 个结点、m 条边(n≤m) 的连通图,必须删去G 的( )条边,才能使得G 变成⼀棵树。 {{ select(8) }}
m−n+1
m−n
m+n+1
n−m+1
9.对于⼊栈顺序为a,b,c,d,e,f,g 的序列,下列( )不可能是合法的出栈序列。 {{ select(9) }}
10.已知7 个节点的⼆叉树的先根遍历是1 2 4 5 6 3 7(数字为节点的编号,以下同),中根遍历是4 2 6 5 1 7 3,则该⼆叉树的后根遍历是( )。
{{ select(10) }}
- 4 6 5 2 7 3 1
- 4 6 5 2 1 3 7
- 4 2 3 1 5 4 7
- 4 6 5 3 1 7 2
11.已知n 个顶点的有向图,若该图是强连通的(从所有顶点都存在路径到达其他顶点),则该图中最少有多少条有向边?( )
{{ select(11) }}
- n
- n+1
- n−1
- n(n−1)
12.排序算法是稳定的意思是关键码相同的记录排序前后相对位置不发⽣改变,下列哪种排序算法是不稳定的( )
{{ select(12) }}
- 冒泡排序
- 插⼊排序
- 归并排序
- 快速排序
13.在⼀棵⼆叉树上第7层(根结点为第⼀层)的结点数最多是( )
{{ select(13) }}
- 128
- 32
- 64
- 63
14.在程序运⾏过程中,如果递归调⽤的层数过多,会因为( )引发错误。
{{ select(14) }}
- 系统分配的栈空间溢出
- 系统分配的堆空间溢出
- 系统分配的队列空间溢出
- 系统分配的链表空间溢出
15.⼀个完整的计算机系统应包括( )。
{{ select(15) }}
- 系统硬件和系统软件
- 硬件系统和软件系统
- 主机和外部设备
- 主机、键盘、显⽰器和辅助存储器
二.阅读程序
1 #include<bits/stdc++.h>
2 using namespace std;
3 int main(){
4 int n;
5 cin>>n;
6 switch(n){
7 case 1:
8 cout<<"one"<<endl;
9 break;
10 case 2:
11 cout<<"two"<<endl;
12 break;
13 case 3:
14 cout<<"three"<<endl;
15 break;
16 default:
17 cout<<"out"<<endl;
18 break;
19 }
20 return 0;
21 }
判断题
1).(2分)若去掉第18⾏,结果不会改变()
{{ select(16) }}
- √
- ×
2).(2分)若n为3,那么将执⾏第13⾏代码()
{{ select(17) }}
- √
- ×
3).(2分)若n为1,那么将执⾏第16⾏代码()
{{ select(18) }}
- √
- ×
4).(2分)若n是10000,那么不会输出任何内容()
{{ select(19) }}
- √
- ×
单选题
5).若输⼊数据2,那么输出的结果为()
{{ select(20) }}
- one
- two
- three
- out
6).若输⼊数据 -2,那么输出结果为()
{{ select(21) }}
- out
- three
- two
- one
01 #include<bits/stdc++.h>
02 using namespace std;
03 bool isprime(int n){
04 if(n<2) return false;
05 if(n==2) return true;
06 for(int i=2;i<=sqrt(n);++i){
07 if(n%i==0) return false;
08 }
09 return true;
10 }
11 int main(){
12 int s;
13 cin>>s;
14 for(int i=s/2;i>=1;--i){
15 if(isprime(i)&&isprime(s-i)){
16 cout<<i*(s-i);
17 break;
18 }
19 }
20 return 0;
21 }
判断题
1).若第6⾏ ++i改为i++ 结果不会改变() {{ select(22) }}
- √
- ×
2).若去掉第17⾏,结果不会改变() {{ select(23) }}
- √
- ×
3).程序功能为:给定两个质数的和是S,求它们的积() {{ select(24) }}
- √
- ×
4).若第6⾏i<=sqrt(n)改为 i < n,程序可能会变慢() {{ select(25) }}
- √
- ×
单选题
5).若输⼊50,那么输出的结果为() {{ select(26) }}
- 625
- 621
- 589
- 561
6)若输⼊16,那么输出的结果为() {{ select(27) }}
- 64
- 63
- 60
- 55
1 #include<iostream>
2 using namespace std;
3 int root(int n){
4 int s=0;
5 while(n!=0){
6 s+=n%10;
7 n/=10;
8 }
9 if(s<10) return s;
10 else return root(s);
11 }
12 int main(){
13 int n;
14 cin>>n;
15 cout<<root(n);
16 return 0;
17 }
判断题
1).s<10为递归的结束条件()。 {{ select(28) }}
- √
- ×
2).如果输⼊n为19,那么刚好不会执⾏递归() {{ select(29) }}
- √
- ×
单选题
3).若输⼊345,那么输出的结果为()。 {{ select(30) }}
4).若输⼊99999998,那么输出的结果为()
{{ select(31) }}
- 8
- 9
- 7
- 1
5).若输⼊8866,那么输出的结果为()
{{ select(32) }}
- 6
- 1
- 8
- 5
6).若输⼊9,那么输出结果()
{{ select(33) }}
- 1
- 0
- 7
- 9
三、完善程序
(1)给出⼀个数列(元素个数不多于100),数列元素均为负整数、正整数、0。请找出数列中的⼀个连续⼦数列,使得这个⼦数列中包含的所有元素之和最⼤,在和最⼤的前提下还要求该⼦数列包含的元素个数最多,并输出这个最⼤和以及该连续⼦数列中元素的个数。例如数列为4,−5,3,2,4 时,输出9 和3;数列为1,2,3,−5,0,7,8 时,输出16 和7。
试补全程序。
#include <iostream>
using namespace std;
int a[101];
int n,i,ans,len,tmp,beg;
int main(){
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
tmp=0;
ans=0;
len=0;
beg=[①] ;
for(i=1;i<=n;i++){
if(tmp+a[i]>ans){
ans=tmp+a[i];
len=i-beg;
}else if([②]&&i-beg>len)
len=i-beg;
if(tmp+a[i][③]){
beg=[④] ;
tmp=0;
}
else
[⑤];
}
cout<<ans<<" "<<len<<endl;
return 0;
}
1).①处应填( )。
{{ select(34) }}
0
1
-1
2
2).②处应填( )。 {{ select(35) }}
ans=a[i]+tmp
ans==a[i]-tmp
ans!=a[i]+tmp
ans==a[i]+tmp
3).③处应填( )。 {{ select(36) }}
=0
>=0
<0
<=0
4).④处应填( )。 {{ select(37) }}
len
i
tmp
ans
5).⑤处应填( )。 {{ select(38) }}
tmp+=a[i]
tmp-=a[i]
beg+=a[i]
beg-=a[i]
2.有n 条绳⼦,每条绳⼦的长度已知且均为正整数。绳⼦可以以任意正整数长度切割,但不可以连接。现在要从这些绳⼦中切割出m 条长度相同的绳段,求绳段的最⼤长度是多少。 输⼊:第⼀⾏是⼀个不超过100 的正整数n,第⼆⾏是n 个不超过106 的正整数,表⽰每条绳⼦的长度,第三⾏是⼀个不超过108 的正整数m。 输出:绳段的最⼤长度,若⽆法切割,输出 Failed。
1).①处应填( )。 {{ select(39) }}
count=len[i]
count+=len[i]
count-=len[i]
len[i]+=count
2).②处应填( )。 {{ select(40) }}
count>=m
count>m
count<=m
count<m
3).③处应填( )。 {{ select(41) }}
lbound<ubound
lbound>ubound
lbound!=ubound
lbound==ubound
4).④处应填( )。
{{ select(42) }}
(lbound+ubound)/2
(lbound+ubound)>>1
(lbound+ubound+1)>>1-1
(lbound+ubound)/2+1
5).⑤处应填( )。
{{ select(43) }}
Count-=len[i]/mid
count+=len[i]\*mid
count+=len[i]/mid
count-=len[i]\*mid