2020CSP-J(入门级)C++初赛试题全解析
一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)
1.在内存储器中每个存储单元都被赋予-一个唯一的序号,称为(B)。
A.下标
B.地址
C.序号
D.编号
答案B解析:内存按地址编址
2.编译器的主要功能是(A)。
A.将源程序翻译成机器指令代码
B.将一种高级语言翻译成另一一种高级语言
C.将源程序重新组合
D.将低级语言翻译成高级语言
答案A:解析:编译型:将源码直接转换为二进制代码,生成目标程序,然后将目标程序连接成可执行的程序。流程为:高级语言源码—编译—>目标程序—连接—>可执行程序。
3.设x=true,y=true,z=false,以下逻辑运算表达式值为真的是(C)。
A.(x∧y)∧z
B.x∧(z∨y)∧zC)(x∧y)∨(z∨x)D.(y∨z)∧x∧z
答案:C解析:与:∧and&&或:∨or||非:¬!NOT异或:^优先级:括号>非>与>异或,或
4.现有一-张分辨率为2048x1024像素的32位真彩图像。请问要存储这张图像,需要多大的存储空间?(B)。
A.4MB
B.8MB
C.32MB
D.16MB
答案:B解析:1位为1bit,1byte=8bit,2048*1024*32/8=8*(1024/1024)=8MB
5.冒泡排序算法的伪代码如下:
输入:数组L,n≥1。
输出:按非递减顺序排序的L。
算法BubbleSort:
1.FLAG←n//标记被交换的最后元素位置
2.whileFLAG>1do
3k←FLAG-1
4FLAG←1
5forj=1tokdo
6ifL(j)>L(j+1)thendo
7.L(j)<->L(j+1)
8.FLAG←j
对n个数用以上冒泡排序算法进行排序,最少需要比较多少次?(D)。
A.n
B.n-2
C.n2
D.n-1
答案:D解析:最少的比较次数就是数组本身已经有序,只需要比较n-1次;最多的比较次数是n*(n-1)/2;
6.设A是n个实数的数组,考虑下面的递归算法:
XYZ(])
1.if n=1thenreturnA[1]
2.else temp←XYZ(-1])
3.if temp<A[n]
4.then returntemp
5else returnA[n]
请问算法XYZ的输出是什么?(B)。
A.A数组的平均
B.A数组的最小值
C.A数组的最大值.
D.A数组的中值
答案:B代码解析如下,分析代码可知,题目是求n个数的最小数:
int XYZ(int a[],int n)
{
if(n==1)
return a[1];
else
{
int temp=XYZ(a,n-1);
return min(temp,a[n]);
}
}
7.链表不具有的特点是(B)。
A.插入删除不需要移动元素
B.可随机访问任一元素
C.不必事先估计存储空间
D.所需空间与线性表长度成正比
答案:B解析:可随机访问任一元素是线性表的特点。
8.有10个顶点的无向图至少应该有(C)条边才能确保是一个连通图。
A.10
B.12
C.9
D.11
答案:C解析:n个顶点的无向图,至少需要n-1条边,才能构成连通图。
9.二进制数1011转换成十进制数是(C)。
字符串是什么颜
A.10
B.13
C.11
D.12
答案:C解析:1+2+8=11
10.五个小朋友并排站成一列,其中有两个小朋友是双胞胎,如果要求这两个双胞胎必须相邻,则有(48)种不同排列方法?
A.24
B.36
C.72
D.48
答案:D解析:捆绑法求解:两个双胞胎是一个单位,所以方案就是4的全排列4!==24,然后双胞胎自已的全排列是2,得数是24*2==48
11.下图中所使用的数据结构是(C)。
A.哈希表
B.二叉树
C.栈
D.队列
答案:C解析:简单数据结构常识题,典型的栈结构,先进后出
12.独根树的高度为1。具有61个结点的完全二叉树的高度为(D)。
A.7
B.5
C.8
D.6
答案:D解析:完全二叉树的性质:满二叉树是(2^高度-1),数一数也可以知道了,floor(log2n)+1=6
13.干支纪年法是中国传统的纪年方法,由10个天干和12个地支组合成60个天干地支。由公历年份可以根据以下公式和表格换算出对应的天干地支。
天干=(公历年份)除以10所得余数
例如,今年是2020年,2020除以10余数为0,查表为“庚";2020除以12,余数为4,查表为“子”,所以今年是庚子年。
请问1949年的天干地支是(B)
A.己亥
B.己丑
C.己卯
D.己酉
答案:B解析:1949%10=9,因此是已1949%12=5,因此是丑
14.10个三好学生名额分配到7个班级,每个班级至少有一个名额,一共有(B)种不同的分配方案。
A.56
B.84
C.72
D.504
答案:B解析:指“10个三好学生不加区分,分配进7个不同班级”,这样就是6=84
插板法组合数C
9
15.有五副不同颜的手套(共10只手套,每副手套左右手各1只),一次性从中取6只手套,请问恰好能配成两副手套的不同取法有(D)种。
A.30
B.150
C.180
D.120
答案:D解析:先从五双手套中取完整的两双,方案是组合数C(5,2)==10;
然后,从剩下的三双中,取不同的两只手段,是先从三双中取两双C(3,2)==3然后,再从两双中各取一,是C(2,1)*C(2,1)==4;
乘法原理,得数是10*3*4=120
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填v,错误填x;除特殊说明外,判断题1.5分,选择题3分,共计40分)
判断题
1)输入的字符串应当只由大写字母组成,否则在访问数组时可能越界。(true)答案:true解析:因为数组大小为26,所以只能是大写字母,如果有小写字母会越界。
2)若输入的字符串不是空串,则输入的字符串与输出的字符串一定不一样。
答案:false根据decoder字符串的值,如果输入是T~Z之间的字母,输出是一样的。
3)将第12行的“i<26”改为“i<16”,程序运行结果不会改变。(true)
答案:true解析:第12行是统计字符数,由于默认有3个字母,因此修改循环的值不影响统计结果。
4)将第26行的“i<26”改为“i<16”,程序运行结果不会改变。(false)
答案:false解析:这个程序通过encoder,decoder两次转换产生一个乱序字符串,利用乱序字符串加密encoder="CSPABDEFGHIKLMNOQRTUVWXYZ"
decoder="DEAFGHIKLMNOPQCRSBTUVWXYZ"
单选题
5)若输出的字符串为“ABCABCABCA",则下列说法正确的是(C)。
A.输入的字符串中既有A又有P
B.输入的字符串中既有S又有B
C.输入的字符串中既有S又有P
D.输入的字符串中既有A又有B
答案:C解析:输出中有ABC,对应decoder[2]、decoder[18]、decoder[15],则输入的字符分别为字符CSP。
6)若输出的字符串为“CSPCSPCSPCSP”,则下列说法正确的是(D)。
A.输入的字符串中既有J又有R
B.输入的字符串中既有P又有K
C.输入的字符串中既有J又有K
D.输入的字符串中既有P又有R
答案:D解析:输出中有ABC,对应decoder[15]、decoder[17]、decoder[13],则输入的字符分别为字符PRN。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。