2011年青岛市程序设计竞赛试题

  • 格式:doc
  • 大小:49.00 KB
  • 文档页数:6

下载文档原格式

  / 6
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2011年青岛市程序设计竞赛试题(小学组)答案

2011年09月02日信息来源:胶州市教育体育局作者:杨妮妮鲍

燕点击数:1840 审核者:胶州市教育体育局

(比赛时间60分钟,试题满分100分)

说明:1、必须以题目中规定的文件名进行保存,并用ftp上传到指定文件夹中。ftp上传使用说明在试题最后,请选手每做完一道题及时上传一次,以确保因机器故障引起的文件丢失。

2.使用竞赛规定的文件格式输入、输出。

(1)对于使用pascal语言的选手,请参照以下格式使用文件输入输出:Begin

Assign(input,’输入文件名’);assign(output,‘输出文件名’);

Reset (input);rrewrite(output);

……

Close(input);close(output);

End.

(2)对于c或c++选手,如果尚未掌握文件输入输出,请参考以下我们提供的一种方法进行文件输入输出。在主函数即main()的开始部分加入以下代码:

Freopen(“输入文件名”,”r”,stdin);

Freopen(“输出文件名”,“w”,stdout);

程序结束时无须像pascal选手一样,关闭文件,系统将自动关闭读写的文件。

对于c选手,请调用头文件stdio.h

对于c++选手,请调用头文件iostream

第1题水仙花数(程序文件名a1.pas,20分)

有一些100-999之间的整数具有这样的性质,该数的各位数字的立方之和等于该数本身,这种数人们把它称为水仙花数。例如153是个水仙花数,因为13+53+33=153。编程输入一三位正整数N(100<=n<=999),判断是否是水仙花数,如是输出整数1,不是输出整数0。

输入(A1.in):一行,一个整数n(100<=n<=999)

输出(a1.out):一行,一个整数。若N是水仙花数则输出1,否则输出0。样例1:

输入153

输出1

样例2:

输入:200

输出:0

参考答案:

program a1;

var a,b,c,n:integer;

input,output:text;

begin

assign(input,'a1.in');

assign(otuput,'a1.out');

reset(input);

rewrite(output);

read(input,n);

a:=n div 100;

b:=n mod 100 div 10;

c:=n mod 10;

if a*a*a+b*b*b+c*c*c=n then write(output,1)

else write(output,0);

close(input);

close(output);

end.

第2题:走阶梯(程序文件名a2.pas,20分)

有一个长阶梯,如果每步跨2阶最后剩1阶,如果每步跨3阶最后剩2阶,如果每步跨4阶最后剩3阶,如果每步跨5阶最后剩4阶,如果每步跨6阶最后剩5阶,只有当每步跨7阶时恰好走完,问这个阶梯有多少阶?输出(a2.out):一行,要求统计的结果。

参考答案:

program a2;

var i:integer;

output:text;

begin

assign(output,'a2.out');

rewrite(output);

for i:=1 to 1000 do

if (i mod 2=1) and (i mod 3=2) and (i mod 4=3) and (i mod 5=4) and (i mod 6=5) and (i mod 7=0) then write(output,i);

close(output);

end.

第3题:摘红苹果(程序文件名a3.pas,20分)

小明爷爷家有棵苹果树,树上高低不一的长了n个红苹果。一天,m个

小朋友到爷爷家做客,爷爷说:你们每人最多可以摘两个红苹果,而且只许伸手摘,不允许借助其它工具,摘下的苹果大家分享。由于小朋友的身高参差不齐,怎样才能使他们摘的苹果总数最多呢?请你计算小朋友们最多能摘到多少个苹果?

输入(a3.in):第1行,两个用空格隔开的整数n和m(n<=100,m<=20);

第2行,n个用空格隔开的整数,分别表示每个苹果的高度;

第3行,m个用空格隔开的整数,分别表示每个小朋友伸手能达到的高度(到达苹果即可摘到)。

输出a3.out:一行,一个整数,小朋友们最多能摘到的苹果数。

样例:

输入10 4

110 100 150 90 100 135 160 88 130 140

120 100 110 80

输出:5

参考答案:

program a3;

var m,n,i,j,c,d:integer;

a,b:array[1..1000] of integer;

input,output:text;

begin

assign(input,'a3.in');

assign(output,'a3.out');

reset(input);

rewrite(output);

read(input,n,m);

for i:=1 to n do

read(input,a[i]);

for i:=1 to m do

read(input,b[i]);

for i:=1 to m-1 do

for j:=i+1 to m do

if b[i]>b[j] then begin

c:=b[i];

b[i]:=b[j];

b[j]:=c;

end;

for i:=1 to m do

begin

c:=0;

for j:=1 to n do

if (b[i]>=a[j]) and (c<2) then begin

c:=c+1;