青岛市程序设计竞赛试题.docx
《青岛市程序设计竞赛试题.docx》由会员分享,可在线阅读,更多相关《青岛市程序设计竞赛试题.docx(7页珍藏版)》请在冰豆网上搜索。
青岛市程序设计竞赛试题
2010年青岛市程序设计竞赛试题(小学组)
说明:
1、必须以题目中规定的文件名进行保存,并用FTP上传到指定文件夹中。
FTP上传使用说明在试题最后。
请选手每做完一道题及时上传一次,以确保因机器故障引起的文件丢失。
2、比赛时间为:
60分钟,试题100分。
3、使用竞赛规定的文件格式输入、输出。
1、求和问题(程序文件名A1.PAS,20分)
编程输入正整数N和M(N,M≤100),求N,M之间(包括N和M)所有5的倍数的数之和S。
输入(a1.In):
一行,用空格隔开的两个正整数N和M(1≤N,M≤100)
输出(a1.out):
一行,和值
样例1:
样例2:
输入:
110输入:
3115
输出:
15输出:
90
programjk;
varI,s,n,m:
integer;
f1,f2:
text;
begin
assign(f1,'a1.in');
reset(f1);
assign(f2,a1.out');
rewrite(f2);
read(f1,n,m);
ifn>mthen
begin
i:
=n;
n:
=m;
m:
=I;
end;
fori:
=ntomdo
ifimod5=0then
s:
=s+i;
writeln(f2,s);
close(f1);
close(f2);
end.
2、整数处理(程序文件名A2.PAS,20分)
电脑老师让小明编程做一道题:
输入一个正整数A(A≤1000000000),如果A的个位数字是5,则统计A能被5整除多少次?
否则,统计A当中有多少个“0”?
你能做吗?
输入(a2.in):
一行,A(1≤A≤1000000000)
输出(a2.out):
一行,要求统计的结果。
(A的个位数是5,输出被5整除的次数;A的个位不足5,输出A中“0”的个数)
programjk;
vari,j,h,g,f,d,s,a,z,c,v,b,n,m:
longint;
x:
array[1..100]ofinteger;
f1,f2:
text;
begin
assign(f1,'a2.in');
reset(f1);
assign(f2,'a2.out');
rewrite(f2);
read(f1,a);
ifs=5thenbegin
whileh>1do
begin
h:
=hdiv5;
i:
=i+1;
end;
writeln(f2,i);
end
elseifs<5thenbegin
whilea<>0do
begin
s:
=amod10;
ifs=0theng:
=g+1;
a:
=adiv10;
end;
end;
writeln(f2,g);
close(f1);
close(f2);
end.
3、乘车费用(程序文件名A3。
PAS,20分)
星期天上午小明乘出租车去本市的外婆家。
出租车计价方案为:
2公里以内起步价是6元,超过2公里后按2元/公里计价,超过10公里之后在2元/公里的基础上加价50%,另外,停车等候则按时间计费:
1元/三分(注:
不满三分钟不计费)。
已知:
小明到外婆家路程为N公里,中间停车等候的时间总共M分钟,请计算小明到外婆家的出租车费用是多少元?
输入(a3.in):
一行,两个用空格隔开的整数N和M。
输出:
(a3.out):
一行,一个整数,小明到外婆家的出租车费。
样例1:
输入:
87
输出:
20
programjk;
vari,j,h,g,f,d,s,a,z,x,c,m,n:
integer;
f1,f2:
text;
begin
assign(f1,'a3.in');
reset(f1);
assign(f2,'a3.out');
rewrite(f2);
read(f1,n,m);
ifn<2theni:
=6;
if(n>2)and(n<=10)theni:
=6+2*(n-2);
ifn>10theni:
=i+3*(n-10);
m:
=mdiv3;
i:
=i+m;
writeln(f2,i);
close(f2);
end.
4、马鞍数(程序文件名A4.PAS,20分)
求一个5×5方阵中的马鞍数,输出它的位置。
所谓马鞍数,是指在行上最小而在列上最大的数。
如下:
65789
54678
43521
32490
21548
则一行二列的数5就是马鞍数。
输入(a4.in):
5行,每行有5个由空格隔开的0~50间的整数。
输出(a4.out):
若马鞍数存在,则输出该数所在的位置行和列的值(用空格隔开)。
如果该方阵中不存在马鞍数,则输出字符串no。
programfas;
varx:
array[1..5,1..5]ofinteger;
a,b,c,d,e,f,g,h,i,j,k,l,m,n,z:
integer;
f1,f2:
text;
begin
assign(f1,'a4.in');
assign(f2,'a4.out');
seret(f1);
sewrite(f2);
fori:
=1to5do
forj:
=1to5do
read(f1,x[i,j]);
fori:
=1to5do
begin
c:
=0;
a:
=x[i,1];
b:
=1;
forj:
=2to5do
begin
ifa>x[i,j]thenbegin
a:
=x[i,j];
b:
=j;
z:
=i;
end;
end;
form:
=1to5do
ifa=1;
ifc<>1thenwriteln(f2,a,'(',i,',',b,')')
elsed:
=1;
end;
ifd<>1then
writeln('no');
close(f1);
end.
5、编码问题(程序文件名A5。
PAS,20分)
老师让小林设计一个对一英文字符串进行两次加密的程序。
假定字母表是首尾相接的环,即Z和A相连,z和a相连。
第一次加密的规则是这样的:
把英文字符串的每个字母转换成它后面的字母。
例如对英文字符串xyaZbzmNT进行第一次加密后得到yzbAcanOU。
第二次加密的编码规则是这样的:
将第一次加密后得到的字符串中相邻字母从右往左两两交换,到最后只剩一个字母则不再换。
如对上述所举例子中第一次加密后得到的字符串yzbAcanOU进行第二次加密的结果是ybzcAnaUO。
老师要求小林编程求出任一字母字符串经过两次加密后得到的字符串。
输入(a5.in):
一行,英文字母组成的字符串。
输出(a5.out):
一行,两次加密后得到的字符串。
programfasd;
varg,h,k,l,m,n:
char;
a,b,i,j,e,f:
integer;
x:
string;
f1,f2:
text;
begin
assign(f1,'a5.in');
reset(f1);
assign(f2,'a5.out');
rewrite(f2);
readln(f1,x);
a:
=length(x);
fori:
=1toado
ifx[i]='z'thenx[i]:
='a'
elseifx[i]='Z'thenx[i]:
='A'
elsex[i]:
=succ(x[i]);
forj:
=adownto1do
ifjmod2=0thenbegin
g:
=x[j];
x[j]:
=x[j+1];
x[j+1]:
=g;
end;
writeln(f2,x);
close(f1);
close(f2);
end.