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

更新时间:2024-01-20 22:09:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

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

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

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

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

1)PASCAL程序设计语言的命名,是为了纪念( )这位伟大的数学家。 A) 巴赫 B) 冯.诺依曼 C) 帕斯卡 D) 图灵

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

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

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

A) Caps Lock B) Shift C) Alt D) Ctrl 4)一般计算机开机后总会自动启动Windows操作系统,那么这个操作系统软件安装在计算机的哪个硬件中( )?

A) 软盘 B) 主板芯片 C) 硬盘 D) ROM 5)二进制数(1011)2对应的十进制数是( )

A) 1011 B) 15 C) 10 D) 11 6)下列对于计算机病毒的认识中,错误的是( )

A) 只要不从因特网上下载文件,而只在网上浏览网页、收发电子邮件是不会感染病毒的。 B) 要定期升级杀毒软件,并利用杀毒软件对计算机进行查、杀毒处理

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

D) 安装病毒防火墙可以从一定程度上有效地预防病毒的感染。 7)按照网站域名的一般约定,下列网站地址中,描述错误的是( ) A) news.sina.com.cn B) www@cctv.com C) www.sohu.com D) www.zj.com

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

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 1 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

A) 看到对方当前的实时摄像 B) 象使用电话机一样通过声音和对方聊天 C) 护士通过网络往患者体内注射药水 D) 通过文字和对方进行实时交流(聊天) 9)下列关于计算机的说法中,错误的是( )

A) 软件是由程序和相关的文档资料组成的 B) 操作系统是一种软件 C) 一台不装任何软件的计算机不能帮助你进行文字编辑处理 D) 世界上第一台电子计算机是在德国诞生的。 10)PASCAL源程序文件的扩展名是( )

A) .pas B) .doc C) .exe D) .pascal 11)下列描述中,不属于程序设计基本结构的是( )

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

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

A) Constant out of range B) \ C) Unknow identifier D) Type mismatch

13)在turbo pascal编程时,执行程序和查看程序执行结果的快捷键分别是( )。 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) 100 B) 50 C) 48 D) 98 15)下列关于树这种数据结构的说法中,正确的是( )

A) 任何结点都有子结点和父结点 B) 任何结点都必须有子结点 C) 任何结点都必须有父结点

D) 在二叉树中,每个结点可能没有子结点,有的话最多只能有二个子结点

二.问题求解:(5+5=10分)

1.交换次数。下列程序段用来将10个整数(从键盘输入)进行从大到小的排序,然后按这个顺序输出排序后的10个整数。问:在最坏情况下,二个整数两两交换的次数是多少? 例如,当将3个整数1、2、3(最坏情况)从大到小排序时,两两交换的次数是3次。 for i:=1 to 10 do readln(a[i]);

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 2 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

for i:=1 to 9 do for j:=i+1 to 10 do

if a[i]

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.

program test1; 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.

PROGRAM test2; VAR

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 3 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

s,x:integer; BEGIN x:=0;s:=0;

WHILE S<55 DO BEGIN X:=X+1; S:=S+X; END; WRITELN(X); END. 输出: 3.

program test3; const

n1=4;n2=5; var

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

a:array[1..n1,1..n2] of integer; begin

for i:=1 to n1 do begin

for j:=1 to n2 do read(a[i,j]); readln; end; s:=0;

for j:=1 to n2 do begin max:=0;

for i:=1 to n1 do

if max

writeln(s); end.

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 4 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

输入:

1 2 3 4 5 6 9 13 5 7 11 12 8 15 14 21 20 18 16 17 输出: 4.

program test4; var i:integer;

a:array[1..10] of char; procedure try(t:integer); begin

if t=10 then write(a[t]) else begin

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

for i:=1 to 10 do read(a[i]); try(1); end.

输入:123459876a 输出:

四.完善程序(根据问题要求和已有程序,在空格处填入适当的语句或符号,使程序完整。本题共30分。)

1.【圣诞礼物】(3+2+2+3+2=12分)

圣诞节到了,圣诞老人打算把一批圣诞礼物装入各种不同颜色的口袋中,然后分发给小朋友们。现在圣诞老人手中有5个不同礼物和5个不同口袋,圣诞老人的计划是这样的:

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 5 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

(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个不同的礼物和口袋,那么你的程序应该能输出以下结果: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 s=6

上述输出结果中,最后一行表示装袋方法的种数(这里是6种),前面6行是各种不同的装袋方法。比如,第一行表示1、2、3号口袋分别装的礼物编号是1、2、3;而第3行表示的是1、2、3号口袋分别装的礼物编号是2、1、3。 请你完成下列程序:

program test6; var

a:array[1..5] of integer;

i1,i2,i3,i4,i5,j1,j2,j3,j4,j5,s:integer; function f(x,y:integer):boolean; var k:integer; begin f:=true;

for k:=1 to x do if ① then f:=false; end;

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 6 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

procedure print; var i:integer; begin

for i:=1 to 5 do write(a[i]:3);writeln; end; begin

s:= ② ; for i1:=1 to 5 do begin

j1:=1; ③ ; for i2:=1 to 5 do if f(j1,i2) then begin

j2:=2;a[j2]:=i2; for i3:=1 to 5 do if f(j2,i3) then begin

j3:=3;a[j3]:=i3; for i4:=1 to 5 do if f(j3,i4) then begin

j4:=4;a[j4]:=i4; for i5:=1 to 5 do

if f(j4,i5) then begin j5:=5;a[j5]:=i5;print; ④ ; end; end; end; end; end;

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 7 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

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 M VLN WPABE UQHCF ARRBBL

上面移动序列中包含了4种不同字母,分别表示了不同的移动方向,这些字母的含义是:A表示将空位上方的方板移动到空位;B表示将空位下方的方板移动到空位;L表示将空位左方的方板移动到空位;R表示将空位右方的方板移动到空位。

一个正确的华容道程序应在得到上面的输入数据后,输出如下所示的最终局面(第4行第3个位置是空位): TRGSJ XOKLT MDVBN WP AE UQHCF

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

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 8 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

比如,输入数据为:(第3行第2个位置是空位) TRGSJ XDOKI M VLN WPABE UQHCF LBBB

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

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

program TEST5; var

i1,j1,i2,j2,i,j,k:integer; s,x:char;

a:array[1..5,1..5] of char; b:string; procedure err; begin

write(' ① ');halt; end;

procedure swp(var i1,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

for i:=1 to 5 do begin

for j:=1 to 5 do begin

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 9 -

审定:绍兴市青少年信息学奥林匹克竞赛科学委员会 (PASCAL版 试卷)

read(a[i,j]);if ② then begin i1:=i;j1:=j;end; end; readln; end; readln(b); k:=length(b);

for i:=1 to ③ do begin

if ((i1=1) and (b[i]='A')) or ((i1=5) and (b[i]='B')) or ( ④ ) or ((j1=5) and (b[i]='R')) then err; I2:=I1;j2:=j1; case b[i] of 'A':i2:=i1-1;

'B':i2:= ⑤ ; 'L':j2:=j1-1; 'R':j2:= ⑥ ; end;

swp(i1,j1,i2,j2); end;

for i:=1 to 5 do begin

for j:=1 to 5 do write(a[i,j]); writeln; end; end.

批准:绍兴市科协、绍兴市教育局 主办:绍兴科技馆、绍兴市电教馆(2004年12月) - 10 -

本文来源:https://www.bwwdw.com/article/gvao.html

Top