2007年长沙市小学生计算机奥林匹克竞赛决赛试题
见风使舵近义词-原来你也唱过我的歌
2007
年长沙市小学生计算机奥林匹克竞赛决赛试题
< br>
这是长沙市小学生计
算机奥林匹克竞赛复赛试上机
现场编程题。竞赛的程序设计语言是
PASCAL
语言,
但是这些题目直接转用
< br>LOGO
语言的编程题也是完全
可行的。
(时间:
120
分钟)
p>
一、判奇偶求和(
100
分)(存盘程序名:
t1
)
输入一个正整数
n
,如果
n
是奇数,则求
1
~
p>
n
之间所有的偶数之和;如果
n
是偶数,则
求
n
所有的约数之和。
输入:
n
(
在标准整型范围
)
输出:和值(测试数据会保证这个值在标准整型范围)
样例
1
:输入:
11
输出:
30
样例
2
:输入:
12
输出:
28
程序:
program
CS200701;
var
n,i,s:integer;
begin
readln(n);
if odd(n) then begin
s:=0;
for i:=2 to n
do
if not odd(i) then
s:=s+i;{
求偶数之和
}
end else begin
s:=0;
for i:=1 to n
do
if n mod i=0 then
s:=s+i;{
求约数之和
}
end;
writeln(s);
readln;
end.
二、
p>
13
号星期几(
100
分)(存盘程序名:
t2
)
编程统计:从
1900
年
1
月
1
日
(
星期一)开始经过的
n
年当中,每个月的
13
号这一天是
星期一、星期二、星期三、
……
< br>、星期日的次数分别是多少?
(提示:
年份能被
4
整除而不能被
100
整除的是闰年;
或者年份能被
400
整除的是闰年。
)
输入:整数
n (1≤n≤400)
输出:一行
7
个整数
,
以空格相隔,
(依次是星期一、星期
二、星期三、
……
、星期日的次数)
样例:输入:
1
输出:
1
3
1
2
2
2
1
程序:
program
CS200702;
var
n,y,r,t,xq,i,j
:integer;{n:
年
,y:
月
,r:
日期
,t:
天数
,xq:
星期几
,i:
年数
}
s:array[1..7] of
integer;
begin
readln(i);
p>
i:=1900+i;{
得到结束年份
}
n:=1900;{
开始于
1900<
/p>
年
}
xq:=0;
repeat
for y:=1 to 12 do
begin
case y of
1,3,5,7,8,10,12:t:=31;
4,6,9,11:t:=30;
2:if (n mod
400=0) or
(n mod 100<>0) and
(n mod 4=0)
then t:=29
else t:=28
end;{
判断每个月的天数
}
for r:=1 to t do begin
xq:=xq+1;if xq=8 then xq:=1;{
星期从
1
到
7
变化,到
8
则令其为
1}
if r=13 then s[xq]:=s[xq]+1;{
日期为
13
时,对应的星期几次数增加
1}
end;{
每次循环时间过去一天
}
end;{
每次循环时间过去一个月
}
n:=n+1;{
年份增加
1}
until i=n;
for j:=1 to 7 do
write(s[j],' ');
writeln;