Noip初赛提高组C试题和答案解析.docx
- 文档编号:8060208
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:12
- 大小:20.68KB
Noip初赛提高组C试题和答案解析.docx
《Noip初赛提高组C试题和答案解析.docx》由会员分享,可在线阅读,更多相关《Noip初赛提高组C试题和答案解析.docx(12页珍藏版)》请在冰豆网上搜索。
Noip初赛提高组C试题和答案解析
Noip2014初赛提高组试题及答案(完整版)
提高组C语言试题
、单项选择题(每题1.5分,共22.5分)。
1.以下哪个是面向对象的高级语言().
A.汇编语言B.C++C.FORTRAND.Basic
2.1TB代表的字节数量是().
A.2的10次方B.2的20次方C.2的30次方D.2的40次方
3.二进制数00100100和00010101的和是().
A.00101000B.001010100C.01000101D.00111001
4.TCP协议属于哪一层协议().
A.应用层B.传输层C.网络层D.数据链路层
5.下列几个32位IP地址中,书写错误的是().
A.162.105.128.27B.192.168.0.1C.256.256.129.1D.10.0.0.1
6.在无向图中,所有定点的度数之和是边数的()倍.
A.0.5B.1C.2D.4
7.对长度位n的有序单链表,若检索每个元素的概率相等,则顺序检索到表中任一元素的平均检索长度为().
A.n/2B.(n+1)/2C.(n-1)/2D.n/4
8.编译器的主要功能是().
A.
B.
C.
将一种高级语言翻译成另一种高级语言将源程序翻译成指令
将低级语言翻译成高级语言
将源程序重新组合
D.
9.二进制数111.101所对应的十进制数是().
A.5.625B.5.5C.6.125
10.若有变量intx+a%3*(int)(x+y)%2/4
A.2.500000B.2.750000
D.7.625
11.有以下结构体说明和变量定义,结点。
structnode{
next
a,floatx,y,且的值大约是().
C.3.500000D.0.000000如图所示,指针
y,
datanextdatanext
a=7,x=2.5,y=4.7,则表达式
p、q、r分别指向一个链表中的三个续
data
intdata;
structnode*next;
}*p,*q,*r;
以下程序段中错误的是
现要将q和r所指结点的先后位置交换,同时要保持链表的连续,
().
A.q->next=r->next;p->next=r;r->next=q;
B.p->next=r;q->next=r->next;r->next=q;
C.q->next=r->next;r->next=q;p->next=r;
D.r->next=q;q_>next=r->next;p_>next=r;
12.同时查找2n个数中的最大值和最小值,最少比较次数为().
A.3(n-2)/2B.4n-2C.3n-2D.2n-2
13.设G是有6个结点的完全图,要得到一颗生成树,需要从G中删去()条边.
A.6B.9C.10D.15
14.以下时间复杂度不是0(n2)的排序方法是().
A.插入排序B.归并排序C.冒泡排序D.选择排序
15.以下程序实现了找第二小元素的算法。
输入时n个不等的数构成的数组S,输出S中第
二小的数SecondMin。
在最坏的情况下,该算法需要做()次比较。
if(S[1]
FirstMin=S[1];
SecondMin=S[2];
}else{
FirstMin=S[2];
SecondMin=S[1];
}
for(i=3;i<=n;i++)
if(S[1] if(S[1] SecondMin=FirstMin; FirstMin=S[1]; }else{ SecondMin=S[1]; } A.2nB.n-1C.2n-3D.2n-2 二、不定项选择题(每题1.5分,共7.5分)。 1.若逻辑变量A、C为真,B、D为假,以下逻辑运算表达式真的有(). A.(BVCVD)VDAAB.((-AAB)VC)AB C.(AAB)V(CADV-A)D.AA(DV-C)AB 2.下列()软件属于操作系统软件。 A.MicrosoftWord B.WindowsXP C.Android D.MacOSX E.Oracle 3.在NOI比赛中,对于程序设计题,选手提交的答案不得包含下列哪些内容(). A.试图访问网络 B.打开或创建题目规定的输入/输出文件之外的其他文件 C.运行其他程序 D.改变文件系统的访问权限 E.读写文件系统的管理信息 4.以下哪些结构可以用来存储图(). A.邻接矩阵B.栈C.邻接表D.二叉树 5.下列各无符号十进制整数中,能用八位二进制表示的数有(). A.296B.133C.256D.199 、问题求解 1.有数字1,124,8,8所组成的不同的四位数的个数是 2. A到E的最短距离是 如图所示,图中每条边上的数字表示该边的长度,则从 四、阅读程序写结果(共4题,每题8分,共32分) 1.#inelude intmain(){ inta,b,l,tot,c1,c2; scanf(“%d%d,&a,&d); tot=0; for(i=a;i<=b;i++) { c仁i/10; c2=i%10; if((c1+c2)%3==0) tot++; } Printf(“%d\n",tot); Return0; } 输入: 731 输出: 2.#include Intfun(intn,intminNum,intmaxNum){inttot,i; if(n==0) retuen1; tot=0; for(i=minNum;i<=maxNum;i++) tot+=fun(n-1,i=1,maxNum); returntot; } intmian() {intn,m; Scanf(“%d%”,&n,&m); printf(“%d\n",fum(m,1,n)); return0; } 输入: 63 输出: 3.#include #include constintSIZE=100;constintLENGTH=25; 的字典序小于b和b一样 的字典序大于b //strcmp(a,b)<0: a //strcmp(a,b)=1: a //strcmp(a,b)>0: a intmain() chardict[SIZE][LENGTH+1];intrank[SIZE]; intind[SIZE]; inti,j,n,tmp; scanf(“%d,&n); for(i=1;i<=n;i++) {rank[i]=i ind[i]=i; scanf(“%s‘,dict[i]); } for(i=1;i for(j=1;j<=n_i;j++) if(strcmp(dict[ind[j]],dict[ind[j+1]])>0){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; } 输入: 7 aaa aba bbb aaa aaa ccc aa 输出: 4.#niclude constintSIZE=100; intalive[SIZE]; intn; intnext(intnum) {do{ num++; if(num>n) num=1; }while(alive[num]==0); returnnum; } intmain() {intm,i,j,num; seanf(“%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=next(num); printf(“%d,num); alive[num]=0; if(i num=next(num); }printf(\n); return0; } 输入: 113 输出: 五、完善程序 1.(双栈模拟数组)只使用两个栈结构staek1和staek2,模拟对数组的随机读取。 作为 栈结构,staek1和staek2只能访问栈顶(最后一个有效元素)。 栈顶指针top1和top2均 指向栈顶元素的下一个位置。 输入第一行包含的两个整数,分别是数组长度n和访问次数m,中间用单个空格隔开。 第二行包含n个整数,一次歌出数组各项(数组下标从0到a-1)。 第三行包含m个整数, 需要访问的数组下标。 对于每次访问,输出对应的数组元素。 #include consrintSIZE=100; intstack1[SIZE],stack2[SIZE]; inttop1,top2; intn,m,i,j; voidclearStack() {intI; for(i=top1;i stack[i]=0; for(i=top2;i stack[i]=0; } intmain() scanf(%d,%d”,&n,&m); for(i=0i scanf(“%d,&stack1[i]); top1= (1); top2= (2); for(j=0j { scanf(“%d,&i); while(i top1--; ⑶; top2++; } while(i>top1-1){ top2--; ⑷; top1++; clearstack(); printf(“%d\n”,stack1[(5)]);} return0; } 2.(最大矩阵和)给出M行N列的整数矩阵,就最大的子矩阵和(子矩阵不能为空)。 输入第一行包含两个整数M和N,即矩阵的行数和列数。 之后M行,每行N个整数,描述整 个矩阵。 程序最终输出最大的子矩阵和。 (第一空2分,其余3分,共14分) #include constintSIZE=100; intmatrix[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,&matrix[i][j]); ans=matrix (1); for(i=1;i<=m;i++) ⑵; 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)_j if(area>ans) ans=area; if(area<0) area=0; } } printf(“%d\n”,ans); return0; } Noip2014初赛提高组C语言试题参考答案 单项选择题(共15题,每题1.5分,共计22.5分) 1 2 3 4 5 6 7 8 B D D B C C B B 9 10 11 12 13 14 15 D A D C C B C 不定项选择题(共5题,每题1.5分,共计7.5分;每题有一个或多个 正确选项,没有部分分) 1 2 3 4 5 AB BCD ABCDE AC BD 三、问题求解(共2题,每题5分,共计10分;每题全部答对得5分,没有部 分分) 1.1022.15 四、阅读程序写结果(共4题,每题8分,共计32分) 1.82.20 3.___25634714._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]+matrix[i][j](3分) (4)area=0(3分) (5)rowsum[i][last]-rowsum[i][first-1](3分)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Noip 初赛 提高 试题 答案 解析
![提示](https://static.bdocx.com/images/bang_tan.gif)