第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx

上传人:b****2 文档编号:23480498 上传时间:2023-05-17 格式:DOCX 页数:16 大小:197.49KB
下载 相关 举报
第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx_第1页
第1页 / 共16页
第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx_第2页
第2页 / 共16页
第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx_第3页
第3页 / 共16页
第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx_第4页
第4页 / 共16页
第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx

《第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx》由会员分享,可在线阅读,更多相关《第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx(16页珍藏版)》请在冰豆网上搜索。

第十届绍兴市少儿信息学奥赛初赛试题PASCAL.docx

第十届绍兴市少儿信息学奥赛初赛试题PASCAL

第十届绍兴市少儿信息学竞赛

初赛试题

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

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

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

共20分)

1.某算法的流程图如下所示:

依次输入x的值为5、3、0、6后,该算法的输出结果为

A)

6

B)

3

C)

14

D)

8

2.某用户电子邮箱收件夹中的内容如图所示:

从图中可以看出该收件夹内

A)

全部邮件有6封。

B)

未读的邮件有4封。

C)

带附件的邮件有5封。

D)

当天收到的邮件有3封。

3.笑笑的爷爷最近在学电脑,现在已经会上网了,但总是记不住网址,每次上网时都要问笑笑该输什么网址,后来笑笑略施小“技”,帮爷爷解决了这个难题。

之后爷爷再上网时,不仅不用记住网址就能快速地访问自己常去的一些网站,而且每次一启动IE就可以直接打开新华网浏览新闻,笑笑采用的方法是()

①将爷爷常用的网址都添加到IE的收藏夹中

②将爷爷常用的网址都添加到IE的临时文件夹中

③将新华网的网址设置为IE的主页

④将爷爷常用的网址都添加到IE的历史记录中

A)

①②

B)

①③

C)

②③

D)

②④

4.下列有关信息学名词解释中,错误的是()

A)

OnlineJudge:

简称OJ,信息学在线评测系统

B)

Excel:

Microsoft公司开发的电子表格处理软件。

C)

Flash:

Micromedia公司开发的三维动画制作软件。

D)

LOGO语言:

内置一套海龟绘图系统,通过向海龟发送命令,用户可以直观地学习程序的运行过程,是适合于儿童学习的入门级语言。

5.单字节5和-5在计算机内部分别表示为()

A)

0000010110000101

B)

0000010111111010

C)

1111101111111011

D)

0000010111111011

6.2名驾驶员和6名空中小姐分别上二架不同型号的旅游直升飞机,每机1名驾驶员及3名空中小姐,则上机方法共有多少种?

A)

60

B)

80

C)

40

D)

20

7.如图有两个栈s1,s2,有一数字序列2341,依次进入其中任意一个栈,任一个数字入栈后也可随时出栈,则不可能的出栈序列是:

 

A)

1324

B)

2134

C)

4231

D)

1234

8.寄存器是()的重要组成部分。

A)

硬盘

B)

高速缓存

C)

内存

D)

中央处理器(CPU)

9.在一个果园里,笑笑将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。

笑笑决定把所有的果子合成一堆。

每一次合并,笑笑可以把任意两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。

可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。

笑笑在合并果子时总共消耗的体力等于每次合并所耗体力之和。

假定有5堆果子,每堆果子的数量为12,4,20,15,10,每个果子重量都为2,笑笑想知道最小的体力耗费值是多少。

A)

272

B)

284

C)

164

D)

136

10.下面是信息学的相关知识,哪一句是正确的:

()

A)

图灵,美国数学家,1936年设计并成功实现了图灵机,鉴于他巨大的贡献,ACM于1966年以他的名字命名设立了图灵奖,图灵在人工智能方面也有重要的研究,被誉为人工智能之父。

B)

Dos、Win7、safari、Unix、Photoshop都是操作系统。

C)

信息学奥林匹克竞赛活动有NOIP、NOI、冬令营、IOI等,其中NOI是全国青少年信息学奥林匹克竞赛,它最早起源于1984年全国青少年程序设计竞赛。

D)

计算机语言分为机器语言、汇编语言和高级语言,高级语言由解释、编译两种方式翻译执行,第一个计算机高级语言是basic语言。

二、根据要求回答问题:

(5+5=10分)

1.中午,笑笑到花鸟市场闲逛,看到有位叔叔在买金鱼,笑笑就蹲在鱼缸边看金鱼吹泡泡,卖金鱼的叔叔看笑笑半天没动弹,还以为笑笑没钱买又很喜欢金鱼,就对笑笑说:

“上午我第一次卖出了全部金鱼的一半加2分之一条金鱼;第二次卖出剩余金鱼的三分之一加三分之一条金鱼;第三次卖出剩余金鱼的四分之一加四分之三条金鱼;第四次卖出剩余金鱼的八分之一加八分之一条金鱼;最后还剩下13条。

问原来有多少条金鱼?

如果你答对了,我免费送你两条金鱼。

”可怜的笑笑当场就糊涂了,请你帮帮她吧!

(每次卖出的都是整数条金鱼)

 

问:

原来一共有条金鱼。

 

2.XXX是一座风景秀丽,气候宜人,历史悠久的的城市,笑笑想到那儿去旅游向往已久。

这个暑假,爸爸决定亲自驾车带她到XXX城游玩,这可把笑笑高兴坏了。

出发前,爸爸通过网络在XXX城市的中心预订了酒店。

XXX城总共有5个景点,爸爸决定每天从酒店出发玩一个景点,晚上回酒店休息,为了节约汽车油费,爸爸事先对酒店及5个景点之间的道路及距离作了了解,如图(单位:

公里),也就是如果笑笑他们想到景点B游玩,可以选择酒店->景点B,也可以选择酒店->景点A->景点B,当然还有其它的选择。

爸爸想知道5天游完所有景点心爱的汽车最少需要跑多少公里?

问:

游完所有景点最少需要跑公里?

 

三、阅读程序并写出运行结果(8+8+8+8+8=40分):

1.programtest_2012_1;

varx,a,b,c,d,z:

integer;

begin

readln(x);

a:

=xmod10;

b:

=(xmod100)div10;

c:

=(xmod1000)div100;

d:

=xdiv1000;

z:

=a*a+b*b+c*c+d*d;

iftrunc((c*d)/(a*b))=(c*d)/(a*b)theninc(z,a*b)elseinc(z,c*d);

writeln(z);

end.

输入:

1234

输出:

2.programtest_2012_2;

varm,n,i,j,s:

integer;

d:

array[0..100]ofinteger;

begin

readln(n);

form:

=10TOnDO

begin

s:

=m*m;

j:

=0;

whiles>0DO

begin

j:

=j+1;

d[j]:

=smod10;

s:

=sdiv10;

end;

i:

=1;

while(d[i]=d[j])and(i

begin

i:

=i+1;

j:

=j-1;

end;

IFi>=jthenwriteln(m);

end;

end.

输入:

30

输出:

3、programtest_2012_3;

vara,b:

String;

i:

Integer;

begin

a:

='AABBCCDKKRRSSXX';

readln(b);

fori:

=1tolength(b)Do

If(b[i]>='0')AND(b[i]<='9')

thenwrite(b[i])

else

if(b[i]>='A')and(b[i]<='Z')

thenwrite(a[ord(b[i])-ord('A')]);

End.

输入:

NOIP-2012

输出:

4、programtest_2012_4;

varx:

integer;

procedureadd(varz:

integer);

begin

writeln(‘z=',z);z:

=z+10;writeln('z=',z);

end;

begin

x:

=5;writeln(‘x=',x);add(x);writeln(‘x=',x);

end.

输出:

5、programtest_2012_5;

varj,k:

integer;

functionpr(n:

integer):

boolean;

vari:

integer;t:

boolean;

begin

t:

=true;i:

=2;

whiletand(i<=sqrt(n))do

ifnmodi=0thent:

=false

elsei:

=i+1;

pr:

=t;

end;

begin

k:

=0;j:

=11;

whilej<=99do

begin

ifpr(j)andpr(j+2)then

beginwriteln(j:

4,j+2:

4);k:

=k+1;end;

j:

=j+2;

end;

writeln(‘total:

',k);

end.

输出:

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

本题共15+15=30分)

1.【成绩处理】(3+3+3+3+3=15分)

笑笑最崇拜她的信息学Mrchen,这不,Mrchen正在教笑笑pascal语言中的记录类型:

有时候我们会遇到这种数据,它由性质各不相同的成分组成,例如:

学号字符串类型

姓名字符串类型

年龄整型

性别字符型

成绩实型

如果用5个变量来存储,就失去了一个整体性,Pascal给我们提供了一种叫做记录的结构类型。

在一个记录中,可以包含不同类型的并且互相相关的一些数据。

记录的定义:

(如上面的数据定义如下)

typenode=record 

           num:

string;{学号}

           name:

string;{姓名}

           age:

integer;{年龄}

           sex:

string[6];{性别}

           score:

real;{成绩}

        end;

varstudent:

array[1..100]ofnode;{定义student数组的每个元素为node这种记录类型,该记录类型包含5个域}

记录的引用:

对记录中每个域的引用,如输入第i个学生的学号,有两种方法:

(1)可以写出记录变量名和域名,pascal语言表示为readln(student[i].num);

(2)使用开域语句with…do,pascal语言表示为withstudent[i]do

Readln(num)

笑笑立马就掌握了这种数据结构,为了在你面前炫耀,她出了一个记录类型的题目考考你,给出n(1<=n<200)个同学m(1<=m<=5)科的考试成绩,按总分找出前十名是哪些同学。

规定:

总分相同名次相同,且占用后面的名次,例如:

第2名有两个同学,那么将没有第3名,后面的同学将从第4名算起。

Input

第一行为n和m,下面n行为每个同学的成绩描述:

每行有m+1个数,其中第一个数为学号(小于等于200),后面为各科成绩,成绩为0~100之间的实数,中间用一个空格隔开。

Output

一行,成绩名次在前10的同学学号,不足10名全部输出。

当第10名有多个同学时,输出有可能超过10名同学的学号。

同名次按学号由小到大输出。

输出的各个学号之间用一个空格隔开。

SampleInput

172

1713

21854

34791

46586

54448

69288

78036

87668

95421

106511

116169

127832

13081

249332

154297

16289

176555

SampleOutput

648153112417712

programtest_2012_6;

typecj=array[1..5]ofreal;

rec=record

num:

integer;//学号

s:

cj;//考试科目成绩

m1:

integer;//名次

sum:

real;//总分

end;

vara:

array[1..200]ofrec;i,j,n,m,k:

integer;t:

rec;

begin

readln(n,m);

fori:

=1tondo

witha[i]do

begin

①;sum:

=0;

forj:

=1tomdobeginread(s[j]);sum:

=②end;

m1:

=0;

readln;

end;

fori:

=1ton-1do

forj:

=1ton-ido

if(a[j].sum

(③)and(a[j].num>a[j+1].num)

thenbegint:

=a[j];④;a[j+1]:

=t;end;

a[1].m1:

=1;k:

=1;

fori:

=2tondo

ifa[i].sum=a[i-1].sumthena[i].m1:

=k

elsebegininc(k);a[i].m1:

=k;end;

fori:

=1tondo

ifi<=10thenwrite(a[i].num,'')

elseifa[i].sum=a[i-1].sumthenwrite(⑤,'')

elsebreak;

end.

2.【布置新房】(3+3+3+3+3=15分)

笑笑今天很开心,家里购置的新房领到钥匙了,新房里有一间笑笑自己专用的很宽敞的房间。

更让她高兴的是,妈妈昨天对她说:

“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过m元钱就行”。

笑笑怀里揣着m元RMB到了商场,商场里的物品真多啊,让人眼花缭乱。

笑笑想买的东西很多,于是,她把想买的每件物品规定了一个重要度,用整数表示,数值越大越重要,当然每件物品都有价格,笑笑经过仔细观察,发现这个商场很奇特,所有物品的价格都是整数。

笑笑希望在不超过m元(可以等于m元)的前提下,买回去布置新房的物品的重要度之和最大。

比如想买有4件物品,价格分别为3,4,5,8,对应的重要度分别为4,5,7,10,笑笑总共有12元钱,则取编号为1,2,3的物品,得到最大的重要度之和为16。

Input

第一行为m和n,中间用空格隔开,表示m元RMB和商场中有n件物品。

下面n行依次为每件物品的价格和重要度,中间用一个空格隔开。

Output

一行,表示在不超过m元的前提下笑笑购买物品的最大重要度之和。

SampleInput

124

34

45

57

810

SampleOutput

16

算法思路:

穷举。

用一个b数组来存放物品选取的情况,当b[i]=0时表示第i件物品不取,当b[i]=1时表示第i件物品已取,初始化全部取0,可以从后面的物品开始取起,通过b数组的取值把15种取法全部穷举出来,重要度之和max初始化为0。

b[0]b[1]b[2]b[3]b[4]

00000{初始化}

00001{取第4件物品,价格为8,不超,重要度为10,将max替换为10}

00010{取物品3,价格为5,不超,重要度为7,小于max,不换}

00011{取物品3,4,价格为13,超}

00100{取物品2,价格为4,不超,重要度为5,不换}

00101

00110

00111

01110{取物品1,2,3,价格为12,重要度为16,将max替换为16}

01111

10000{当b[0]=1时停止,b[0]称为哨兵}

programtest_2012_7;

varv,p:

array[1..100]ofinteger;//物品的价格和重要度

b:

array[0..100]of0..1;//表示物品的选取情况

i,j,m,n,max,vsum,psum:

integer;

begin

readln(m,n);

fori:

=1tondo

①;

fillchar(b,sizeof(b),0);

max:

=0;

whileb[0]=0do

begin

j:

=n;

whileb[j]=1dodec(j);

b[j]:

=1;

fori:

=j+1tondo②;

vsum:

=0;psum:

=0;

forj:

=1tondo

ifb[j]=1thenbegin③;psum:

=psum+p[j];end;

ifvsum<=mthenifmax

end;

writeln(⑤);

end.

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

当前位置:首页 > 外语学习 > 英语考试

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

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