noip初赛模拟题Word文件下载.docx

上传人:b****4 文档编号:17168499 上传时间:2022-11-28 格式:DOCX 页数:21 大小:25.19KB
下载 相关 举报
noip初赛模拟题Word文件下载.docx_第1页
第1页 / 共21页
noip初赛模拟题Word文件下载.docx_第2页
第2页 / 共21页
noip初赛模拟题Word文件下载.docx_第3页
第3页 / 共21页
noip初赛模拟题Word文件下载.docx_第4页
第4页 / 共21页
noip初赛模拟题Word文件下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

noip初赛模拟题Word文件下载.docx

《noip初赛模拟题Word文件下载.docx》由会员分享,可在线阅读,更多相关《noip初赛模拟题Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。

noip初赛模拟题Word文件下载.docx

D、1,3,2,4,5,7,8,6

19.给出一组数据:

10、18、3、4、9、13、15、2、21、9、8,将它们生成一棵二叉排序树,所需要的关键码的比较次数为()。

A、25B、24C、23D、22

20.对给定的整数序列(541,132,984,746,518,181,946,314,205,827)进行从小到大的排序时,采用快速排序(以中间元素518为基准)的第一趟扫描结果是()。

A、(181,132,314,205,541,518,946,827,746,984)

B、(205,132,314,181,518,746,946,984,541,827)

C、(541,132,827,746,518,181,946,314,205,984)

D、(541,132,984,746,827,181,946,314,205,518)

二、问题求解(每题5分,共10分)

1.在1,2,3,4中任取2个数,同时要求这两个数不相邻,有3种选取方法:

1,3;

1,4;

2,4。

那么在1~9共9个数中,任取3个数,同时要求这4个数中没有相邻的数,它的选取方法有种。

2.下面一个街区,纵向街道m条,横向街道n条,设A点坐标为(1,1),则B点坐标为(m,n),当中有一点C,其坐标为(i,j)。

某人从A点走到对角B点,要求必须向上或向右走,则经过其中的C点的走法一共有种。

三、阅读程序(每题8分,共32分)

1.#include<

stdio.h>

main(){

inta,b,c,x,y,z,u[4];

scanf("

%d%d%d%d"

&

u[0],&

u[1],&

u[2],&

u[3]);

a=u[0]+u[1]+u[2]+u[3]-8;

b=u[0]*(u[1]+u[2]/u[3]-a);

c=u[0]*u[1]/u[2]*u[3];

x=(a+b+c)*3-u[3*c/4];

y=(a*b*c-13)/(u[b/3]*5);

if((x+y)%2==0)z=(a+b+c+x+y)/2;

elsez=(a+b+c-x-y)/2;

printf("

%d\n"

x-y+z);

}

输入:

2574

2.#include<

inthi,lo,m,n;

%d%d"

m,&

n);

hi=0;

lo=0;

do{

n--;

lo+=m;

if(lo>

=10000){lo-=10000;

hi++;

}

}while(n!

=0);

%4d,%4d\n"

hi,lo);

345208

输出:

3.#include<

inti,j,p,n,q,s,a[21];

%d%d%d"

p,&

n,&

q);

j=21;

while(n>

0){

j--;

a[j]=n%10;

n/=10;

s=0;

for(i=j;

i<

=20;

i++)

s=s*p+a[i];

s);

while(s>

a[j]=s%q;

s/=q;

%d"

a[i]);

730518

4.#include<

#include<

string.h>

intn,m,i,j;

charx,st[10],a[10][10];

%s"

st);

n=strlen(st);

m=n/2;

for(i=0;

n;

for(j=0;

j<

j++)a[i][j]='

'

;

=m;

for(j=i;

n-i;

j++){

x=st[j];

a[i][j]=a[n-i-1][n-j-1]=x;

for(j=n-1;

j>

=0;

j--){

%2c"

a[i][j]);

\n"

);

ACEGIKM

四、完善程序(前4空每空3分,后4空,每空4分,共28分)

1、对于给定的一个正整数,从其个位数开始,每隔一位取一个数字(即取其个位、百位、万位等数字),形成一个新的整数并输出。

例如:

运行时若输入“14251382”,则输出的整数为“4532”。

请完善下列程序:

longn,num;

inti,k;

scanf(“%d”,&

k=1;

num=0;

for(i=1;

n>

0;

i++){

if①

{

num=num+②;

k=k*10;

③;

printf(“%d\n”,num);

2、设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车都是单向的,这n个车站被顺序编号为0至n-1。

本程序,输入该城市的公交线路数、车站个数,以及各公交线路上的各站编号,求得从站0出发乘公交车至站n-1的最少换车次数。

程序利用输入信息构建一张有向图G(用邻接矩阵g表示),有向图的顶点是车站,若有某条公交线路经i站能到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<

i,j>

如是这样,从站点x至站点y的最少上车次数便对应图G中从点x至点y的最短路径长度。

而程序要求的换车次数就是上车次数减1。

程序的输入格式:

第一行为两个整数m和n,分别表示公交线路数和公交站数。

接下来m行数据,每一行为沿第m条公交车线路前进方向的各站编号dd(0<

=dd<

n),每行数字以-1结束。

请完善下面的程序:

#defineM20

#defineN50

inta[N+1];

/*用于存放一条线路上的各站编号*/

intg[N][N];

/*存储对应的邻接矩阵*/

intdist[N];

/*存储站0到各站的最短路径*/

intm,n;

voidbuildG(){

inti,j,k,sc,dd;

i<

i++)

j<

j++)g[i][j]=0;

m;

i++){

sc=0;

while

(1){

&

dd);

if(dd==-1)break;

if(dd>

=0&

&

dd<

n)④;

a[sc]=-1;

for(k=1;

a[k]>

k++)

k;

j++)

g⑤=1;

intminLen(){

intj,k;

j++)dist[j]=g[0][j];

dist[0]=1;

do{

for(k=-1,j=0;

j++)

if(dist[j]>

0&

(k==-1||dist[j]<

dist[k]))

k=j;

if(k<

0||k==n-1)break;

dist[k]=-dist[k];

for(j=1;

if(⑥&

(dist[j]==0||-dist[k]+1<

dist[j]))

⑦;

}while

(1);

j=dist[n-1];

return⑧;

main(){

intt;

buildG();

if((t=minLen())<

0)printf("

Noanswer!

elseprintf("

n-1,t);

参考答案

一、

1、B2、C3、C4、B5、A6、D7、A8、A9、A10、D

11、C12、C13、D14、D15、C16、B17、B18、C19、D20、B

二、

1、41

2、

三、

1、18

2、7,1760

3、1065

2051

4、(注:

每相邻的两个字符之间空1格)

MA

KKCC

IIIEEE

GGGGGGG

EEEIII

CCKK

AM

四、

1、

①(i%2==1)

②(n%10)*k

③n=n/10

2、

④a[sc++]=dd

⑤[a[j]][a[k]]

⑥dist[j]>

g[k][j]==1

⑦-dist[k]+1

⑧k<

0?

-1:

j-1

 

信息学奥林匹克联赛初赛模拟试题二

一、选择题(每题有5个备选答案,前10个题为单选题,即每题有且只有一个正确答案,选对得分;

后10题为不定项选择题,即每题有1至5个正确答案,只有全部选对才得分)。

(1)计算机处理信息的精度决定于()

A.CPU的主频

B.硬盘的容量

C.系统总线的传输速率

D.CPU字长

E.内存

(2)(101.101)2=()10

A.5.625

B.5.5

C.6.125

D.3.525

E.5.4

(3)从逻辑功能上讲,计算机主要由()控制器存储器输入设备和输出设备组成。

A.ROM

B.I/O

C.CPU

D.ALU

E.RAM

(4)Office2000中的“剪贴板”是()中的一块区域。

A.硬盘

B.内存

C.Cache

D.Office安装光盘

E.CPU

(5)产生100至300之间的随机整数(Random),且包含100、300两个整数的表达式是()

A.Random(100)+200

B.Random(200)+100

C.Random(300)

D.Random(101)+200

E.Random(201)+100

(6)在微型计算机系统中,I/O接口位于()之间。

A.CPU和内存储器

B.外部设备和内存储器

C.总线和输出输入设备

D.主机和输出输入设备

E.CPU和外部设备

(7)JPG是一种()的静态图像文件存储格式。

A.有损压缩

B.无损压缩

C.不可压缩

D.标准压缩

E.A,B,C,D都不正确

(8)二叉树是重要的数据结构,5个点的不同的二叉树有()个。

A.22

B.30

C.40

D.42

E.46

(9)TCP/IP协议是指

A.远程登陆协议/因特网互联协议

B.文件传输协议/远程登陆协议

C.邮件传输协议/远程登陆协议

D.文件传输协议/邮件传输协议

E.传输控制协议/因特网互联协议

(10)某班有30个同学报名参加100、400、800m3个运动项目比赛。

已知有6人获100m参赛资格,8人获400m参赛资格,15人获800m参赛资格,且其中有3人获全部3项参赛资格,则至少有()人没有获任何项目参赛资格。

A.5

B.7

C.8

D.9

E.10

多项选择题(每小题有1到5个正确答案)

(1)调制解调器又称为Modem,可用于连结计算机和电话线拨号上网。

调制是指()。

A.把信息信号转换成信息信号

B.把电信号转换成光信号

C.把光信号转换成电信号

D.把模拟信号转换成数字信号

E.把数字信号转换成模拟信号

(2)下面()是网络操作系统?

A.UNIX

B.NETWARE

C.WINDOWSXP

D.DOS

E.WINDOWS98

(3)下列IP地址中正确的是()

A.202.300.12.4

B.192.168.0.249

C.100:

128:

35:

91

D.94.94.94.94

E.111-102-35-21

(4)算式(1000)10-(100)16-(10)8的结果是()。

A.(890)10

B.(986)8

C.(1011100000)2

D.(2E0)16

E.(736)10

(5)当(A>

=B)and(B>

=C)的取值为true时,那么表达式(A>

C)or(B=C)的取值为()。

A.True

B.False

C.无法判断

D.只有当ABC三个数都为正数时才为true

E.只有当ABC三个数都为正数时才为false

(6)下列排序方法那种属于稳定排序()

A.希尔排序

B.堆排序

C.冒泡排序

D.快速排序

E.插入排序

(7)显示器是计算机必备的输出设备,它能将计算机内部的信息通过字符和图形在屏幕上表示出来。

()和()是显示器的两个重要技术指标。

A.分辨率

B.对比度

C.亮度

D.灰度

E.象素个数

(8)在TCP/IP协议中,TCP和IP提供了什么服务()?

A.链路层

B.网络层

C.传输层

D.会话层

E.物理层

(9)对于一个大小为3的栈,若输入队列为123456,则下列输出队列有可能的是()

A.123456

B.654321

C.432165

D.431256

E.321654

(10)192.168.0.249是属于()

A.A类地址

B.B类地址

C.C类地址

D.D类地址

E.E类地址

一、问题求解

(1)已知8个元素为(26、75、15、23、14、62、72、19),按照依次插入结点的方法生成一颗二叉排序树,则该树的深度为_____?

(2)编号为1到13的纸牌顺时针排成一圈,有人从编号为1的牌从数字1开始顺时针数下去,1、2、3、…、20、21、…,一圈又一圈。

问:

当数到数字N时,所在纸牌的编号为______?

三.阅读程序写出正确的程序运行结果(4分*8=32分)

#include<

intn,s,d[10];

voidmulti(intk)

{inti,j,number;

for(i=0;

=9;

i++)

{d[k]=1;

if(k!

=0)

multi(k-1);

else

{unmber=0;

for(j=n-1;

j--)

number=10*number+d[j];

s=s+number;

}

5

inta1,z;

intsue(intx)

{intk;

z=z-x;

k=x*x;

returnk;

main()

{z=10;

a1=sne(10)*sne(z);

printf("

%d%d\n"

a1,z);

z=10;

a1=sne(z)*sne(10);

intn,m;

floatx,y;

intp(floatx,intn)

{if(n%2)

x=x/n;

n=n+1;

m=m-1;

{n=57%6;

m=35/2;

x=15.0;

y=10.0;

p(y,n);

n=%dm=%d\n"

n,m);

intn,a[20];

longcount=0;

voidsort(inta2[],intbegin,intend)

{inti,j,t;

for(i=begin;

end;

for(j=i+1;

=end;

j++)

if(a2[i]>

a2[j])

{t=a2[i];

a2[i]=a2[j];

a2[j]=t;

voidperm(intk)

{intj,p,t,a2[20];

if(k==n)

{count++;

for(p=1;

p<

=n;

p++)

%ld"

a[p]);

"

if(count%3==0)

return;

for(j=k;

{for(p=1;

a2[p]=a[p];

t=a[k];

a[k]=a[j];

a[j]=t;

sort(a,k+1,n);

perm(k+1);

a[p]=a2[p];

{inti;

scanf("

for(i=1;

a[i]=i;

perm

(1);

\nthetotal=%ld\n"

count);

3

四.完善程序(前4空,每空2.5分,后6空,每空3分,共28分)

字符串匹配是对于两个字符串p和s,查找p是否是s的子序列的方法,对于两个长度分别为m和n的字符序列,当p是s的子序列时,输出p在s中首次出现的位置,否则输出“失败”信息。

intmath(char*p,char*s)

mian()

{intfind;

charstr1[]="

cde"

charstr2[]="

abcdefg"

find=match(str1,str2);

if(find)

find);

faliure\n"

intmath(char*p,char*s)

{inti,j,m,n;

m=strlen(p)

n=①;

②;

do{

i++;

③;

while(j<

m&

s[i+j]==p[j])

④;

if(j==m)

returni+1;

while(⑤);

return0;

下面程序对两个整数有限集A和B进行交(*)、差(-)、和并(+)运算,得到集合C。

intset(inta[],intb[],intc[],intna,intnb,charop)

intmain()

{inti,k,m,n,seta[100],setb[120],setc[220];

m);

s

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

当前位置:首页 > 小学教育 > 语文

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

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