Noip初赛提高组C试题及答案完整版noip提高组试题答案.docx
《Noip初赛提高组C试题及答案完整版noip提高组试题答案.docx》由会员分享,可在线阅读,更多相关《Noip初赛提高组C试题及答案完整版noip提高组试题答案.docx(9页珍藏版)》请在冰豆网上搜索。
Noip初赛提高组C试题及答案完整版noip提高组试题答案
Noip2021初赛提高组C试题及答案(完整版)2021noip提高组试题答案
Noip20__初赛提高组试题及答案(完整版)提高组C语言试题一、单项选择题(每题1.5分,共22.5分)。
1.
以下哪个是面向对象的高级语言().
A.
汇编语言B.
C++C.
FORTRAND.
Basic2.
1TB代表的字节数量是().
A.
2的10次方B.
2的20次方C.
2的30次方D.
2的40次方3.
二进制数00100100和00001的和是().
A.
00000B.
000100C.
01000D.
001110014.
TCP协议属于哪一层协议().
A.
应用层B.
传输层C.
网络层D.
数据链路层5.
下列几个32位IP地址中,书写错误的是().
A.
162.105.128.27B.
192.168.0.1C.
256.256.129.1D.
10.0.0.16.
在无向图中,所有定点的度数之和是边数的()倍.
A.
0.5B.
1C.
2D.
47.
对长度位n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为().
A.
n/2B.
(n+1)/2C.
(n-1)/2D.
n/48.
编译器的主要功能是().
A.
将一种高级语言翻译成另一种高级语言B.
将源程序翻译成指令C.
将低级语言翻译成高级语言D.
将源程序重新组合9.
二进制数111.所对应的十进制数是().
A.
5.625B.
5.5C.
6.125D.
7.62510.
若有变量inta,float_,y,且a=7,_=2.5,y=4.7,则表达式_+a%3_(int)(_+y)%2/4的值大约是().
A.
2.500000B.
2.750000C.
3.500000D.
0.00000011.
有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个续结点。
structnode{datane_tdatane_tdatane_tintdata;structnode_ne_t;↑p↑q↑r}_p,_q,_r;现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下程序段中错误的是().
A.
q->ne_t=r->ne_t;p->ne_t=r;r->ne_t=q;B.
p->ne_t=r;q->ne_t=r->ne_t;r->ne_t=q;C.
q->ne_t=r->ne_t;r->ne_t=q;p->ne_t=r;D.
r->ne_t=q;q->ne_t=r->ne_t;p->ne_t=r;12.
同时查找2n个数中的最大值和最小值,最少比较次数为().
A.
3(n-2)/2B.
4n-2C.
3n-2D.
2n-213.
设G是有6个结点的完全图,要得到一颗生成树,需要从G中删去()条边.
A.
6B.
9C.
10D.
1514.
以下时间复杂度不是O(n2)的排序方法是().
A.
插入排序B.
归并排序C.
冒泡排序D.
选择排序15.
以下程序实现了找第二小元素的算法。
输入时n个不等的数构成的数组S,输出S中第二小的数SecondMin。
在最坏的情况下,该算法需要做()次比较。
if(S[1]
2nB.
n-1C.
2n-3D.
2n-2二、不定项选择题(每题1.5分,共7.5分)。
1.
若逻辑变量A、C为真,B、D为假,以下逻辑运算表达式真的有().
A.
(B∨C∨D)∨D∧AB.
((-A∧B)∨C)∧BC.
(A∧B)∨(C∧D∨-A)D.
A∧(D∨-C)∧B2.
下列()软件属于操作系统软件。
A.
MicrosoftWordB.
Windows_PC.
AndroidD.
MacOS_E.
Oracle3.
在NOI比赛中,对于程序设计题,选手提交的答案不得包含下列哪些内容().
A.
试图访问网络B.
打开或创建
题目规定的输入/输出文件之外的其他文件C.
运行其他程序D.
改变文件系统的访问权限E.
读写文件系统的管理信息4.
以下哪些结构可以用来存储图().
A.
邻接矩阵B.
栈C.
邻接表D.
二叉树5.
下列各无符号十进制整数中,能用八位二进制表示的数有().
A.
296B.
133C.
256D.
199三、问题求解。
1.
有数字1,1,2,4,8,8所组成的不同的四位数的个数是_____.
2.
如图所示,图中每条边上的数字表示该边的长度,则从A到E的最短距离是_____.
四、阅读程序写结果(共4题,每题8分,共32分)。
1.
#includeintmain{inta,b,I,tot,c1,c2;scanf(“%d%d”,&;a,&;d);tot=0;for(i=a;i<=b;i++){c1=i/10;c2=i%10;if((c1+c2)%3==0)tot++;}Printf(“%d\n“,tot);Return0;}输入:
731输出:
_________
2.
#includeIntfun(intn,intminNum,intma_Num){inttot,i;if(n==0)retuen1;tot=0;for(i=minNum;i<=ma_Num;i++)tot+=fun(n-1,i=1,ma_Num);returntot;}intmian{intn,m;Scanf(“%d%d”,&;n,&;m);printf(“%d\n”,fum(m,1,n));return0;}输入:
63输出:
________
3.
#include#includeconstintSIZE=100;constintLENGTH=25;//strcmp(a,b)<0:
a的字典序小于b//strcmp(a,b)=1:
a和b一样//strcmp(a,b)>0:
a的字典序大于bintmainchardict[SIZE][LENGTH+1];intrank[SIZE];intind[SIZE];inti,j,n,tmp;scanf(“%d”,&;n);for(i=1;i<=n;i++){rank[i]=iind[i]=i;scanf(“%s”,dict[i]);}for(i=1;i0){tmp=ind[j];ind[j]=ind[j+1];ind[j+1]=tmp;}for(i=1;i<=n;i++)rank[ind[i]]=i;for(i=1:
i<=n;i++)ptintf(%d”,rank[i]);printf(“\n”);return0;}输入:
7aaaababbbaaaaaacccaa输出:
______
4.
#nicludeconstintSIZE=100;intalive[SIZE];intn;intne_t(intnum){do{num++;if(num>n)num=1;}while(alive[num]==0);returnnum;}intmain{intm,i,j,num;scanf(“%d%d”,&;n,&;m);for(i=1;i<=n;i++)alive[i]=1;num=1;for(i=1;i<=n;j++){for(j+1;j<=m;j++)num=ne_t(num);printf(“%d”,num);alive[num]=0;if(i113输出:
_________
五、完善程序1.(双栈模拟数组) 只使用两个栈结构stack1和stack2,模拟对数组的随机读取。
作为栈结构,stack1和stack2只能访问栈顶(最后一个有效元素)。
栈顶指针top1和top2均指向栈顶元素的下一个位置。
输入第一行包含的两个整数,分别是数组长度n和访问次数m,中间用单个空格隔开。
第二行包含n个整数,一次歌出数组各项(数组下标从0到a-1)。
第三行包含m个整数,需要访问的数组下标。
对于每次访问,输出对应的数组元素。
#includeconsrintSIZE=100;intstack1[SIZE],stack2[SIZE];inttop1,top2;intn,m,i,j;voidclearStack{intI;for(i=top1;i(1)______;top2=_______
(2)____;for(j=0jtop1-1){top2--;(4);top1++;}clearstack;printf(“%d\n”,stack1[(5)]);}return0;}2.
(最大矩阵和)给出M行N列的整数矩阵,就最大的子矩阵和(子矩阵不能为空)。
输入第一行包含两个整数M和N,即矩阵的行数和列数。
之后M行,每行N个整数,描述整个矩阵。
程序最终输出最大的子矩阵和。
(第一空2分,其余3分,共14分)#includeconstintSIZE=100;intmatri_[SIZE+1][SIZE+1];introwsum[SIZE+1][SIZE+1];//rowsum[i][j]记录第i行前j个数的和intm,n,i,j,first,last,area,ans;intmain{scanf(“%d%d”,&;m,&;n);for(i=1;i<=m;i++)for(j=1;j<=n;j++)scanf(“%d”,&;matri_[i][j]);ans=matri_
(1);for(i=1;i<=m;i++)
(2);for(i=1;i<=m;i++)for(j=1;j<=n;j++)rowsum[i][j]=(3);for(first=1;first<=n;first++)for(last=first;last<=n;last++){(4);for(i=1;i<=m;i++){area+=(5);if(area>ans)ans=area;if(area<0)area=0;}}printf(“%d\n”,ans);return0;}Noip20__初赛提高组C语言试题参考答案一、单项选择题(共15题,每题1.5分,共计22.5分)12345678BDDBCCBB9101112131415DADCCBC二、不定项选择题(共5题,每题1.5分,共计7.5分;每题有一个或多个正确选项,没有部分分)12345ABBCDABCDEACBD三、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部分分)1.
________
102___________ 2.
________
15____________
四、阅读程序写结果(共4题,每题8分,共计32分)1.
_________
8__________
2.
__________
20__________
3.
___
2563471____
4.
_
3691510411827_
五、完善程序(共计28分)1.
(1)________________________
n________________________(2.5分)
(2)_________________________
0_________________________(2.5分)(3)_______________
stack2[top2]=stack1[top1]____________(3分)(4)______________
stack1[top1]=stack2[top2]_____________(3分)(5)________________________
top1-1______________________(3分)2.
(1)________________________
[1][1]______________________(2分)
(2)_____________________rowsum[i][0]=0___________________(3分)(3)_____________
rowsum[i][j-1]+matri_[i][j]__________(3分)(4)_________________________area=0_______________________(3分)(5)___________
rowsum[i][last]-rowsum[i][first-1]________(3分)