program sssssssssssssss;{$APPTYPE CONSOLE}uses
SysUtils;
var
year :integer;
total:integer;
day :integer;
month:integer;
leapyear:char; procedure dayborn;
begin
total:=total mod 7;
if(total=1)or(total=2)or(total=3)or(total=4)or(total=5)or(total=6)or(total=0) then
case total of
1:writeln('您输入的日期是星期天。');
2:writeln('您输入的日期是星期一。');
3:writeln('您输入的日期是星期二。');
4:writeln('您输入的日期是星期三。');
5:writeln('您输入的日期是星期四。');
6:writeln('您输入的日期是星期五。');
7:writeln('您输入的日期是星期六。');
end;
readln;
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
Writeln('请输入年份:');
readln(year);
total:=year div 4+year;
writeln;
writeln('(char)是否是闰年');
readln(leapyear);
writeln;
writeln('请输入日期:');
readln(day);
total:=total+day;
writeln;
writeln('输入月份:');
readln(month);if(leapyear='y')and(month=2)or(month=1)then(*请解释从这一行到最后的代码意思*)
total:=total-1;
if month=1 then
begin
total:=total+1;
dayborn;
end;
if month=2 then
begin
total:=total+4;
dayborn;
end;
if month=3 then
begin
total:=total+4;
dayborn;
end;
if month=4 then
begin
total:=total+0;
dayborn;
end;
if month=5 then
begin
total:=total+2;
dayborn;
end;
if month=6 then
begin
total:=total+5;
dayborn;
end;
if month=7 then
begin
total:=total+0;
dayborn;
end;
if month=8 then
begin
total:=total+3;
dayborn;
end;
if month=9 then
begin
total:=total+6;
dayborn;
end;
if month=10 then
begin
total:=total+1;
dayborn;
end;
if month=11 then
begin
total:=total+4;
dayborn;
end;
if month=12 then
begin
total:=total+6;
dayborn;
end;
end.
SysUtils;
var
year :integer;
total:integer;
day :integer;
month:integer;
leapyear:char; procedure dayborn;
begin
total:=total mod 7;
if(total=1)or(total=2)or(total=3)or(total=4)or(total=5)or(total=6)or(total=0) then
case total of
1:writeln('您输入的日期是星期天。');
2:writeln('您输入的日期是星期一。');
3:writeln('您输入的日期是星期二。');
4:writeln('您输入的日期是星期三。');
5:writeln('您输入的日期是星期四。');
6:writeln('您输入的日期是星期五。');
7:writeln('您输入的日期是星期六。');
end;
readln;
end;
begin
{ TODO -oUser -cConsole Main : Insert code here }
Writeln('请输入年份:');
readln(year);
total:=year div 4+year;
writeln;
writeln('(char)是否是闰年');
readln(leapyear);
writeln;
writeln('请输入日期:');
readln(day);
total:=total+day;
writeln;
writeln('输入月份:');
readln(month);if(leapyear='y')and(month=2)or(month=1)then(*请解释从这一行到最后的代码意思*)
total:=total-1;
if month=1 then
begin
total:=total+1;
dayborn;
end;
if month=2 then
begin
total:=total+4;
dayborn;
end;
if month=3 then
begin
total:=total+4;
dayborn;
end;
if month=4 then
begin
total:=total+0;
dayborn;
end;
if month=5 then
begin
total:=total+2;
dayborn;
end;
if month=6 then
begin
total:=total+5;
dayborn;
end;
if month=7 then
begin
total:=total+0;
dayborn;
end;
if month=8 then
begin
total:=total+3;
dayborn;
end;
if month=9 then
begin
total:=total+6;
dayborn;
end;
if month=10 then
begin
total:=total+1;
dayborn;
end;
if month=11 then
begin
total:=total+4;
dayborn;
end;
if month=12 then
begin
total:=total+6;
dayborn;
end;
end.
如果这个程序是想说明某特殊的写法或者算法还说得过去,起码格式挺整齐,虽然是控制台程序,但就算法来看简直就是垃圾,不说有现成的函数,就这个计算方法也该挨抽了。case 和 集合 能省去大段的代码。
而且这个程序中对闰年的理解显然有错。
function IsLeapYear(N: Word): Boolean;
begin
Result := (((N mod 4) = 0) and ((N mod 100) <> 0)) or ((N mod 400) = 0);
end;