回 帖 发 新 帖 刷新版面

主题:枚举,子界的问题

由键盘输入年月,输出该月的月历。快回复[em10]

回复列表 (共2个回复)

沙发

等我想一想!

板凳

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.

我来回复

您尚未登录,请登录后再回复。点此登录或注册