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