主题:枚举,子界的问题
guanguan
[专家分:0] 发布于 2005-02-20 11:47:00
由键盘输入年月,输出该月的月历。快回复[em10]
回复列表 (共2个回复)
沙发
泡泡糖 [专家分:230] 发布于 2005-05-05 15:15:00
等我想一想!
板凳
sd5774188 [专家分:260] 发布于 2005-05-05 23:23:00
program yb(input,output);
var
year,month:integer;
m,n,i:integer;
function get_week(year:integer):integer;
var
x:integer;
begin
x:=year+(year-1) div 4 -(year-1) div 100 + (year-1) div 400;
get_week:=x mod 7;
end;
function leap(year:integer):boolean;
begin
leap:=false;
if year mod 100=0 then
if year mod 400=0 then
begin
leap:=true;
exit;
end
else exit;
if year mod 4=0 then leap:=true;
end;
function getdaysNum(year,month:integer):integer;
var
x:integer;
begin
case month of
1,3,5,7,8,10,12: x:=31;
2: if leap(year) then x:=29
else x:=28;
4,6,9,11: x:=30;
end;
getdaysNum:=x;
end;
begin
write('Enter year: '); readln(year);
write('Enter month: '); readln(month);
m:=get_week(year);
n:=0;
for i:=1 to month-1 do
n:=n+getdaysNum(year,i);
m:=(m+n) mod 7;
writeln;
writeln(year,'-',month);
writeln('SUN':6,'MON':6,'TUE':6,'WED':6,'THU':6,'FRI':6,'SAT':6);
for i:=0 to m-1 do write(' ':6);
n:=getdaysNum(year,month);
for i:=1 to n do
begin
write(i:6);
m:=m+1;
if m mod 7=0 then writeln;
end;
writeln;
end.
我来回复