历年CSP-J初赛真题解析 | 2021年CSP-J初赛选择题(1-15)

学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:历年CSP-J初赛真题解析 | 汇总_热爱编程的通信人的博客-CSDN博客


1、以下不属于面向对象程序设计语言的是( )。

A.C++

B.Python

C.Java

D.C

【答案】:D

【解析】

C语言面向过程,不面向对象

2、以下奖项与计算机领域最相关的是( )。

A.奥斯卡奖

B.图灵奖

C.诺贝尔奖

D.普利策奖

【答案】:B

【解析】

奥斯卡奖是电影界的,普利策奖是摄影方面的

3、目前主流的计算机储存数据最终都是转换成( )数据进行储存。

A.二进制

B.十进制

C.八进制

D.十六进制

【答案】:A

【解析】

主流计算机都是将数据转换为二进制进行存储的,因为二进制最容易实现,利用高低电平就可以体现0和1。ENIAC是十进制计算机

4、以比较作为基本运算,在N个数中找出最大数,最坏情况下所需要的最少的比较次数为( )。

A.N^2

B.N

C.N-1

D.N+1

【答案】:C

【解析】

最坏的情况需要进行相邻比较,如1与2、1与3、1与4...、1与n,即N-1次

5、对于入栈顺序为a,b,c,d,e的序列,下列( )不是合法的出栈序列。

A.a,b,c,d,e

B.e,d,c,b,a

C.b,a,c,d,e

D.c,d,a,e,b

【答案】:D

【解析】

A是合法的,如进入栈后就出来

B是合法的,就是5个元素全部入栈后再依次出来

C是合法的,可以模拟出来

D是非法的,a出不来,因为此时栈顶为b

出栈序列中的每个数的序号后面的序号比它小的数,是按递减排列的(可将a/b/c/d/e转为1/2/3/4/5后检查)

6、对于有n个顶点、m条边的无向连通图(m>n),需要删掉( )条边才能使其成为一棵树。

A.n-1

B.m-n

C.m-n-1

D.m-n+1

【答案】:D

【解析】

n个节点的树有n-1条边,所以需要删除m-(n-1)条边,选D

7、二进制数101.11对应的十进制数是( )。

A.6.5

B.5.5

C.5.75

D.5.25

【答案】:C

【解析】

1*2^2+1*2^0+1*2^-1+1*2^-2 = 5.75

8、如果一棵二叉树只有根结点,那么这棵二叉树高度为1。请问高度为5的完全二叉树有( )种不同的形态?

A.16

B.15

C.17

D.32

【答案】:A

【解析】

去掉满二叉树右下角的节点后的树就是完全二叉树,即若给所有节点编号,完全二叉树中逐层遍历的所有节点的编号是连续的。高度为5时,第5层可以有16个叶子节点,可以删除0-15个叶子节点,共16种形态

9、表达式a*(b+c)*d的后缀表达式为( ),其中“*”和“+”是运算符。

A.**a+bcd

B.abc+*d*

C.abc+d**

D.*a*+bcd

【答案】:B

【解析】

中缀表达式转为后缀表达式,可以使用

1.加括号:a*(b+c)*d --> ((a*(b+c))*d)

2.将运算符移到每对运算式的右边:((a(bc)+)*d)*

3.去括号:abc+*d*

10、6个人,两个人组一队,总共组成三队,不区分队伍的编号。不同的组队情况有( )种。

A.10

B.15

C.30

D.20

【答案】:B

【解析】

第一队,从6人中挑2人,C(6,2) = 6*5/2 = 15

第二队,从4人中挑2人,C(4,2) = 4*3/2 = 6

第三队,从2人中挑2人,C(2,2) = 2*1/2 = 1

如果15*6*1 = 90,则是有顺序的挑法,所以需要去掉3支队伍的不同排列数A(3,3),所以90 / A(3,3) = 15

11、在数据压缩编码中的哈夫曼编码方法,在本质上是一种( )的策略。

A.枚举

B.贪心

C.递归

D.动态规划

【答案】:B

【解析】

哈夫曼编码本质上是哈夫曼树的一个应用。哈夫曼树构造就是给定N个带权值的叶子节点,构造出一个带权路径长度最小的二叉树。如果想要带权路径长度最小,我们应该将权值越小的节点放在越底层,因为这些节点路径长度比较长,权值小点,这样计算出来的带权路径长度就较小。这个其实就是基于贪心的策略。

12、由1,1,2,2,3这五个数字组成不同的三位数有( )种。

A.18

B.15

C.12

D.24

【答案】:A

【解析】

假设三位数是abc,按照如下计算,共18种不同的数字

a=1
  b=1 c=2/3 2种;
  b=2 c=1/2/3 3种;
  b=3 c=1/2 2种;
a=2
  b=1 c=1/2/3 3种;
  b=2 c=1/3 2种;
  b=3 c=1/2 2种;
a=3
  b=1 c=1/2 2种;
  b=2 c=1/2 2种;

13、考虑如下递归算法

solve(n)
    if n<=1 return 1
    else if n>=5 return n*solve(n-2)
    else return n*solve(n-1)

则调用solve(7) 得到的返回结果为( )。

A.105

B.840

C.210

D.420

【答案】:C

【解析】

列出递推矩阵,得到结果为210,选C

i     0  1  2         3         4          5          6           7
f(i)  1  1  2*f(1)=2  3*f(2)=6  4*f(3)=24  5*f(3)=30  6*f(4)=144  7*f(5)=210

14、以a为起点,对右边的无向图进行深度优先遍历,则b、c、d、e四个点中有可能作为最后一个遍历到的点的个数为( )。

A.1

B.2

C.3

D.4

【答案】:B

【解析】

列出所有深度优先遍历的结果:

abdce

acdbe

acedb

所以作为最后一个遍历到的点的个数有2个,分别是b和e

15、有四个人要从A点坐一条船过河到B点,船一开始在A点。该船一次最多可坐两个人。已知这四个人中每个人独自坐船的过河时间分别为1,2,4,8,且两个人坐船的过河时间为两人独自过河时间的较大者。则最短( )时间可以让四个人都过河到B点(包括从B点把船开回A点的时间)

A.14

B.15

C.16

D.17

【答案】:B

【解析】

使用贪心策略,第一条就是希望过河时间最长的人少来回,过去后就不要再回来了。第二条就是希望把船开回来的人的时间尽可能短。画个模拟图

1&2&4&8   A  ---------  B
     4&8   A  ---1&2---> B
     4&8   A  <---1----  B 2
       1   A  ---4&8---> B 2
       1   A  <---2----  B 4&8
           A  ---1&2---> B 4&8

最短的时间=2+1+8+2+2=15

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值