CSPJ初赛试题NOIP普及组试题详解.docx
- 文档编号:10669467
- 上传时间:2023-02-22
- 格式:DOCX
- 页数:15
- 大小:53.29KB
CSPJ初赛试题NOIP普及组试题详解.docx
《CSPJ初赛试题NOIP普及组试题详解.docx》由会员分享,可在线阅读,更多相关《CSPJ初赛试题NOIP普及组试题详解.docx(15页珍藏版)》请在冰豆网上搜索。
CSPJ初赛试题NOIP普及组试题详解
2019年CSP-J初赛试题(普及组)试题详解
一、单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)
1.中国的国家顶级域名是?
A.cnB.chC.chnD.china
【答案】A
2.二进制数11101110010111和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=1;b<=c;b++)s=s-1;
则与上述程序段功能等价的赋值语句是?
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+1处),则该数组的最大下标至少为?
A.6B.10C.15.D.12
【答案】C
【解析】2^4-1=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(千米/时)
为了尽量多消耗千卡,尽量少跑时间,应该尽量多用方案二,每天一小时最多有三天,3×5=15(公里),剩下21-15=6(公里),用方案一,正好可以锻炼6÷3=2(天)综上,最多消耗2×300+3×600=2400(千卡)。
12.一副纸牌除掉大小王有52张牌,四种花色,每种花色13张。
假设从这52张牌中随机抽取13张纸牌,则花色一致的牌数至少是?
A.4B.2C.3D.5
【答案】A
【解析】13/4=3……13+1=4
13.一-些数字可以颠倒过来看,例如0、1、8颠倒过来还是本身,6颠倒过来是9,9颠倒过来看还是6,其他数字颠倒过来都不构成数字。
类似的,一些多位数也可以颠倒过来看,比如106颠倒过来是901。
假设某个城市的车牌只由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=75。
14.假设一棵二叉树的后序遍历序列为DGJHEBIFCA,中序遍历序列为DBGEHJACIF,则其前序遍历序列为?
A.ABCDEFGHIJB.ABDEGHJCFIC.ABDEGJHCFID.ABDEGHJFIC
【答案】B
【解析】
作出二叉树的图:
15.15.以下哪个奖项是计算机科学领域的最高奖?
A.图灵奖B.鲁班奖C.诺贝尔奖D.普利策奖
【答案】C
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,错误填×;除特殊说明外,判断题1.5分,选择题3分,共计40分)
1.
1.#include
2.#include
3.usingnamespacestd;
4.charst[100];
5.intmain(){
6.scanf("%s",st);
7.intn=strlen(st);
8.for(inti=1;i<=n;++i){
9.if(n%i==0){
10.charc=st[i-1];
11.if(c>='a')
12.st[i-1]=c-'a'+'A';
13.}
14.}
15.printf("%s",st);
16.return0;
17.}
•判断题
1.输入的字符串只能由小写字母或大写字母组成。
2.若将第8行的“i=1”改为“i=0”,程序运行时会发生错误。
3.若将第8行的“i<=n”改为“i*i<=n”,程序运行结果不会改变。
4.若输入的字符串全部由大写字母组成,那么输出的字符串就跟输入的字符串一样。
•选择题
5.若输入的字符串长度为18,那么输入的字符串跟输出的字符串相比,至多有()个字符不同。
A.18B.6C.10D.1
6.若输入的字符串长度为(),那么输入的字符串跟输出的字符串相比,至多有36个字符不同。
A.36B.105 C.1D.128
【答案】
判断题:
×√×√
选择题:
BB
2.
#include
usingnamespacestd;
intn,m;
inta[100],b[100];
intmain(){
scanf("%d%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] if(a[x]>0) b[a[x]]=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("%d",ans); return0; } •判断题 假设输入的n和m都是正整数,x和y都是在[1,n]的范围内的整数,完成下面的判断题和单选题: 当m>0时,输出的值一定小于2n。 () 执行完第27行的"++ans"时,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.原来是2n,有m对数被减掉,即2n-2m。 2.只存两个数,即2n-2。 3. #include usingnamespacestd; constintmaxn=10000; intn; inta[maxn]; intb[maxn]; intf(intl,intr,intdepth){ if(l>r) return0; intmin=maxn,mink; for(inti=l;i<=r;++i){ if(min>a[i]){ min=a[i]; mink=i; } } intlres=f(l,mink-1,depth+1); intrres=f(mink+1,r,depth+1); returnlres+rres+depth*b[mink]; } intmain(){ cin>>n; for(inti=0;i cin>>a[i]; for(inti=0;i cin>>b[i]; cout< return0; } •判断题 1.如果a数组有重复的数字,则程序运行时会发生错误。 () 2.如果b数组全为0,则输出为0。 () •选择题 3.当n=100时,最坏情况下,与第12行的比较运算执行的次数最接近的是: ()。 A.5000B.600C.6D.100 4.当n=100时,最好情况下,与第12行的比较运算执行的次数最接近的是: ()。 A.100B.6C.5000D.600 5.当n=10时,若b数组满足,对任意0<=i A.386B.383C.384D.385 6.(4分)当n=100时,若b数组满足,对任意0Si<71,都有b[i]=1,那么输出最小为()。 A.582B.580C.579D.581 【答案】 判断题: ×√ 选择题: ADDB 三、完善程序(单选题,每小题3分,共计30分) 1.(矩阵变幻)有一个奇幻的矩阵,在不停的变幻,其变幻方式为: 数字0变成矩阵 00 01 数字1变成矩阵 11 10 最初该矩阵只有一个元素0,变幻n次后,矩阵会变成什么样? 例如,矩阵最初为: [0];矩阵变幻1次后: 10 01 矩阵变幻2次后: 1000 1101 1011 0110 输入一行一个不超过10的正整数n。 输出变幻n次后的矩阵。 试补全程序。 提示: << 表示二进制左移运算符,例如(11)_2<<2=(1100)_2(11)2<<2=(1100)2; 而 ^ 表示二进制异或运算符,它将两个参与运算的数中的每个对应的二进制位—进行比较,若两个二进制位相同,则运算结果的对应二进制位为0,反之为1。 #include usingnamespacestd; intn; constintmax_size=1<<10; intres[max_size][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("%d",&n); recursive(0,0,④); intsize=⑤; for(inti=0;i for(intj=0;j printf("%d",res[i][j]); puts(""); } return0; } 1处应填() A.n%2B.0C.tD.1 ②处应填() A.x-step,y-stepB.X,y-stepC.x-step,yD.x,y ③处应填() A.x-step,y-stepB.x+step,y+stepC.x-step,yD.X,y-step ④处应填() A.n-1,n%2B.n,0C.n,n%2D.n-1,0 ⑤处应填() A.1<<(n+1)B.1< 【答案】CDBBB 2.(计数排序)计数排序是一个广泛使用的排序方法。 下面的程序使用双关键字计数排序,将n对10000以内的整数,从小到大排序。 例如有三对整数(3,4)(3,4)、(2,4)(2,4)、(3,3)(3,3),那么排序之后应该是(2,4)(2,4)、(3,3)(3,3)、(3,4)(3,4) 。 输入第一行为nn,接下来nn行,第ii行有两个数a[i]a[i]和b[i]b[i],分别表示第ii对整数的第一关键字和第二关键字。 从小到大排序后输出。 数据范围 1 提示: 应先对第二关键字排序,再对第一关键字排序。 数组ord[]存储第二关键字排序的结果,数组res[]存储双关键字排序的结果。 试补全程序。 #include #include usingnamespacestd; constintmaxn=10000000; constintmaxs=10000; intn; unsigneda[maxn],b[maxn],res[maxn],ord[maxn]; unsignedcnt[maxs+1]; intmain(){ scanf("%d",&n); for(inti=0;i scanf("%d%d",&a[i],&b[i]); memset(cnt,0,sizeof(cnt)); for(inti=0;i ①;//利用cnt数组统计数量 for(inti=0;i cnt[i+1]+=cnt[i]; for(inti=0;i ②;//记录初步排序结果 memset(cnt,0,sizeof(cnt)); for(inti=0;i ③;//利用cnt数组统计数量 for(inti=0;i cnt[i+1]+=cnt[i]; for(inti=n-1;i>=0;--i) ④//记录最终排序结果 for(inti=0;i printf("%d%d",⑤); return0; } ①处应填() A.++cnt[i]B.++cnt[b[i]]C.++cnt[a[i]*maxs+b[i]]D.++cnt[a[i]] ②处应填() A.ord[--cnt[a[i]]]=iB.ord[--cnt[b[i]]]=a[i] C.ord[--cnt[a[i]]]=b[i]D.ord[--cnt[b[i]]]=i ③处应填() A.++cnt[b[i]]B.++cnt[a[i]*maxs+b[i]]C.++cnt[a[i]]D.++cnt[i] ④处应填() A.res[--cnt[a[ord[i]]]]=ord[i]B.res[--cnt[b[ord[i]]]]=ord[i] C.res[--cnt[b[i]]]=ord[i]D.res[--cnt[a[i]]]=ord[i] ⑤处应填() A.a[i],b[i]B.a[res[i]],b[res[i]]C.a[ord[res[i]]]jb[ord[res[i]]]D.a[res[ord[i]]]jb[res[ord[i]]] 【答案】BDCAB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CSPJ 初赛 试题 NOIP 普及 详解