CCFCSPJ入门级CC++语言试题与答案解析.docx

上传人:b****5 文档编号:6074363 上传时间:2023-01-03 格式:DOCX 页数:17 大小:53.56KB
下载 相关 举报
CCFCSPJ入门级CC++语言试题与答案解析.docx_第1页
第1页 / 共17页
CCFCSPJ入门级CC++语言试题与答案解析.docx_第2页
第2页 / 共17页
CCFCSPJ入门级CC++语言试题与答案解析.docx_第3页
第3页 / 共17页
CCFCSPJ入门级CC++语言试题与答案解析.docx_第4页
第4页 / 共17页
CCFCSPJ入门级CC++语言试题与答案解析.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

CCFCSPJ入门级CC++语言试题与答案解析.docx

《CCFCSPJ入门级CC++语言试题与答案解析.docx》由会员分享,可在线阅读,更多相关《CCFCSPJ入门级CC++语言试题与答案解析.docx(17页珍藏版)》请在冰豆网上搜索。

CCFCSPJ入门级CC++语言试题与答案解析.docx

CCFCSPJ入门级CC++语言试题与答案解析

2019CCF非专业级别软件能力认证第一轮

(CSP-J)入门级C++语言试题参考答案与解析

一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)

1.中国的国家顶级域名是()

A..cnB.•chC..chnD..china

答案:

A

考点:

计算机基础-计算机网络-•域名

解析:

典型的国家顶级域名有.cn(中国)、.us(美国)、.uk(英国)、.jp(Fl本)、.sg(新加坡)等。

典型的通用顶级域名有.edu(教育机构)、.gov(政府部门)、.net(网络组织)、.com(商业组织)、.org(非营机构)、.mil(军事部门)等。

2.二进制数11101110010111和01011011101011进行逻辑与运算的结果是()。

A.01001010001011B.01001010010011

C.01001010000001D.01001010000011

答案:

D

考点:

计算机基础-数制与编码-二进制-位运算

解析:

逐位进行与运算。

对于每-位,0与0得0,1与0得0,0与1得0,1与1得1。

3.一个32位整型变量占用()个字节。

A.32B.128C・4D・8

答案:

C

考点:

计算机基础-计算机体系结构-内存空间

解析:

8位是1字节,因此32位是4字节。

在C++语言中,int是最常用的带符号32位整型变暈,可表示数值[-2二unsignedint是最常用的无符号32位整型变量,可表示数值[0,232-l]o

4.若有如下程序段,其中s、a、b、c均已定义为整型变屋,且a、c均已赋值(c大于0)

s=a;

for(b=1;b<=c;b++)s=s-1;

则与上述程序段功能等价的赋值语句足()

A.s=a-c;B.s=a-b;C・s=s-c;D.s=b-c;答案:

A

考点:

程序设计基础-C++语法基础-循环语句

解析:

s初始化为3,紧接着for循环c次,每次s减1,因此该程序段相当于s=a~Co

5.设有100个已排好序的数据元素.采用折半查找时,最大比较次数为()

A.7B.10C.6D.8

答考解

A

:

程序设计基础-算法与数据结构■折半査找(二分查找)

:

对100个有序元素进行折半查找,每次查找可将检索范围缩小一半。

由2”-1〈100"27-1可知,最大比较次数为7。

6・链表不具有的特点是()

A.插入删除不需要移动元素B.不必事先估计存储空间

C.所需空间与线性表长度成正比D.可随机访问任一元素

答案:

D

考点:

程序设计基础■算法与数据结构-链表

解析:

链表是通过记录每个元素的后继位置來实现数据存储,所需空间与元素个数成正比,优点是不必事先估汁存储空间、插入或删除指定位置元素的时间复杂度为0

(1):

但缺点是由于其元素的内存地址不连续,无法进行0

(1)的随机访问。

7・把8个同样的球放在5个同样的袋子里,允许有的袋子空着不放,问共有多少冲不同的分法?

()提示:

如果8个球都放在一个袋子里,无论足哪个袋子,都只算同一种分法

A.22B.24C.18D.20

答考解案合

案:

C

点:

数学■计数问题

析:

枚举法求解,8个同样的球分1个袋子共1种方案,分2个袋子共4种方,分3个袋子共5种方案,分4个袋子共5种方案,分5个袋子共3种方案,计18种。

&一棵二叉树如右图所示,若采用顺序存储结构,即用维数组元素存储该二叉树中的结点(根结点的下标为1,若某结点的下标为i,则英左孩子位于下标2i处.右孩子位于下标2i+l处),则该数组的展大下标至少为()。

答考解点

案:

C

点:

程序设计基础-算法与数据结构-树结构

析:

根据题目给定的规则可知,下标最大的结点为树中深度最大且最靠右的结,其下标为((l*2+l)*2+l)*2+l=15o

9.

100以内最人的索数是()。

A.89B.97

答案:

B

考点:

数学-素数与合数

解析:

98・100均为合数,97为素数。

10.319和377的最大公约数是()。

A.27B.33C.29D.31

答案:

C

考点:

数学■公约数与公倍数

解析:

使用辗转相除法可得GCI)(319,377)=GCD(319,58)=GCD(58,29)=290或将两数分解质因数后,提取公共部分亦可求解。

11.新学期开学了,小胖想减肥,健身教练给小胖制定了两个训练方案。

方案一:

每次连续跑3公里口J以消耗300千卡(耗时半小时):

方案二:

每次连续跑5公里可以消耗600千卡(耗时1小时)。

小胖每周周一到周四能抽出半小时跑步,周五到周口能抽出-小时跑步。

另外,教练遂议小胖每周最名跑21公里,否则会损伤膝孟。

请问如果小胖想严格执行教练的训练方案,并且不想损伤膝盖,每周最参通过跑步消耗多少千卡?

()

A.3000B.2500C.2400D.2520

答案:

C

考点:

程序设计基础••算法与数据结构■枚举算法

解析:

设方案1执行x天,方案2执行y天,则有3x+5y<=21>x+y<=7、y<=30要求300x+600y的最大值,枚举可得最优方案为x=2、y=3,此时300x+600y为2400.或使用线性规划亦可求解。

12•—副纸牌除掉大小王有52张牌,四种花色,每种花色13张。

假设从这52张牌中随机抽取13张纸牌,则至少()张牌的花色一致。

A.4B.2C.3D.5

答案:

A

考点:

数学■抽屉原理

解析:

最坏情况,13张牌对应四种花色的牌数为3、3、3、4o

13.—吐数字可以颠倒过来看,例如0、1、8颠倒过来还是本身,6颠倒过来是

9,9颠倒过来看还是6,其他数字颠倒过来都不构成数字。

类似的,一些多位数也可以颠倒过来看,比如106颠倒过来是901o假设某个城市的车牌只山5位数字组成,每-•位都可以取0到9。

请问这个城市就多有多少个车牌倒过来恰好还是原来的车牌?

()

A.60B.125C.75D.100

答案:

C

考点:

数学■乘法原理

解析:

前2位有0、1、&6、9共5种选择,第3位只能放0、1、8,后2位由前2位决定,因此总方案数为5*5*3*l*l=75o

14.假设一棵二叉树的后序遍历呼列为DGJHEBII'CA,序遍历用列为DBGEIIJACIF,则其前序遍历序列为()。

A.ABCDEFGIIIJB.ABDEGHJCFIC.ABDEGJIICFID.ABDEGHJFIC答案:

B

考点:

程序设计基础-算法与数据结构-树结构

解析:

后序遍历的规则是“左右根”、中序遍历的规则是''左根右”,因此可知,A是树根、DBGE町是A左子树的中序遍历(对应后续遍历DGJHEB)、CIF是A右子树的中序遍历(对应后续遍历IFC),递归画出对应的二叉树,再根据前序遍历规则“根左右”即可求出答案。

15.以下哪个奖项是计算机科学领域的最高奖?

()

A.图灵奖B.再班奖C.诺贝尔奖D.普利策奖

答案:

A

考点:

计算机基础-常识■重要人物

解析:

图灵奖由美国计算机协会于1966年设、'/:

其名称取自计算机科学之父图灵,专门奖励对计算机事业作出重要贡献的个人,被誉为“计算机界的诺贝尔奖”。

二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填错误填X;除特殊说明外,判断题1.5分,选择题4分,共计40分)

程序一

1#inelude

2#include

3usingnamespacestd;

4charst[100];

5intmain(){

6scanf('^s"jst);

7intn=strlen(st);

8

for(inti=

1;i<=n;++i){

9

if(n%i:

==0){

10

charc=

妣[i・1];

11

if(c>=

•a*)

12

st[i・

1]=c・'a,+*A';

13

}

14

}

15

printf(,l%s\

st);

16

return0;

17

}

考点:

程序设汁基础-算法与数据结构-字符串

概述:

程序用于将字符串下标(如果从1开始编号,但C++语言中实际是从0开始编号)是n约数的对应小写字母转换为大写字母。

•判断题

1)输入的字符串只能由小写字母或大写字冊组成。

()答案:

解析:

输入的字符串也可以包含数字等其他字符。

2)若将第8行的“i=1”改为“i=0°,程序运行时会发牛错误。

()

答案:

解析:

若i可以为0,则第9行的辻语句条件“n%i=0”将发生运行时错误REo

3)若将第8行的“i<=n”改为“i*i<=n”,程序运行结果不会改变。

()

答案:

解析:

当第8行的循环条件为“iOn”时,字符串的末尾字符会被程序加工,但

若改为“i*i<=n”,字符串的末尾字符将不会被程序加工(除非字符串长度为1)。

4)若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样。

()

答案:

解析:

大写字母的ASCII编码值小于小写字母的。

若输入的字符串全部由大写字母组成,则程序不会对其进行加工。

•选择题

5)若输入的字符巾长度为18,那么输入的字符阳跟输出的字符妝相比,至多有()个字符不同。

A.18B.6C.10D.1

答案:

B

解析:

18的止约数共有6个,因此程序至多修改输入字符串中的6个字符,即输出字符串与输入字符串至多有6个字符不同。

6)若输入的字符串长度为(),那么输入的字符串跟输岀的字符串相比,至多有36个字符不同。

A.36B.100000C・1D.128

答案:

B

解析:

根据程序的作用可知,要使输出字符串和输入字符串之间至多有36个字符不同,36应当是字符串长度n的约数个数。

木题选项中,仅有100000满足要求,将其分解质因数得1000002环5",得其的止约数共有(5+1)*(5+1)=36个。

程序二

1#inelude

2usingnamespacestd;

3intn,m;

4inta[100],b[100];

5

6

intmain(){

7

scanf(,,%d%d,,>

&n,&m);

8

for(inti=

1;i<=n;++i)

9

a[i]=b[i]

=0;

10

for(inti=

1;i<=m;++i){

11

intx»y;

12

scanf(il%d%d\&y);

13

if(a[x]<

y&&b[y]

14

if(a[x]

>0)

15

b[a[x]]

=0;

16

if(b[y]

>0)

17

a[b[y]]

=0;

18

a[x]=y;

19

b[y]=x;

20

}

21

}

22

intans=0;

23

for(inti=

1;i<=n;++i){

24

if(a[i]==

0)

25

++ans;

26

if(b[i]==

0)

27

++dns;

28

}

29

printf(u%d\nM

ans);

30

return0;

31

}

假设输入的n和m都是正整数,x和y都是4[1,n]的范围内的整数,完成下面的判断题和单选题:

考点:

程序设计基础■算法与数据结构■模拟算法

概述:

程序可以视作通过模拟算法选出一系列互不冲突的数对一一若数对g,yj和(x?

yj之间有x.==x2或*则认为这两个数对存在冲突,现按顺序考虑每一个数对(Xi,yj(要求满足前提:

在已经选用的数对中,与左值Xi匹配的右值小于力、与右值y:

匹配的左值小于,若该数对与此前已经选用的数对冲突,则用当前数对替换所冲突的原数对:

若无冲突,则直接选用当前数对。

程序中的Hx]用于记录,在己选用的数对中,与左值x相匹配的右值;b[y]用于记录,在已选用的数对中,与右值y相比配的左值;n表示数对左值和右值的取值范国为[l,n]:

最后的ans用于统计剩余多少左值或右值,没有相应数对被我们选中。

判断题

1)当m>0时,输出的值一定小于2n°()

答案:

解析:

由限定条件00时,一定存在某个数对被我们选中,此时ans<2n

2)执行完第27行的“++ans"时,ans—定是偶数。

()

答案:

解析:

山于数对是一个左值与一个右值相匹配,因此ansM终一定是偶数。

但第27行的“++ans”在第23行的for循环的内部,其中间结果可能为奇数。

3)a[i]和b[i]不可能同时大于0。

()

答案:

解析:

&[i]用于记录与左值i相匹配的右值,不存在则为0;b[i]用于记录与右值i相匹配的左值,不存在则为0。

当存在数对(i,y)和(x,i)都被我们选中时,a[i]和b[i]就会同时大于0o

4)若程序执行到第13行时,x总是小于y,那么第15行不会被执行。

()

答案:

解析:

存在反例一一依次考虑数对(1,2)(1,3)时,第15行程序会被执行。

•选择题

5)若m个x两两不同,且m个y两两不同,则输出的值为()

A.2n-2mB.2n+2C.2n-2D.2n

答案:

A

解析:

此时,输入的数对两两互不冲突,因此程序会将它们全部选中,根据上述ans的意义可知,其结果为2n-2mo

6)若m个x两两不同,且m个y都相等,则输出的值为()

A.2n~2B.2nC・2mI).2n~2m

答案;A

解析:

此时,输入的数对两两存在冲突,因此程序最终只会选用一个数对,根据上述ans的意义可知,其结果为2n-2o程序三

1#inelude

2usingnamespacestd;

3constintmaxn=10000;

4intn;

5inta[maxn];

6intb[maxn];

7intf(int1,intr,intdepth){

8if(1>r)

9return0;

10

intmin=maxn》mink;

11

for

(int

i=1;i<=r;++i){

12

il

F(min

>a[i]){

13

min=

a[i];

14

mink:

=i;

15

}

16

17

int

Ires

=f(ljmink-1,depth

+1);

18

int

rres

=f(mink+1,depth

+1);

19returnIres+rres+depth♦b[mink];

20}

21intmain(){

 

22

cin>>n;

23

for(inti=0;i

24

cin>>a[i];

25

for(inti=0;i

26

cin>>b[i];

27

cout<

28

return0;

29

}

考点:

程序设计基础■算法与数据结构-树结构

概述:

程序可以视作根据二叉树的中序遍历,构造一棵满足要求的树,并输出各结点深度与b值的加权和一一要求二叉树的根结点般小,并递归要求左右子树的根结点最小(除非相应子树为空)。

•判断题

1)如果a数组有重复的数字,则程序运行时会发生错误。

()

答案:

解析:

若a数组有重复数字,则程序在根据a数组递归构造符合要求的二叉树时,对于相同结点值,会优先考虑位于左侧的。

2)如果b数组全为0,则输岀为0。

()

答案:

解析:

程序最终输出的是各结点深度与b值的加权和,因此若b数组全为0,则加权和显然为0。

•选择题

3)当n=100时,最坏情况下,与第12行的比较运算执行的次数最接近的是:

()。

A.5000B.600C・6D.100

:

A

:

最坏情况下,程序所构造的二叉树的每个结点至多仅有一个子结点,此时,将递归100层,其中第i层进行100-i+l次第12行的比较运算,总执行次

4)n=100时,最好情况匚与第12行的比较运算执行的次数最接近的是:

()。

A.100B.6C.5000D.600

答案:

D

解析:

最佳情况下,程序构造二叉树时,对于每个结点会尽可能均分英左右子树。

定义根结点深度为1,则含n=100个结点的树的深度最小为logn^7,此时每选定一层结点,程序都盂要执行约n次的第12行的比较运算,因此总执行次数约为nlogn~600。

5)当n=10时.若b数组满足,对任意OSiVm都有b[i]=i4-1.那么输出垠大为()。

A.386B.383C.384D.385

答案:

D

解析:

此时,要使输出的ans值尽可能大,程序所松造的二叉树的深度应尽可能地大。

定义根结点深度为1,则含10个结点的二叉树的最大深度为10,因此ans的最大值为1*1+2*2+3*3+・-+10*10=385。

6)(4分)当n=100吋,若b数组满足,对任意OSiVn,都有b[i]=

1,那么输出最小为()。

A.582B.580C.579I).581

答案:

B

解析:

此时,要使输出的ans值尽可能小,程序应参照完全二叉树构造此树,其中深度为1的结点共1个,深度为2的结点共2个,深度为3的结点共4个……深度为6的结点共32个,剩余37个结点的深度为7,因此ans的最小值为

(1*1-2*2+3*4+・・・+6*32)+7*37=580。

三、完善程序(单选题,每题3分,共计30分)

程序一

(矩阵变幻)有一个奇幻的矩阵,在不停的变幻,其变幻方式为:

数字0变成矩阵昨;],数字1变成矩阵I:

J]o最初该矩阵只有一个元素0,变幻n次后,矩阵会变成什么样?

例如,矩阵鼓初为:

[0]:

矩阵变幻1次后:

[JJ]:

矩阵变幻2次后:

0000

0101

0011

Lo11oJ

输入一行一个不超过10的止整数no输出变幻n次后的矩阵.

试补全程序。

提示:

“<<”表示二进制左移运算符,例如(11)2«2=(1100)2;

而“八”表示二进制异或运算符,它将两个参与运算的数中的每个对应的二进制位一一进行比较,若两个二进制位相同,则运算结果的对应二进制位为0,反之为

1#include

2usingnamespacestd;

3intn;

4constintmax_size=1<<10;

5

5intres[max_size][max_size];

7

6voidrecursive(intx,inty,intn,intt){

7if(n==0){

8res[x][y]=①;

9return;

10}

11intstep=1<<(n-1);

12recursive(②,n・1,t);

13recursive(x?

y+step,n・t);

14recursive(x+step,y,n•1,t);

15recursive(③,n・1,!

t);

16}

19

17intmain(){

18scanf(H%dH,&n);

19recursive(0,0,④);

20intsize=⑤;

21for(inti=0;i

22for(intj=0;j

23printf("%dM,res[i][j]);

24puts(““);

25}

26return0;

27}

考点:

程序设计基础-算法与数据结构-分治算法

概述:

程序采用分治算法,递归模拟矩阵的变换过程。

递归函数

recursive(x,y,n,t)表示计算左上角(x,y),大小2"*2",ftl单个数字t变幻而來的矩阵。

1)①处应填()

A.n%2B.0C.tD.1

答案:

C

解析:

此处为递归边界,当需要计算的是氓位矩阵时,相应元素应赋值为t,即无需再经任何变换。

2)②处应填()

A.x-step,y-stepB・x,y・step

C.x・step,yD.x,y

答案:

D

解析:

左上角(x,y),且大小2*2"的矩阵,可以分成4个2"*2心的矩阵分别计算。

此处需要计算的是4个矩阵中位于左上方的矩阵,该矩阵的左上角坐标为(x,y)o

B・x+step,y+step

I).x»y•stap

!

B

:

左上角(x,y),且大小2*2"的矩阵,可以分成4个2n,*2nH的矩阵分别计此处需要计算的是4个矩阵中位于右下方的矩阵,该矩阵的左上角坐标为nI,y+2n,)o

4)④处应填(〉

A.n■1,n%2B・n,0

C.n%2D.n-1^0

答案:

B

解析:

此处是递归计算的入口,即题目最终所求的是大小2*2",由单个数字0变幻闻来的矩阵,因此递归函数的后两个参数应设为n和0。

5)⑤处应填()

A.1<<(n+1)B.1<

C.n+1I).1«(n・1)

答案:

B

解析:

此处是讣算最终所求的矩阵大小,即边Ksizc为賂位运算写做"l«n\程序二

2.(计数排序)计数排序足一个广泛使用的排序方法。

下面的程序使用双关键字计数排序,将n对10000以内的整数,从小到大排序。

例如有三对整数(3,4)、(2,4)、(3,3),那么排序之后应该是(2,4)、(3,3)、(3,4)o

输入第一行为m接下来n行.第i行有两个数n[i]和b[i]・分别表示第i对整数的第一关键字和笫二关键字。

从小到大排序后输出。

数据范围l

提示,应先对第二关键字排序,再对第一关键字排序V数组ord[]存储第二关键字排序的结果,数组res[]存储双关键字排序的结果。

试补全程序。

1#inelude

2#inelude

3usingnamespacestd;

4constintmaxn=10000000;

5constintmaxs=10000;

6

6intn;

7

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1