第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx

上传人:b****5 文档编号:6471655 上传时间:2023-01-06 格式:DOCX 页数:10 大小:20.24KB
下载 相关 举报
第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx_第1页
第1页 / 共10页
第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx_第2页
第2页 / 共10页
第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx_第3页
第3页 / 共10页
第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx_第4页
第4页 / 共10页
第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx

《第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx》由会员分享,可在线阅读,更多相关《第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx(10页珍藏版)》请在冰豆网上搜索。

第二届绍兴市小学生信息学奥林匹克试题PASCAL.docx

第二届绍兴市小学生信息学奥林匹克试题PASCAL

第二届绍兴市少儿信息学奥林匹克竞赛试题

(小学组PASCAL语言二小时完成)

●●全部试题答案都要求写在答卷纸上,写在试卷上一律无效●●

一.选择一个正确答案代码(A/B/C/D),填入每题的括号内(每题2分,每题只有一个正确答案,多选或错选都无分。

共30分)

1)PASCAL程序设计语言的命名,是为了纪念()这位伟大的数学家。

A)巴赫B)冯.诺依曼C)帕斯卡D)图灵

2)一般来说,一台计算机的CPU速度越快,那么这台计算机的运行速度也越快,下列CPU型号中,运行速度最快的是()

A)奔腾4B)奔腾2C)奔腾3D)586

3)美元的标识符是$,它和数字4同在一个键上,而且$在上面,数字4在下面,为了输入$这个符号,应配合使用其他的()键。

A)CapsLockB)ShiftC)AltD)Ctrl

4)一般计算机开机后总会自动启动Windows操作系统,那么这个操作系统软件安装在计算机的哪个硬件中()?

A)软盘B)主板芯片C)硬盘D)ROM

5)二进制数(1011)2对应的十进制数是()

A)1011B)15C)10D)11

6)下列对于计算机病毒的认识中,错误的是()

A)只要不从因特网上下载文件,而只在网上浏览网页、收发电子邮件是不会感染病毒的。

B)要定期升级杀毒软件,并利用杀毒软件对计算机进行查、杀毒处理

C)一台接入网络的计算机,即使不进行网络的相关操作(浏览网页、收发邮件、下载文件等),也有可能被病毒感染。

D)安装病毒防火墙可以从一定程度上有效地预防病毒的感染。

7)按照网站域名的一般约定,下列网站地址中,描述错误的是()

A)B)

C)D)

8)现实生活中我们只要配备相关的硬件和软件,就可以直接通过因特网完成很多的工作,下列功能中,目前在因特网上还不能直接实现的是()

A)看到对方当前的实时摄像B)象使用电话机一样通过声音和对方聊天

C)护士通过网络往患者体内注射药水D)通过文字和对方进行实时交流(聊天)

9)下列关于计算机的说法中,错误的是()

A)软件是由程序和相关的文档资料组成的B)操作系统是一种软件

C)一台不装任何软件的计算机不能帮助你进行文字编辑处理

D)世界上第一台电子计算机是在德国诞生的。

10)PASCAL源程序文件的扩展名是()

A).pasB).docC).exeD).pascal

11)下列描述中,不属于程序设计基本结构的是()

A)循环结构B)交叉结构C)分支结构D)顺序结构

12)在turbopascal编程时,程序中引用下标变量的下标值不能超过定义时的范围,如果超过了,则程序在编译时会出现下列错误提示()

A)ConstantoutofrangeB)"]"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]);

fori:

=1to9do

forj:

=i+1to10do

ifa[i]

=a[i];a[i]:

=a[j];a[j]:

=t;end;

fori:

=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:

=tot+a+b+c;

writeln(tot);

end.

输出:

2.

PROGRAMtest2;

VAR

s,x:

integer;

BEGIN

x:

=0;s:

=0;

WHILES<55DO

BEGIN

X:

=X+1;

S:

=S+X;

END;

WRITELN(X);

END.

输出:

3.

programtest3;

const

n1=4;n2=5;

var

max,s,i,j,k,t:

integer;

a:

array[1..n1,1..n2]ofinteger;

begin

fori:

=1ton1do

begin

forj:

=1ton2doread(a[i,j]);

readln;

end;

s:

=0;

forj:

=1ton2do

begin

max:

=0;

fori:

=1ton1do

ifmax

=a[i,j];

s:

=s+max;

end;

writeln(s);

end.

输入:

12345

691357

111281514

2120181617

输出:

4.

programtest4;

var

i:

integer;

a:

array[1..10]ofchar;

proceduretry(t:

integer);

begin

ift=10thenwrite(a[t])

else

begin

try(t+1);write(a[t]);

end;

end;

begin

fori:

=1to10doread(a[i]);

try

(1);

end.

输入:

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;

var

a:

array[1..5]ofinteger;

i1,i2,i3,i4,i5,j1,j2,j3,j4,j5,s:

integer;

functionf(x,y:

integer):

boolean;

var

k:

integer;

begin

f:

=true;

fork:

=1toxdoif①thenf:

=false;

end;

procedureprint;

var

i:

integer;

begin

fori:

=1to5dowrite(a[i]:

3);writeln;

end;

begin

s:

=②;

fori1:

=1to5do

begin

j1:

=1;③;

fori2:

=1to5do

iff(j1,i2)then

begin

j2:

=2;a[j2]:

=i2;

fori3:

=1to5do

iff(j2,i3)then

begin

j3:

=3;a[j3]:

=i3;

fori4:

=1to5do

iff(j3,i4)then

begin

j4:

=4;a[j4]:

=i4;

fori5:

=1to5do

iff(j4,i5)thenbeginj5:

=5;a[j5]:

=i5;print;④;end;

end;

end;

end;

end;

writeln('s=',⑤);

end.

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个位置是空位):

TRGSJ

XOKLT

MDVBN

WPAE

UQHCF

考虑到有些用户可能会输入非法的移动信号,比如当空位在最下面一行时,移动信号为“B”,此时由于下面没有任何小方块了,所以是非法的移动,此时应让程序能输出“NoAnswer”(此时不必输出华容道的最终局面)。

比如,输入数据为:

(第3行第2个位置是空位)

TRGSJ

XDOKI

MVLN

WPABE

UQHCF

LBBB

此时,程序应能正确地输出“NoAnswer”。

下列就是小王编写的程序,请帮助小王完善程序,并把答案书写在答卷纸上。

programTEST5;

var

i1,j1,i2,j2,i,j,k:

integer;

s,x:

char;

a:

array[1..5,1..5]ofchar;

b:

string;

procedureerr;

begin

write('①');halt;

end;

procedureswp(vari1,j1,i2,j2:

integer);

var

t:

char;

t1:

integer;

begin

t:

=a[i1,j1];a[i1,j1]:

=a[i2,j2];a[i2,j2]:

=t;

t1:

=i1;i1:

=i2;i2:

=t1;t1:

=j2;j2:

=j1;j1:

=t1;

end;

begin

fori:

=1to5do

begin

forj:

=1to5do

begin

read(a[i,j]);if②thenbegini1:

=i;j1:

=j;end;

end;

readln;

end;

readln(b);

k:

=length(b);

fori:

=1to③do

begin

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;j2:

=j1;

caseb[i]of

'A':

i2:

=i1-1;

'B':

i2:

=⑤;

'L':

j2:

=j1-1;

'R':

j2:

=⑥;

end;

swp(i1,j1,i2,j2);

end;

fori:

=1to5do

begin

forj:

=1to5do

write(a[i,j]);

writeln;

end;

end.

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

当前位置:首页 > 高中教育 > 语文

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

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