CSPJ初赛试题NOIP普及组试题详解.docx

上传人:b****1 文档编号:23090565 上传时间:2023-04-30 格式:DOCX 页数:16 大小:41.32KB
下载 相关 举报
CSPJ初赛试题NOIP普及组试题详解.docx_第1页
第1页 / 共16页
CSPJ初赛试题NOIP普及组试题详解.docx_第2页
第2页 / 共16页
CSPJ初赛试题NOIP普及组试题详解.docx_第3页
第3页 / 共16页
CSPJ初赛试题NOIP普及组试题详解.docx_第4页
第4页 / 共16页
CSPJ初赛试题NOIP普及组试题详解.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

CSPJ初赛试题NOIP普及组试题详解.docx

《CSPJ初赛试题NOIP普及组试题详解.docx》由会员分享,可在线阅读,更多相关《CSPJ初赛试题NOIP普及组试题详解.docx(16页珍藏版)》请在冰豆网上搜索。

CSPJ初赛试题NOIP普及组试题详解.docx

CSPJ初赛试题NOIP普及组试题详解

2019年CSP-J初赛试

(普及组)试题详解

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

1.中国的国家顶级域名是?

A.CnB.ChC.ChnD.China

【答案】A

2.二进制数1110111001Olll和01011011101011进行逻辑与运算的结果是?

A.01001010001011B.01001010010011

C.01001010000001D.01001010000011

【答案】D

【解析】

3.一个32位整型变量占用的字节数是?

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

【答案】C

【解析】32÷8=4(字节)

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

s=a;

for(b=l;b<=c;b++)S=S-I;

则与上述程序段功能等价的赋值语句是?

A.s=a-c;B.s=a~b;C.S=S-C;D.s=b~c;

【答案】A

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

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

【答案】A

【解析】26<100<27

6.链表不具有的特点是?

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

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

【答案】D

7・7・把8个同样的球放在5个同样的袋子里,允许有的袋子空着不放,问共有多少种不同的分法(如果8个球都放在一个袋子里,无论是哪个袋子,都只算同一种分法)?

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

【答案】C

【解析】因为袋子数量不多,可以枚举岀所有分法:

0,

0,

0,

0,8

0,

0,

0,

1,7

0,

0,

0,

2,6

0,

0,

0,

3,5

0,

0,

0,

4,4

0,

0,

1,

1,6

0,

0,

1,

2,5

0,

0,

1,

3,4

0,

0,

2,

2,4

0,

0,

2,

3,3

0,

1,

1,

1,5

0,

1,

1,

2,4

0,

1,

1,

3,3

0,

1,

2,

2,3

0,

2,

2,

2,2

1,

1,

1,

1,4

1,

1,

1,

2,3

1,

1,

2,

2,2

8.—棵二义树如右图所示,若采用顺序存储结构,即用一维数组元素存储该二义

树中的结点(根结点的下标为1,若某结点的下标为i,则其左孩子位于下标2i

处、

右孩子位于下标2i+l处),则该数组的最大下标至少为?

 

A.6B.10C.15.D.12

【答案】C

【解析】2^4-l=15

9.100以内最大的素数是?

A.89B.97.C.91D.93

【答案】B

10.319和377的最大公约数是?

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

【答案】C

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

方案一:

每次连续跑3公里可以消耗300千卡(耗时半小时);方案二:

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

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

另外,教练建议小胖每周最多跑21公里,否则会损伤膝盖。

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

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

【答案】C

【解析】

消耗千卡数与时间成正比。

方案一:

3÷∣二6(千米/时)

方案二:

5÷1二5(千米/时)

为了尽量多消耗千卡,尽量少跑时间,应该尽量多用方案二,每天一小时最多有三天,3X5=15(公里),剩下21-15二6(公里),用方案一,正好可以锻炼6÷3二2

(天)综上,最多消耗2X300+3X600二2400(千卡)。

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

假设从这52张牌中随机抽取13张纸牌,则花色一致的牌数至少是?

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

【答案】A

【解析】13/4=313+1=4

13.—-些数字可以颠倒过来看,例如0、1、8颠倒过来还是本身,6颠倒过来是9,9颠倒过来看还是6,其他数字颠倒过来都不构成数字。

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

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

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

【答案】C

【解析】一个五位数倒过来,第一位变到第五位,第五位变到第一位,即第一位倒过来等于第五位,第五位倒过来等于第一位,有0-0、1-1,8-8,6-9,9-6五种情况。

同理,第二位和第四位也有五种情况。

第三位倒过来还是第三位,也就是只能说0、1、8三种。

根据乘法原理,得共有5*5*3=75O

14.假设一棵二义树的后序遍历序列为DGJHEBlFCA,中序遍历序列为DBGEHJACIF,则其前序遍历序列为?

A.ABCDEFGH叮B・ABDEGHJCFlC・ABDEGJHCFlD・ABDEGHJFlC

【答案】B

【解析】

作岀二义树的图:

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

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

【答案】C

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

1.#include

2.#include

3.USingnamespacestd;

4.CharSt[100];

5.intmain(){

6.SCanf(z,%szz,st);

7.intn=Strlen(St);

8.for(inti=1;i<=n;++i){

9.if(n%i二二O){

10.CharC=St[i-1];

11.if(C>=,a)

12.st[i-1]=c-,a,÷,A,;

13.}

14.}

15.Printf("%s",st);

16.returnO;

17.}

•判断题

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

2.若将第8行的“i二1”改为“i二0”,程序运行时会发生错误。

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

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

•选择题

5.若输入的字符串长度为1&那么输入的字符串跟输出的字符串相比,至多有O个字符不同。

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

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

A.36B.IO5C.1D.128

【答案】

判断题:

×√×√

选择题:

BB

2.

#include

USingnamespacestd;

intn,m;

inta[100],b[100];

intmain(){

SCanf("%d‰Γ,&n,&m);

for(inti=1;i<=n;++i)a[i]=b[i]=0;

for(inti=1;i<=m;++i){intx,y;

SCanf(,,%d%d,,>&x,&y);

if(a[x]〈y&&b[y]0)

b[a[x]J=0;

if(b[y]>0)

a[b[y]]=0;

a[x]=y;

b[y]=x;

}

}

intans=0;

for(inti=1;i<=n;++i){if(a[i]=0)

++ans;

if(b[i]=0)

++ans;

Printf("‰Γ,ans);

returnO;

}

•判断题

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

当m〉O时,输出的值一定小于2n。

()

执行完第27行的,,÷÷ans,z时,ans-定是偶数。

()

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

()

右程序执行到第13行时,X总是小于y,那么第15行不会被执行。

()

•选择题

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

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

1.

A.正确B.错误

2.

A.正确B.错误

3.

A.正确B.错误

4.

A.正确B.错误

5.

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

6.

A.2n一2B.2nC.2mD.2n~2m

【答案】

判断题:

√×××

选择题:

AA

判断题:

4・15行是否执行要看14行,与13行无关。

选择题:

1・原来是2m有In对数被减掉,即2n-2m°

2.只存两个数,即2n-2o

3.

#include

USingnamespacestd;

COnStintmaxn=10000;

intn;

inta[maxn];

Intb[maxn];

intf(int1,intr,intdepth){

if(1>r)

return0;

intmin=maxn,mink;

for(inti=1;i<=r;++i){

if(min>a[i]){

min=aΓij;

mink=i;

intIreS=f(1,mink-1,depth+1):

intrres=f(Illink+1,r,depth+1):

returnIreS+rres+depth*b[mink]:

}

intmain(){

Cin

»n;

for

(inti

=0;

i<

n;

卄i)

Cin»

a[i];

for

(inti

=0;

i<

n;

÷÷i)

Cin»

b[i];

COUt

:

«f(0,n-

1,

D

«endl;

returnO;

}

•判断题

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

()

2.如果b数组全为0,则输出为OoO

•选择题

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

Oo

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

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

()。

A.IOOB.6C.5000D.600

5.当n二10时,若b数组满足,对任意O<=i

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

6.(4分)当n=100时,若b数组满足,对任意OSi<71,都有b[i]二1,那么输出最小为()。

A.582B.580C.579D.581

【答案】

判断题:

X√

选择题:

ADDB

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

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

数字0变成矩阵

00

01

数字1变成矩阵

11

10

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

例如,矩阵最初为:

[0];矩阵变幻1次后:

00

01

矩阵变幻2次后:

0000

0101

0011

0110

输入一行一个不超过10的正整数n。

输出变幻n次后的矩阵。

试补全程序。

提示:

«表示二进制左移运算符,例如(11)-2«2=(IIOO)_2(11)2«2=(1100)2;

而^表示二进制异或运算符,它将两个参与运算的数中的每个对应的二进制

位一进行比较,若两个二进制位相同,则运算结果的对应二进制位为0,反之为Io

nclude

USingnamespacestd;

intn;

COnStintmax_SiZe=1«10;

intres[max-sizeZΓmax-size];

VOidrecursive(intx,inty,intn,intt){

if(n=0){

res[x][y]=①;

return;

}

intSteP=1

«(n-1);

recursive(②,

n-1,t);

recursive(x,

y+step,n一

1,

t);

recursive(X÷

•step,y,n-

1,

t);

recursive(③,

n-1,!

t);

}

intmain(){

SCanf(,z%d,∖&n);

recursive(O,O,④);

intSiZe=⑤;

for(inti=0;i

PUtSo:

}

returnO;

1处应填()

A.n%2B.OC.tD.1

2处应填()

A.X-Step,y~stepB.X,y~stepC.X-Step,yD.x,y

3处应填()

A.X-SteP)y-stepB.x+step,y+stepC.X-Step,yD.X,y-step

4处应填()

A.∏-1,n%2B.n,OC.n,n%2D.n~l,O

5处应填()

A.l<<(n+l)B.l«nC.n+1D.l<<(n~l)

【答案】CDBBB

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

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

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

(2,4)(2,4)、(3,3)(3,3)、(3,4)(3,4)。

输入第一行为",接下来IW行,第if行有两个数a[i]a[y]分别表

示第辽对整数的第一关键字和第二关键字。

从小到大排序后输出。

数据范围l

提示:

应先对笫二关键字排序,再对第一关键字排序。

数组。

rd[]存储第二关键字排序的结果,数组res[]存储双关键字排序的结果。

试补全程序。

#include

#include

USingnamespacestd;

COnStintmaxn=IOOOOO00;

COnStintmaxs=10000;

intn;

OrdEmaXnZ;

UnSignedaLmaXnZ,bEmaxnZ,resEmaXnJ,

UnSignedCnt[maxs+IJ;

intmain(){

SCanf("%d",&n);

for(Inti=0;i

SCanf("%d%d",&a[i],&.b[i]);memset(CntJ0,SiZeOf(Cnt));for(inti=0;i

1;//利用Cnt数组统计数量for(inti=0;i

cnt[i+IZ+二Cnt[i];

for(inti=0;i

2;//记录初步排序结果memset(CntJ0,SiZeOf(Cnt));for(inti=0;i

3;//利用Cnt数组统计数量

for(inti=0;i

CntLi+1_+二ent[iZ;

for(inti=n-1;i>=0;--i)

4//记录最终排序结果

for(inti=0;i

printf("%d%d",⑤);

return0;

}

1处应填()

A.++ent[i]B.++ent[b[i]]C.++entΓaLiZ*maxs+b[i]]D.++ent[a[i]J

2处应填()

A.Ord[一一CntEaLiZZj=iB・Ord[一一Cnt[b[i[[]=aLiZ

C.ord[—Cnt[a^iZZ1二b[i[D.ord[―Cnt[b[i][]=i

3处应填()

A.÷+cnt[b[i]JB.++ent[aΓiZ*maxs+b[i]]C.++ent[aEiIlD.++entZiZ

4处应填()

A.res[一一cnt[a[ord[iZZJ]=OrdriIB.res[一一CntEbEordLiZZJ]=ord[iZ

C.res[一一Cnt[b[i[[]=ord[iZD・res[一一ent[a[iΞJ二OrdLiI

5处应填O

A.aEi],bΓiZB.a[res[i]],b[res[i]]C・a[ord[res[i]]]jb[ord[res[iZZZ

D.a[res[ord[iZZ]jb[res[ord[i二

【答案】BDCAB

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

当前位置:首页 > 工程科技 > 建筑土木

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

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