第二届绍兴市小学生信息学奥林匹克试题PASCALWord格式文档下载.docx
- 文档编号:17084012
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:12
- 大小:21.25KB
第二届绍兴市小学生信息学奥林匹克试题PASCALWord格式文档下载.docx
《第二届绍兴市小学生信息学奥林匹克试题PASCALWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《第二届绍兴市小学生信息学奥林匹克试题PASCALWord格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
]"
or"
.)"
expected
C)UnknowidentifierD)Typemismatch
13)在turbopascal编程时,执行程序和查看程序执行结果的快捷键分别是()。
A)F9键和F10键B)Ctrl+F9键和Ctrl+F5键
C)Ctrl+F9键和Alt+F5键D)Ctrl+1键和Ctrl+5键
14)在利用数组存储数据时,各下标变量的值在内存中是连续存放的。
假定数组a的第一个变量a[1]的存储地址是0,每个a[I]需要占据二个位置(说明a[2]的开始位置是2),则变量a[50]的开始位置是多少()
A)100B)50C)48D)98
15)下列关于树这种数据结构的说法中,正确的是()
A)任何结点都有子结点和父结点B)任何结点都必须有子结点
C)任何结点都必须有父结点
D)在二叉树中,每个结点可能没有子结点,有的话最多只能有二个子结点
二.问题求解:
(5+5=10分)
1.交换次数。
下列程序段用来将10个整数(从键盘输入)进行从大到小的排序,然后按这个顺序输出排序后的10个整数。
问:
在最坏情况下,二个整数两两交换的次数是多少?
例如,当将3个整数1、2、3(最坏情况)从大到小排序时,两两交换的次数是3次。
fori:
=1to10doreadln(a[i]);
=1to9do
forj:
=i+1to10do
ifa[i]<
a[j]thenbegint:
=a[i];
a[i]:
=a[j];
a[j]:
=t;
end;
=1to10dowrite(a[i]:
3);
2.兑换硬币。
小明拥有各种面值的硬币n种(假定每种面值硬币的数量都足够多),阿强手头有一张面值为x的大额纸币。
阿强想把自己的纸币兑换成等额的硬币,又想使兑换所得的硬币个数最少,他想了个绝妙的方法去兑换,终于达到了自己的要求。
比如,n=3(硬币面值分别是1、3、5),x=18,则阿强兑换成3个面值为5的硬币,外加一个面值为3的硬币,用表达式表示就是3×
5+1×
3=18,这样兑换总共得到4个硬币。
问:
现在n=3(硬币面值分别是1、6、8),x=20,则如何兑换才能使得所得的硬币总数最少,是多少?
(答案包括二个部分,首先是兑换方法的表达式表示,其次是写出总共得到的硬币的数量)
三.阅读程序并写出运行结果(6+7+8+9=30分。
):
1.
programtest1;
var
a,b,c,tot:
integer;
begin
tot:
=0;
c:
=213-21*10;
b:
=21-2*10;
a:
=2;
=tot+a+b+c;
writeln(tot);
end.
输出:
2.
PROGRAMtest2;
VAR
s,x:
BEGIN
x:
s:
WHILES<
55DO
BEGIN
X:
=X+1;
S:
=S+X;
END;
WRITELN(X);
END.
3.
programtest3;
const
n1=4;
n2=5;
max,s,i,j,k,t:
array[1..n1,1..n2]ofinteger;
=1ton1do
begin
=1ton2doread(a[i,j]);
readln;
end;
s:
=1ton2do
max:
ifmax<
a[i,j]thenmax:
=a[i,j];
=s+max;
writeln(s);
输入:
12345
691357
111281514
2120181617
4.
programtest4;
i:
array[1..10]ofchar;
proceduretry(t:
integer);
ift=10thenwrite(a[t])
else
try(t+1);
write(a[t]);
=1to10doread(a[i]);
try
(1);
123459876a
四.完善程序(根据问题要求和已有程序,在空格处填入适当的语句或符号,使程序完整。
本题共30分。
)
1.【圣诞礼物】
(3+2+2+3+2=12分)
圣诞节到了,圣诞老人打算把一批圣诞礼物装入各种不同颜色的口袋中,然后分发给小朋友们。
现在圣诞老人手中有5个不同礼物和5个不同口袋,圣诞老人的计划是这样的:
(1)先给每个礼物编号,编号分别是1、2、3、4、5;
再给5个口袋编号,分别用a[1]、a[2]、a[3]、a[4]、a[5]来表示,其中a[I]的值表示I号口袋中装的礼物的编号。
比如,a[3]=5,表示3号口袋中装的是编号为5的礼物。
(2)任何一个礼物可以装入任何一个口袋中,但每个口袋中有且仅有一个礼物。
也就是说,5个礼物刚好装入5个不同的口袋中。
圣诞老人想知道的是这样的礼物装入口袋的方法一共有多少种,分别怎么装?
他想让你编写一个程序来解决这个问题。
而且,他怕你不理解他的含义,举了一个例子,假如有3个不同的礼物和口袋,那么你的程序应该能输出以下结果:
123
132
213
231
312
321
s=6
上述输出结果中,最后一行表示装袋方法的种数(这里是6种),前面6行是各种不同的装袋方法。
比如,第一行表示1、2、3号口袋分别装的礼物编号是1、2、3;
而第3行表示的是1、2、3号口袋分别装的礼物编号是2、1、3。
请你完成下列程序:
programtest6;
array[1..5]ofinteger;
i1,i2,i3,i4,i5,j1,j2,j3,j4,j5,s:
functionf(x,y:
integer):
boolean;
k:
f:
=true;
fork:
=1toxdoif①thenf:
=false;
procedureprint;
=1to5dowrite(a[i]:
writeln;
=②;
fori1:
=1to5do
j1:
=1;
③;
fori2:
iff(j1,i2)then
j2:
a[j2]:
=i2;
fori3:
iff(j2,i3)then
j3:
=3;
a[j3]:
=i3;
fori4:
iff(j3,i4)then
j4:
=4;
a[j4]:
=i4;
fori5:
iff(j4,i5)thenbeginj5:
=5;
a[j5]:
=i5;
print;
④;
writeln('
s='
⑤);
2.【华容道】
(3+3+3+3+3+3=18分)
华容道是取材于我国三国演义的一种小游戏,小王是一个编程爱好者,他就利用课余时间编写了一个华容道的游戏程序。
当然小王的华容道和现实的华容道游戏又有一些区别,小王的华容道游戏是这样设计的:
华容道由5×
5的底板和24个大小一样的小正方形板组成。
在每一个小正方形板上印有一个不同的字母(A到X)。
24个方板放入底板后,底板上还有一个空位。
如果一个小方板紧挨着空位,则可以将其移动至空位。
按照这个游戏设计思想,小王开始编写程序,使得程序能根据输入的初始局面(各个小正方形板在华容道中的位置排列)和移动序列之后,输出华容道的最终局面。
问题是小王编写了程序后发现程序不能正确执行,根据他的经验,他觉得错误肯定发生在其中的6个地方(下面程序中标有数字的空格处),于是小王来向你这个编程高手请教,请你告诉小王这6个空格处正确的内容应该是什么。
程序一开始会让使用者输入华容道的初始局面和移动序列,前面5行5列组成华容道的初识局面,第6行表示移动序列。
下面就是某个使用者的输入信息(第3行第2个位置是空位):
TRGSJ
XDOKI
MVLN
WPABE
UQHCF
ARRBBL
上面移动序列中包含了4种不同字母,分别表示了不同的移动方向,这些字母的含义是:
A表示将空位上方的方板移动到空位;
B表示将空位下方的方板移动到空位;
L表示将空位左方的方板移动到空位;
R表示将空位右方的方板移动到空位。
一个正确的华容道程序应在得到上面的输入数据后,输出如下所示的最终局面(第4行第3个位置是空位):
XOKLT
MDVBN
WPAE
考虑到有些用户可能会输入非法的移动信号,比如当空位在最下面一行时,移动信号为“B”,此时由于下面没有任何小方块了,所以是非法的移动,此时应让程序能输出“NoAnswer”(此时不必输出华容道的最终局面)。
比如,输入数据为:
(第3行第2个位置是空位)
LBBB
此时,程序应能正确地输出“NoAnswer”。
下列就是小王编写的程序,请帮助小王完善程序,并把答案书写在答卷纸上。
programTEST5;
i1,j1,i2,j2,i,j,k:
char;
array[1..5,1..5]ofchar;
string;
procedureerr;
write('
①'
);
halt;
procedureswp(vari1,j1,i2,j2:
t:
t1:
=a[i1,j1];
a[i1,j1]:
=a[i2,j2];
a[i2,j2]:
=i1;
i1:
i2:
=t1;
t1:
=j2;
j2:
=j1;
j1:
read(a[i,j]);
if②thenbegini1:
=i;
=j;
readln(b);
=length(b);
=1to③do
if((i1=1)and(b[i]='
A'
))or((i1=5)and(b[i]='
B'
))or(④)or((j1=5)and(b[i]='
R'
))
thenerr;
I2:
=I1;
caseb[i]of
'
:
=i1-1;
=⑤;
L'
=j1-1;
=⑥;
swp(i1,j1,i2,j2);
forj:
write(a[i,j]);
writeln;
第二届绍兴市少儿信息学奥林匹克竞赛
小学组参考答案及评分标准
一.选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题2分,每题只有一个正确答案,多选或错选都无分,共30分)
题号
1
2
3
4
5
6
7
8
答案
C
A
B
D
9
10
11
12
13
14
15
1.交换次数(5分):
45
2.兑换硬币:
写出表达式(3分):
1×
8+2×
6=20写出硬币个数(2分):
3个硬币
三.阅读程序并写出运行结果(6+7+8+9=30分):
1.程序的运行结果是:
2.程序的运行结果是:
3.程序的运行结果是:
92
4.程序的运行结果是:
a678954321
12+18=30分)
1.圣诞礼物(3+2+2+3+2=12分)
①a[k]=y
②0
③a[j1]:
=i1(或a[1]:
=i1)
④s:
=s+1(或inc(s))
⑤S
2.华容道(3+3+3+3+3+3=18分)
①NoAnswer
②a[i,j]='
③k(或length(b))
④(j1=1)and(b[i]='
)(或(b[i]='
)and(j1=1))
⑤i1+1
⑥j1+1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 绍兴市 小学生 信息学 奥林匹克试题 PASCAL
![提示](https://static.bdocx.com/images/bang_tan.gif)