Noip初赛提高组C试题和答案解析.docx

上传人:b****6 文档编号:8060208 上传时间:2023-01-28 格式:DOCX 页数:12 大小:20.68KB
下载 相关 举报
Noip初赛提高组C试题和答案解析.docx_第1页
第1页 / 共12页
Noip初赛提高组C试题和答案解析.docx_第2页
第2页 / 共12页
Noip初赛提高组C试题和答案解析.docx_第3页
第3页 / 共12页
Noip初赛提高组C试题和答案解析.docx_第4页
第4页 / 共12页
Noip初赛提高组C试题和答案解析.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Noip初赛提高组C试题和答案解析.docx

《Noip初赛提高组C试题和答案解析.docx》由会员分享,可在线阅读,更多相关《Noip初赛提高组C试题和答案解析.docx(12页珍藏版)》请在冰豆网上搜索。

Noip初赛提高组C试题和答案解析.docx

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分)

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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