NOIP95年提高组初赛及答案.docx
- 文档编号:28790685
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:15
- 大小:36.08KB
NOIP95年提高组初赛及答案.docx
《NOIP95年提高组初赛及答案.docx》由会员分享,可在线阅读,更多相关《NOIP95年提高组初赛及答案.docx(15页珍藏版)》请在冰豆网上搜索。
NOIP95年提高组初赛及答案
NOI’95“同创杯”全国青少年信息学(计算机)奥林匹克竞赛
分区联赛初赛试题(高中组)竞赛用时:
2小时
答题要求
一、全部试题答案均应写在答卷纸上,写在试卷纸上一概无效。
二、算法描述中,可以使用下列过程、函数或算符:
(1)算术运算:
+,-,×,/,DIV,MOD
整数除(DIV):
是取二整数相除的商的整数部分。
如:
11DIV2=5
取模(MOD):
是取二整数相除的余数。
如:
11MOD2=1
(2)关系运算:
>,<,=,<>,>=,<=
(3)逻辑运算:
AND,OR,NOT
(4)函数:
ABS(X):
求X的绝对值。
如:
ABS(3.14)=3.14ABS(-3.14)=3.14
SQR(X):
求X的平方值。
如:
SQR(3)=9SQR(-15)=225
SQRT(X):
求X的平方根值。
如:
SQRT(9)=3SQRT(225)=15
TRUNC(X):
去掉X的小数部分:
如TRUNC(6.3)=6TRUNC(-7.9)=-7
ROUND(X):
函数值是小数四舍五入后的整数值。
如:
ROUND(3.14)=3ROUND(3.16)=4ROUND(-3.14)=-4
ORD(X):
函数值是字符在ASCII码中的序号。
如:
ORD(‘A’)=65ORD(‘B’)=66ORD(‘Z’)=90ORD(‘0’)=48
CHR(X):
X表示ASCII码中的序号,函数值是该序号代表的字符值。
如:
CHR(48)=’0’CHR(65)=’A’CHR(90)=’Z’
(5)过程:
DEC(A,[X]):
变量递减,A为有序变量,X缺省时为1。
INC(A,[X]):
变量递增,A为有序变量,X缺省时为1。
一、基础题:
<1>执行①C>DIR命令后,屏幕上显示如下画面:
FORMATCOM12145
SYSCOM4878
PUCBAT126
XCOPYEXE11216
4File(s)123456bytesfree
接着又顺序执行了如下几条DOS命令:
②C>DIR>DF.TXT//表示将列表显示的目录作为文件写盘//
③C>TYPEDF.TXT
④C>DIR
试问:
执行命令③和④在屏幕上显示的结果是否与①相同?
<2>列举一个问题,使问题的解能对应相应的算法。
例如对算法:
X:
=10;
Y:
=5;
READ(M,N);
S:
=X*M-Y*N;
可列举出如下的问题:
学生答题,答对一题可得10分,答错一题则要扣去5分,输入答对的题数(M)与答错的题数(N),求最后得分(S)是多少?
现有以下算法:
K:
=0;
FORi:
=0TO10DO
K:
=K+(50-I*5)DIV2+1
请列出一个相应的问题。
<3>有标号为A、B、C、D和1、2、3、4的8个球,每两个球装一盒,分装4盒。
标号为字母的球与标号为数字的球有着某种一一对应的关系(称为匹配),并已知如下条件:
1匹配的两个球不能在一个盒子内。
22号匹配的球与1号球在一个盒子里。
3A号和2号球在一个盒子里。
4B匹配的球和C号球在一个盒子里。
53号匹配的球与A号匹配的球在一个盒子里。
64号是A或B号球的匹配球。
7D号与1号或2号球匹配。
请写出这四对球匹配的情况。
<4>从入口
(1)到出口(17)的可行路线图中,数字标号表示关卡:
现将上面的路线图,按记录结构存储如下:
1
2
18
7
3
12
4
19
8
5
13
16
6
14
15
9
17
…
0
1
1
1
2
2
2
3
4
5
6
8
10
11
11
11
12
…
No
PRE
123456789101112131415161718
请设计一种能从存储数据中求出从入口到出口经过最少关卡路径的算法。
二、根据题目要求,补充完善以下伪代码程序:
<1>求出二个整形数组错位相加的最大面积。
1.数组面积的定义:
(限定数组头尾不为0)
设有一个数组C=(4,8,12,0,6)
则C的面积为:
Sc=(4+8)/2+(8+12)/2+12/2+6/2
也就是说,Sc=各梯形面积之和(其中
梯形的高约定为1,三角形作为梯形的特殊
情况处理)。
Sd=(12+24)/2+(24+6)/2
又如D=(12,24,6)是,其面积的定义为
24
6
12
1
1
2.数组错位相加的定义
设有2个正整数的数组a,b,长度为n,当n=5时:
a=(34,26,15,44,12)b=(23,46,4,0,18)
对a、b进行错位相加,可能有下列情况
3426154412
+)23464018
342615441223464018
或:
3426154412
+)23464018
3426154435464018
或:
3426154412
+)23464018
34261567584018
或:
……
最后有:
3426154412
+)23464018-
234640183426154412
可以看到:
由于错位不同,相加的结果也不同。
程序要求:
找出一个错位相加的方案,使得输出的数组面积为最大。
[算法提要]:
设a,b的长度为10,用a,b:
array[1..10]ofinteger表示,其结果用数组C,D:
array[1..30]ofinteger表示。
错位相加的过程可以从开始不重叠,然后逐步重叠,再到最后的不重叠。
梯形面积的计算公式为:
(上底+下底)×高÷2
其中由于约定高为1,故可写为(上底+下底)÷2。
程序:
n=10;
Functionsea:
real;{计算数组C面积}
Begin
J1:
=1;
While_______①______do
j1:
=j1+1;
ENDWHILE;
Ifj1=3*nthensea:
=0
Elsebegin
J2:
=3*n;
While_______②______do
j2:
=j2-1;
Ifj1=j2thensea:
=0
Elsebegin
J3:
=c[j1]+c[j2];
Forj4:
=j1+1toj2-1do
INC(j3,c[j4]*2);
ENDFOR;
Sea:
=j3/2
end
ENDIF;
End;
//主程序//
Fori:
=1tondoread(a[I]);endfor;
Forj:
=1tondoread(b[j]);endfor;
__________③____________;
fori:
=1to2*n+1do
forj:
=1to3*ndo________④__________endfor;
forj:
=1tondoc[j+n]:
=a[j]endfor;
forj:
=1tondo
_________⑤__________;
endfor;
p:
=sea;
ifp>sthenbegin
d:
=c;
s:
=p
end;
endif;
endfor;
forI:
=1to3*ndowrite(d[I],'');endfor;
write(s);
End.//主程序结束//
<2>表的操作:
设有一个表,记为L=(a1,a2,…,an),其中:
L:
表名
a1,a2,…,an为表中的元素
当ai为0~9数字时,表示元素,ai为大写字母时,表示是另一个表,但不能循环定义。
例如下列表的定义是合法的。
(约定L是第一个表的表名)
L=(1,3,K,8,0,4)
K=(3,P,4,H,7)
P=(2,3)
H=(4,0,5,3)
程序要求:
当全部表给出之后,求出表中所有元素的最大元素,以及表中全部元素的和。
[算法提要]:
表用记录类型定义:
长度(LENGTH)
表体(是元素为字符类型的数组ELEMENT)
队列用数组BASE表示;
队列指针用整型变量FRONT与REAR。
为此,设计一个字符入队的过程inqueue,出队函数outqueue,表中最大元素及元素求和均采用递归计算。
程序:
PROCEDUREINQUEUE(Q,C);//过程需要二个参数,Q记录类型,C字符类型//
Q.REAR:
=_________①__________;
Q.BASE[Q.REAR]:
=C;
END;//过程结束//
FUNCTIONOUTQUEUE(Q)//函数需要一个参数,Q记录类型//
Q.FRONT:
=_________②__________;
OUTQUEUE:
=Q.BASE[Q.FRONT]
END;//函数结束//
FUNCTIONMAXNUMBER(C)//函数需要一个参数,C字符类型//
Max:
=CHR(0);
FORi:
=1toT[C].LENGTHDO
Ch:
=t[c].element[i];
If_______③________then
m:
=maxnumber(ch)
Else
m:
=ch
ENDIF;
Ifmax max: =m EndIF; ENDFOR; ___________④____________ End;//函数结束// Functiontotal(c)//函数需要一个参数,C: 字符类型// K: =0; Fori: =1tot[c].lengthdo Ch: =t[c].Elelment[i]; If_________⑤__________then m: =total(ch); Else m: =ord(ch)-ord('0'); endif K: =k+m Endfor; Total: =k; End;//函数结束// //主程序// Max: =36; Fortabno: ='A'to'Z'do t[tabno].length: =0; ENDFOR; q.front: =0;q.rear: =0; inqueue(q,'L'); while(q.front<>Q.rear)do tabno: =outqueue(q); write(tabno,'='); readln(s); i: =1; Whiles[i]<>'('do i: =i+1; ENDWHILE; Whiles[i]<>')'do If(s[i]>='a')and(s[i]<='z')then s[i]: =chr(ord(s[i])+ord('A')-ord('a')); if(s[i]>='A')and(s[i]<='Z')then inc(t[tabno].length); t[tabno].element[t[tabno].length]: =s[i]; inqueue(q,s[i]); endif; else if(s[i]>='0')andn(s[i]<='9')then inc(t[tabno].length); t[tabno].element[t[tabno].length]: =s[i] endif; inc(i) Endif; endwhile; endwhile; WRITE('ThemaxnumberintableLis: ',maxnumber('L')); WRITE('Totalis: ',total('L')) END.//主程序结束// <3>设有一个实数,以字符串形式存放于数组x中,用x: array[1..N]ofchar表示。 其中x[1]若为'-',表示负数;若为'+'、'.'或'',则表示正数。 若为数字,也认为是正数。 例如x=('','2','0','','3','.','5','%')则表示203.5 x=('-','1','.','','2','0','%')则表示-1.2 约定: 在字符串x中,除x[1]外,其后可以包含有若干个'.'与'',但仅以第一次出现的为准,空格不起任何作用,并以字符'%'作为结束标志。 程序要求: 将输入的字符串还原成实数输出(小数点后无用的0应除去),还原的结果以下列形式存放(不需要输出)。 F: 数符。 正数放0,负数放1。 A: array[1..N]ofinteger;存放数字,不放小数点。 K: 表示A中有效数字的个数。 J: 表示小数点后的位数。 例如: 数203.24,还原后结果的存放是: F=0 A=(2,0,3,2,4) K=5 J=2 又如: 数-33.0740,还原后结果的存放是: F=1 A=(3,3,0,7,4) K=5 J=3 [算法提要]: x: array[1..10]ofchar;可放长度定为10;首先读入字符串,然后处理数的符号,在还原的过程中,需要判定整数部分与小数部分,同时去除多余的空格和小数点,并约定输入是正确的,不用作出错检查。 程序: ForI: =1to10doa[I]: =0;ENDFOR; ForI: =1to10doread(x[I]);ENDFOR; J: =0;f: =0;k: =0;b: =0; Ifx[1]='-'thenbegin ____________①____________ ____________②____________ End Elseifx[1]: =''thenI: =2 ElseI: =1; ENDIF; ENDIF; While________③_________do I: =I+1; ENDWHILE While__________④___________do If(x[I]>='0')and(x[I]<='9')Then K: =k+1; _________⑤____________; ifb=1then ______⑥_________ EndIF Elseif(x[I]='.')and(b=0)then b: =1; ENDIF I: =I+1 EndIF; ENDWHILE; Ifj>0thenwhilea[k]=0do __________⑦_________ __________⑧_________ EndWHILE; EndIF. END.//程序结束// NOI’95“同创杯”全国青少年信息学(计算机)奥林匹克竞赛 分区联赛初赛试题(高中组)试题参考答案 一、基础题: 共33分 <1>本题共4分 显示结果不相同,③和④比①多出一个文件目录。 <2>本题共9分 列出的一个相应问题是: (能列出类似的问题均可) 用五角钱换成5分、2分与1分的硬币,有多少种换法。 <3>本题共8分 这四对球匹配的情况为: A B C D 4 3 1 2 <4>本题共12分 从存贮数据中求出从入口到出口经过最少关卡路径的算法及输出结果: 算法: 输出结果: I: =1;(17) WHILENO[I]≠17DO↑ I: =I+1;(16) ENDWHILE;↑ REPEAT(19) WRITE(’(’,NO[I],’)’);↑ WRITE(’↑’);(18) I: =PRE[I];↑ UNTILI=0;1 二、根据题目要求,补充完善以下伪代码程序: (共67分) <1>共10分(每空二分) 1C[J1]=0ANDJ1<3*N 2C[J2]=0ANDJ2>J1 3S: =0 4C[J]: =O; 5C[I+J-1]: =C[I+J-1]+B[J]; <2>共25分(每空五分) ①(Q.REAR+1)MOD(MAX+1); ②(Q.FRONT+1)MOD(MAX+1); ③(CH>=’A’)AND(CH<=’Z’) ④MAXNUMBER: =MAX; ⑤(CH>=’A’)AND(CH<=’Z’) <3>共32分(每空四分) 1F: =1; 2I: =2; 3(X[I]<>’’)AND(I<10) 4X[I]<>’%’ 5A[K]: =ORD(X[I]-ORD(’0’); 6J: =J+1; 7J: =J-1; 8K: =K-1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NOIP95 提高 初赛 答案