4.lhenreturntemp
5.elsereturnA[n]
请问算法XYZ的输岀足什么?
()oA.A数组的平均
C.A数组的最大值
7.链衣不具有的特点足()o
A.插入删除不需要移动元素
C.不必爭先佔计存储空间
8.有10个顶点的无向图至少賊该有(
A.10B.12
9.:
进制数1011转换成十进制数是(
扎10B.13
B・A数组的员小值
D・A数组的中值
B・可随机访问任一元素
D.所需空间与纟戈性农长度成正比
)条边才能确保是一个连通图。
C.9D・11
)o
C・11D・12
10•五个小朋友并排站成•列,英中有两个小朋友是双胞胎,如果要求这两个双胞胎必须相邻,则有()种不同排列方法?
A.24B.36C・72D・48
11.下图屮所使用的数据结构足()。
A.哈希表B.二叉树C.栈1).队列
<
D.
)o
6
12•独根树的席度为loH;冇61个结点的完金二义树的崗度为
九7B.5C.8
13•十支纪年法是中国传统的纪年方法,11110个天十和12个地支组合成60个天十地支。
山公历年份可以根据以下公式和农格换算出对应的夭十地支。
天干二(公历年份)除以30所得余数
地支=(公历年份)除以12所得余数
天干
甲
乙
r
戊
5
庚
辛
壬
癸
4
5
6
7
8
9
0
1
2
3
地支
f
丑
玄
卯
C
午
末
巾
四
戌
4
5
6
7
8
9
10
11
0
1
2
例如,今年是2020年,2020除以10余数为0,査表为"庚匕2020除以12,余数为4,査表为"子匕所以今年是庚子年。
请问1949年的天干地支足(
)
C.己卯
0.己酉
A.
己亥B.己幵
14e10
个三好学生名额分配到7
个班级,每个班级至少有一个名额,一共有
(
)种爪同的分配方案.
A.
56B.84
C.72
D.504
15・有五副不同颜色的于套(共10只于•套,毎副于•套左右于•各1只),•次性从中取6只F套,请问恰好能配成两副『套的不同取法有()种。
A.30B.150C・180D・120
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填讥错误填&除特殊说明外,判断题「5分,选择题3分,共计40分)
01frinclude
02#inelude
03usingnamespacestd;
04
05charencoder[26]=,0};
06chardecode叫26];
stringst;
08
09
10
11
12
13
14
15
16
17
18
19
07
intmain(){intk=0;
for(inti=0;i<26;++i)
if(encoderfi]!
=0)卄k;
for(charx='A';x<='Z';++x){boolflag=true;
-For(inti=0;i<26;++i)if(encoder[i]==x){flag=false;break;
CCFCSPJ2020笫_轮C++iSrt试题
第顶,共10页
20
}
21
if(flag){
22
encoder[k]=x;
23
++k;
24
}
25
}
26
for(inti=0;i<26;
++i)
27
decoder[encoder[i]-
•A*]=i-h•A1;
28
cin>>st;
29
for(inti=0;ilength();卄i)
30
st[i]=decoder[st[i]
-A];
31
cout<32
return0;
33
}
•判断题
1)输入的字符串应当只山人丐字母组成,否则在访问数组时可能越界。
()
2)若输入的字符串不是空串,则输入的字符串与输出的字符串一定不一样:
()
3)将第12行的"i<26少改为“i<16”,程序运行结果不会改变。
()
4)将第26行的“i<26”改为“i<16”,程序运行结果不会改变。
()
•单选题
5)若输出的字符串为“ABCABCABCA”,则下列说法正确的是()。
A.输入的字符巾中既有A又有P
B.输入的字符吊中既有S又有B
C.输入的字符串中既冇S乂冇P
D.输入的字符串屮既有A乂有B
6)若输出的字符串为“CSPCSPCSPCSPX则F列说法正确的是()。
A.输入的字符串中既有3乂有R
B.输入的字符串中既右P又右K
C.输入的字符串中既有J又有K
D-愉入的字符串中既冇P又冇R
01#include02usingnamespacestd;
03
04
longlongn,ans;
05
intk,len;
06
longlongd[1000000];
07
08
intmain(){
09
cin>>n>>k;
10
d[0]=0;
11
len=1;
12
ans=0;
13
for(longlongi=0;i<
n;++i){
14
++d[0];
15
-For(intj=0;j+1<
len;++j){
16
讦(d[j]==k){
17
d[j]=0;
18
d[j+1]+=1;
19
++ans;
20
}
21
}
22
if(d[len-1]==k){
23
d[len-1]=0;
24
d[len]=1;
25
++len;
26
++ans;
27
}
28
}
29
cout<30
return0;
31
}
k都是不超过10000的正整数.完
假设输入的n是不超过的正整数,成下面的判断題和单选题,
•刿断题
1)若则输Ilians时,len=n<>
2)
若k>l,则输出ans时,
len一定小于n0
3)
若k>l,则输出ans时,
klen一定大于no
•单选题
4)若输入的n等于1卩5,输入的k为止则输岀等于()°
A・(13":
L0i5)/2B・(辺龙+1015)/2C・1D・1015
5)若输入的n等十205,891,132,094,649(即3初),输入的k为3,则输出等于()O
A・G沁・1)/2B・33®C・330-1D.(3泌41)/2
6)若输入的D等+100,010,002,000,090,输入的k为10则输出等于()。
A.11,112,222,444,543B.11,122,222,444,453
3.
C.11,122,222,444,543D.11,112,222,444,453
01#inelude
02#include03usingnamespacestd;04
05intn;
06intd[50][2];
07intans;
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
voiddfs(intn,intsum)if(n==1){
ans=max(sum,ans);return;
}
for(inti=1;ix=d[i][0],y=-1][0]=a-1〕[1]=b(intj=i;
intintd[id[ifor
d[j][0]=d[jints
++i){bd[i][l];
+x;
+y;
j+1][0],d[j][l]=d[j+1][1];abs(b-y);
dfs(n・1,sum+s);
23for(intj==n•1;j>i;・・j)
24d[j][0]=d[j・1][0],d[j][l]=d[j・1][1];
25d[i-1][0]=a,d[i・1][1]=b;
26d[i][0]=x,d[i][l]=y;
27}
28}
29
30intmain(){
31cin〉>n;
32for(inti=0;i33cin>>d[i][0];
34for(irrti=0;i35cin>>d[i][1];
36日ns=0;
37dfs(n,0);
38cout<39return0;
40}
!
设输入的n是不趙过50的正整数,d[i][0].d[i][l]都是不超过100%的正整数,完成下面的判断题和单选题:
•判断题
1)若输入n为6此程序可能会死衛环或发主运行错课。
()2)若输入n为20.接下來的输入全为0,则输出为乩()3)输出的数一定不小于输入的d[i][0]和的任意一个。
()
•单选题
4)若输入的n为20,接下來的输入足20个9和20个0,则输出为
()O
A.1917B.1908C.1881I).1890
5)若输入的n为30,接下来的输入是30个0和30个5,则输出为
()。
A.2020B.2030C・2010I).2000
6)(4分)若输入的n为15,接卜•来的输入是15到1,以及15到1,则输出为()O
A.2420B.2220C.2440[).2240
3.完善程序(单选题,每小题3分.共计30分)
I.(质因数分解)给出正整数m试输出将n质因数分解的结果,结果从小到大输出。
例如:
输入n=120,程序应该输出22235,表示120=2X2X2X3X5o输入保证2WnWl少。
提示:
先从小到大枚举变量i.然后川i不停试除n来寻找所有的质因子。
试补全程序。
01#inelude
02usingnamespacestd;
03
04intn»i;
05
06intmain(){
07scanf(H%dH&n);
08
for(i=①;②<=n;i++){
09
③{
10
printf(H%d
”,i);
11
n=n/
■
1;
12
}
13
}
14
讦(④)
15
printf(f,%d”
⑤);
16
return0;
17
}
1)
①处应填()
A.
n・1
B・
0
C.1
D・
2
2)
②处应填()
A.
n/i
B.
n/(i♦i)
C.i♦i*i
I).
i*i
3)
③处应填()
A.
if(i*i<=
n)
B.
if(n%i==0)
C.
while(i♦i
<=
n)
D・
while(n%i==
0)
4)
④处应填()
A.
n>1
B,
n<=1
C・i+ivn
D.
i5)
⑤处用境()
A.
2
B.
•
1
C・n/i
1).
n
2.(最小区间覆盖)给出n个区间,第i个区间的左右端点是现在要在这些区间中选出若干个,使得区间[叭m]被所选区间的并覆盖(即每•个OWiWm祁任某个所选的区间屮)。
保证答案存化.求所选区间个数的最小值。
输入第•行包含两个胳数n和m(lWn^5000,l^m^l09)o接卜•来nfr,每行两个整数刃,bi(0Wa「b’Wm)。
提示:
使用贪心法解决这个问题。
先me(n2)的时间复朵度排序.然后贪心选择这些区间。
试补全程序。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#inelude
usingnamespacestd;
constintMAXN=5000;
intn,m;
structsegment{inta,b;}A[MAXN];
voidsort()//排序
-For(inti=0;isegmentt
②
}
=A[j];
int
main()
tin>>n-For(int
cin>>sort();intp=for(inti=1;
if(③)
>>m;i=0;A[i].a
i>A[i]・b;
iA[p++]=A[i];n=P;intans=0,r=0;intq=0;while(rwhile(X)q++;
⑤;ans++;
}
cout<
1)①处应填()
A.A[j]・bC.A[j]・aB.A[j].b>A[j-1].b
D.A[j].a>A[j-l].a
2)
②处W填(
)
A.
A[j-
1]=
A[j];
A[j]
=t;
B.
A[j+
1]=
A[j];
A[j]
=t;
C.
A[j]=
=A[j
・U;
A[j・
1]=t;
D・
A[j]=
=A[j
•1];
A[j+
1]=t;
3)③处应填()
A.A[i].bC.A[i].b>A[p•l].bD・
4)④处应填()
A.q+1B.q+1C・qD・q5)⑤处应填()
A.r=max(r,A[q+1].a)B・
C.
A[i]・b>A[i・1].b
A[i].br=max(r,A[q]・b)q++
r=max(r,A[q+1].b)D.
CSP-J1参考答案:
单项选择
AADCCBAAAAADCAA
阅读程序
3)xVxBCC
完善程序