noip初赛练习.docx
《noip初赛练习.docx》由会员分享,可在线阅读,更多相关《noip初赛练习.docx(19页珍藏版)》请在冰豆网上搜索。
noip初赛练习
初赛练习
选择题
1、一个向量第一个元素的存储地址是100,每个元素的长度是2,则第5个元素的地址是(B)
A)110B)108C)100D)109
2、设有一个含有13个元素的Hash表(O~12),Hash函数是:
H(key)=key%13,其中%是求余数运算。
用线性探查法解决冲突,则对于序列(2、8、31、20、19、18、53、27),18应放在第几号格中(B)。
B)A)5B)9C)4D)0
3、按照二叉数的定义,具有3个结点的二叉树有(C)种。
A)3B)4C)5D)6
4、在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的(B)倍。
A)1/2B)1C)2D)4
5、设栈S和队列Q初始状态为空,元素e1,e2,e3,e4,e5,e6依次通过栈S,一个元素出栈后即进入队列Q,若出队的顺序为e2,e4,e3,e6,e5,e1,则栈S的容量至少应该为(B)。
B)A)2B)3C)4D)5
6、知一个栈的入栈顺序是1,2,3,…,n,其输出序列为P1,P2,P3,…,Pn,若P1是n,则Pi是(C)。
C)A)iB)n-1C)n-i+1D)不确定
7、二叉树的高度为h,所有结点的度为0或2,则此树最少有(B)个结点。
A)2h-1B)2h-1C)2h+1D)h+1
8、(0.5)10=(C)16。
A)0.1B)0.75C)0.8D)0.25
9、已知x=(0.1011010)2,则[x/2]补=(C)2。
A)0.1011101B)11110110C)0.0101101D)0.100110
10、与二进制数101.01011等值的十六进制数为(D)。
A)A.BB)5.51C)A.51D)5.58
11、微型计算机的问世是由于(C)的出现。
A)中小规模集成电路B)晶体管电路C)(超)大规模集成电路D)电子管电路
12、CPU处理数据的基本单位是字,一个字的字长(D)。
A)为8个二进制位B)为16个二进制位
C)为32个二进制位D)与芯片的型号有关
13、微型计算机中,(C)的存取速度最快。
A)高速缓存B)外存储器C)寄存器D)内存储器
14、断电后计算机信息依然存在的部件为(C)。
A)寄存器B)RAM存储器C)ROM存储D)运算器
15、在使用E-mail前,需要对Outlook进行设置,其中ISP接收电子邮件的服务器称为(A)服务器。
A)POP3B)SMTPC)DNSD)FTP
16、IPv4地址是由(B)位二进制数码表示的。
A)16B)32c)24D)8
17、在磁盘上建立子目录有许多优点,下列描述中不属于建立子目录优点的是(D)。
A)便于文件管理B)解决根目录中目录项个数有限问题
B)加快文件查找速度D)节省磁盘使用空间
18、下列哪一种程序设计语言是解释执行的(B)。
A)PascalB)GWBASICC)C++D)FORTRAN
19、下面关于算法的错误说法是(B)。
A)算法必须有输出B)算法必须在计算机上用某种语言实现
B)算法不一定有输入D)算法必须在有限步执行后能结束
20、十进制书11/128可用二进制数码序列表示为:
(D)。
A)1011/1000000B)1011/100000000C)0.001011D)0.0001011
21、计算机系统总线上传送的信号有(B)。
A.地址信号与控制信号B.数据信号、控制信号与地址信号
C.控制信号与数据信号D.数据信号与地址信号
22、不同的计算机,其指令系统也不同,这主要取决于(C)。
A所用的操作系统B.系统的总体结构
C.所用的CPUD.所用的程序设计语言
23、下列说法中错误的是(B)。
A.CPU的基本功能就是执行指令。
B.CPU访问内存的速度快于访问高速缓存的速度。
C.CPU的主频是指CPU在1秒内完成的指令周期数。
D.在一台计算机内部,一个内存地址编码对应唯一的一个内存单元。
E.数据总线的宽度决定了一次传递数据量的大小,是影响计算机性能的因素之一。
24、处理器A每秒处理的指令数是处理器B的2倍。
某一特定程序P分别编译为处理器A
和处理器B的指令,编译结果处理器A的指令数是处理器B的4倍。
已知程序P在处
理器A上执行需要1个小时,那么在输入相同的情况下,程序P在处理器B上执行需
要(D)小时。
A.4B.2C.1D.1/2E.1/4
25、下列无符号数中,最小的数是(C)
A.(11011001)2B.(75)10C.(37)8D.(2A)16
26、十进制算术表达式:
3*512+7*64+4*8+5的运算结果,用二进制表示为(B).
A.10111100101B.11111100101
C1111l0100101D.11111101101
27、在config.sys文件中,装入特定的可安装设备驱动程序的命令是(D).
A.bufferB.filesC.xcopyD.device
28、DOS暂驻区中的程序主要是用于(A)
A)执行DOS内部命令B)执行DOS外部命令
C)执行DOS所有命令D)基本输入输出
29、一台计算机如果要利用电话线上网,就必须配置能够对数字信号和模拟信号进行相互转换的
设备,这种设备是(A)。
A.调制解调器B.路由器C.网卡D.网关E.网桥
30、TCP/IP协议共有(B)层协议
A)3B)4C)5D)6
31、计算机网络是一个(D)
A.管理信息系统B.管理数据系统C.编译系统D.在协议控制下的多机互连系统
32、某数列有1000个各不相同的单元,由低至高按序排列;现要对该数列进行二分法检索
(binary-search),在最坏的情况下,需检视(B)个单元。
A.1000B.10C.100D.500
33、表达式(1+34)*5-56/7的后缀表达式为(C)。
A)1+34*5-56/7B)-*+1345/567C)134+5*567/-
D)1345*+567/-E)134+5567-*/
33、二叉树T,已知其前序遍历序列为1243576,中序遍历序列为4215736,则其后序遍历序列为(B)。
A.4257631B.4275631C.4275361D.4723561E.4526371
34、二叉树T的宽度优先遍历序列为ABCDEFGHI,已知A是C的父结点,D是G的
父结点,F是I的父结点,树中所有结点的最大深度为3(根结点深度设为0),可知F
的父结点是(C)。
A.无法确定B.BC.CD.DE.E
35、由3个a,5个b和2个c构成的所有字符串中,包含子串“abc”的共有(D)个。
A.40320B.39600C.840D.780E.60
36、关于“0”的原码、反码和补码描述正确的是(C)
A.“0”的原码只有一种表示方法
B.“0”的反码只有一种表示方法
C.“0”的补码只有一种表示方法
D.“0”的原码、反码和补码均有两种表示方法
37、借助一个栈,输入顺序是123456,以下输出顺序不可能的是(A)
A.142356B.123654C.231456D.213546
38、结构化程序设计的一种基本方法是(B)
A.归纳法B.逐步求精法C.递归法D.筛选法
39、在微型计算机中,常用()码实现十进制数与二进制数之间的自动转换。
(A)BCD码(B)ASCII码(C)海明码(D)机内码
40、29、计算机中的数有浮点数与定点数两种,其中浮点数表示的数,通常由( )这两部分组成。
A.指数与基数
B.尾数与小数
C.阶码与尾数
D.整数与小数
答案:
C
选择题
1、设栈S的初始状态为空,现有5个元素组成的序列{1,2,3,4,5},对该序列在S栈上依次进行如下操作(从序列中的1开始,出栈后不在进栈):
进栈,进栈,进栈,出栈,进栈,出栈,进栈,问出栈的元素序列是:
_________,栈顶指针的值为______,栈顶元素为:
___________________。
解答:
出栈序列为{3,4},栈顶指针值为3,栈顶元素为5。
2、设循环队列中数组的下标范围是1..n,其头尾指针分别为f和r,则其元素个数为:
_____________________。
解答:
(r-f+n)modn
3、中缀表达式、前缀表达式、后缀表达式
(1)已知中缀表达式:
A+B*C/D
求它的前缀表达式和后缀表达式?
(2)已知前缀表达式:
+△A*B△C{注△表示一元运算符负号,即△A表示-A}
求它的中缀表达式和后缀表达式?
(1)的结果:
+A*B/CD;ABCD/*+
(2)的结果:
(-A)+B*(-C);A△BC△*+
4、某班有50名学生,每位学生发一张调查卡,上写a,b,c三本书的书名,将读过的书打✓,结果统计数字如下:
只读a者8人;只读b者4人;只读c者3人;全部读过的有2人;读过a,b两本书的有4人;读过a,c两本书的有2人;读过b,c两本书的有3人;问:
(1)读过a的人数是_________
(2)一本书也没有读过的人数是__________。
(1)12人
(2)30人
5、设有一棵k叉树,其中只有度为0和k两种结点,设n0,nk,分别表示度为0和度为k的结点个数,试求出n0和nk之间的关系(n0=数学表达式,数学表达式仅含nk、k和数字)。
解答:
n0和nk之间的关系为:
n0=(k-1)nk+1。
6、已知一棵二叉树的结点名为大写英文字母,其中序与后序遍历的顺序分别为:
CBGEAFHDIJ与CGEBHFJIDA,则该二叉树的先序遍历的顺序为:
解答:
ABCEGDFHIJ
7、取火柴游戏的规则如下:
一堆火柴有N根,A、B两人轮流取出。
每人每次可以取1根或2根,最先没有火柴可取的人为败方,另一方为胜方。
如果先取者有必胜策略则记为1,
先取者没有必胜策略记为0。
当N分别为100,200,300,400,500时,先取者有无必
胜策略的标记顺序为__11011__(回答应为一个由0和/或1组成的字符串)
8、一个家具公司生产桌子和椅子。
现在有113个单位的木材。
每张桌子要使用20个单位的木材,售价是30元;每张椅子要使用16个单位的木材,售价是20元。
使用已有的木材生产桌椅(不一定要把木材用光),最多可以卖160元钱。
9、给定m个有不同标号的球,标号依次为1、2、3、…、m。
将这m个球放入n个相同的盒子,不允许盒子为空,其不同的放置总数为S(m,n)。
例如:
S(4,2)=7。
求:
S(7,4)=
三、阅读程序,写出正确的运行结果(共8题,每小题8分,共64分)
1、Programexcpl;
var
x,y,y1,jk,j1,g,e:
Integer;
a:
array[1..20]of0..9;
begin
x:
=3465;y:
=264;jk:
=20;
forj1:
=1to20doa[j1]:
=0;
whiley<>0do15
begin
y1:
=ymod10;
y:
=ydiv10;
whiley1<>0do
begin
g:
=x;
fore:
=Jkdownto1do
begin
g:
=g+a[e];
a[e]:
=gmod10;
g:
=gdiv10
end;
y1:
=y1-1
end;
jk:
=jk-1
end;
j1:
=1;
whilea[j1]=0doj1:
=j1+1;
forJk:
=j1to20dowrite(a[jk]:
4);
writeln
end.
程序运行结果为:
___________________________。
答案:
914760
2、programexp1(imput,output);
vari,,s,max:
integer;
a:
array[1..10]ofinteger;
begin
fori:
=1to10doread(a[i]);
max:
=a[1];s:
=a[1];
fori:
=2to10do
begin
ifs<0thens:
=0;
s:
=s+a[i];
ifs>maxthenmax:
=s
end;
writeln(‘max=’,max)
end.
输入:
:
-112-1036534-4-278-12349
输出:
max=
答:
99
3、varn,jr,jw,jb:
integer;
ch1:
char;
ch:
array[1..20]ofchar;
begin
readln(n);
fori:
=1tondoread(ch[i]);
jr:
=1;jw:
=n;jb:
=n;
while(jr<=jw)do
begin
38
if(ch[jw]='R')
thenbegin
ch1:
=Ch[jr];Ch[jr]:
=ch[jw];ch[jw]:
=ch1:
jr:
=jr+1;
end
elseifch[jw]='W'
thenjw:
=jw-1
elsebegin
ch1:
=ch[jw];ch[jw]:
=ch[jb];ch[jb]:
=ch1;jw:
=jw-1;jb:
=jb-1;
end
end;
fori:
=1tondowrite(ch[i]);
writeln;
end.
输入:
10
RBRBWWRBBR
输出:
RRRRWWBBBB
4、const
u:
array[0..2]ofinteger=(1,-3,2);
v:
array[0..1]ofinteger=(-2,3);
var
i,n,sum:
integer;
functiong(n:
integer):
integer;
vari,sum:
integer;
begin
sum:
=0;
fori:
=1tondoinc(sum,u[imod3]*i);
g:
=sum;
end;
begin
sum:
=0;
read(n);
fori:
=1tondoinc(sum,v[imod2]*g(i));
writeln(sum);
end.
输入:
103
输出:
-400。
5、vari,j,k,n:
integer;
a:
array[1..100,1..100]ofinteger;
begin
readln(n);
k:
=1;
i:
=1;j:
=1;a[i,j]:
=1;
whilekbegin
if(i=1)and(jmod2=1)theninc(j)
elseif(j=1)and(imod2=0)theninc(i)
elseif(i+j)mod2=0thenbegindec(i);inc(j);end
elseif(i+j)mod2=1thenbegininc(i);dec(j);end;
inc(k);a[i,j]:
=k;
end;
writeln(i,'/',j);
end.
输入:
1999
输出:
18/46
6、programp6
vara:
array[0..8]ofchar;
i:
integer;
begin
fori:
=1to8do
a[i]:
=char(i*2+ord(‘A’));
fori:
=1to4dobegin
a[0]:
=a[i];
a[i]:
=a[9-i];
a[9-i]:
=a[0];
end;
fori:
=1to8dowrite(a[i]);
writeln;
end.
输出:
36728458219
7
PROGRAMmyt25(INPUT,OUTPUT);
VAR
I,j:
integer;
a,b:
ARRAY[1..5]OFinteger;
BEGIN
FORi:
=1TO5DO
BEGIN
a[i]:
=2*i-1;
b[i]:
=i
END;
FORi:
=1TO5DO
FORj:
=1TO5DO
IFa[i]=b[j]THENWRITE(a[i]:
4)
END.
输出:
135{前面有三个空格,后面每两个数字之间有三个空格}
8vari,k,n:
integer;
x,w:
array[1..500]ofinteger;
begin
readln(n);
fori:
=1tondobegin
x[i]:
=0;w[i]:
=1;end;
fori:
=2totrunc(sqrt(n))+1do
ifx[i]=0then
begin
k:
=i*i;
whileK<=ndo
beginx[k]:
=i;k:
=k+i;end;
end;
fori:
=ndownto1do
ifx[i]<>0then
begin
w[x[i]]:
=w[x[i]]+w[i];
w[idivx[i]]:
=w[idivx[i]]+w[i];
w[i]:
=0;
end;
writeln(w[2],w[3]:
5,w[5]:
5);
end.
输入:
20
输出:
1884
四、完善程序(本题共4题,每题14分,共计28分)
本程序对随机产生的100个0到50之间的随机数用一个数组存放后进行排序,然后再将其中重复出现的数进行删除,只保留一个,使得剩下的数中任何两个都不相同且连续存储在原数组中。
constmaxn=100;typearraytype=array[1..maxn]ofinteger;
vari,j,temp,current,tail:
integer;a:
arraytype;
beginrandomize;
fori:
=1tomaxndoa[i]:
=random(51);
fori:
=1to__maxn-1do
forj:
=_i+1_tomaxndo
ifa[i]begintemp:
=a[i];a[i]:
=a[j];a[j]:
=tempend;
fori:
=2tomaxndo
if__a[i]=abs(a[i-1])__thena[i]:
=-a[i];
tail:
=0;current:
=1;
while_____current<=maxn_____do
begin
whilea[current]<0docurrent:
=current+1;
tail:
=tail+1;
a[tail]:
=__a[current]__;
current:
=current+1
end;
if_____thenbegintail:
=tail+1;a[tail]:
=0end;
fori:
=1totaildowrite(a[i]:
5);
writeln
end.
①maxn-1
②i+1
③a[i]=abs(a[i-1])
④(current<=maxn)and(a[current]<>0)
⑤a[current]
⑥(a[tail]<>0)and(a[current]=0)
问题描述:
将n个整数分成k组(k≤n,要求每组不能为空),显然这k个部分均可得到一个各
自的和s1,s2,……sk,定义整数P为:
P=(S1-S2)2+(S1一S3)2+……+(S1-Sk)2+(s2-s3)2+……+(Sk-1-Sk)2
问题求解:
求出一种分法,使P为最小(若有多种方案仅记一种〉
程序说明:
数组:
a[1],a[2],...A[N]存放原数
s[1],s[2],...,s[K]存放每个部分的和
b[1],b[2],...,b[N]穷举用临时空间
d[1],d[2],...,d[N]存放最佳方案
程序:
programexp4;
Vari,j,n,k:
integer;
a:
array[1..100]ofinteger;
b,d:
array[0..100]ofinteger;
s:
array[1..30]ofinteger;
begin
readln(n,k);
forI:
=1tondoread(a[I]);
forI:
=0tondob[I]:
=1;
cmin:
=1000000;
while(b[0]=1)do
begin
forI:
=1tokdo①
forI:
=1tondo
②
sum:
=0;
forI:
=1tok-1do
forj:
=③
50
sum:
=sum+(s[I]-s[j])*(s[I]-s[j]);
if④then
begin
cmin:
=sum;
forI:
=1tondod[I]:
=b[I];
end;
j:
=n;
while⑤doj:
=j-1;
b[j]:
=b[j]+1;
forI:
=j+1tondo⑥
end;
writeln(cmin);
forI:
=1tondowrite(d[I]:
40);
writeln;
end.
1、s[k]:
=0;
2、s[b[i]]:
=s[b[i]]+a[i];
3、i+1tok
4、sum5、b[j]=k
6、b[i]:
=1;
3.[问题描述]
给定两个自然数n,r(n>r),输出从数I到n中按降序顺序取r个自然数的所有组合。
例如,n=5,r=3时,输出的结果是
543
542
541
532
531
521
432
431
421
321
程序中用a1,a2,…ar表示一个降序排列的r个数的组合,要求a1≥r。
为了能够穷举出全部降序排列的r个数的组合,按递减顺序调整前一个组合的部