level 2
Y332514618
楼主
program ex6_5;
const n=10;
type date=record
month:1..12;
day:1..31;
year:1900..2050;
end;
var today:array[1..n] of date;
i:integer;
maxday:28..31;
begin
writeln('please in put 10 times mm/dd/yyyy, and i will tell you the date of next day');
for i:=1 to n do
with today[i] do readln(month,day,year);
for i:=1 to n do
with today[i] do
begin
case month of
1,3,5,7,8,10,12:maxday:=31;
4,6,9,11:maxday:=30;
2: if (year mod 4=0) and (year mod 100<>0)or (year mod 400=0)
then maxday:=29
else maxday:=28;
end;
if day=maxday then
begin
day:=1;
if month=12 then
begin
month:=1;
year:=year+1;
end
else month:=month+1;
end
else if(day>maxday)or (day<0)then writeln('date error!')
else day:=day+1;
writeln(month,'-',day,'-',year);
end;
readln
end.
运行时输入4 10 1997 显示范围出错(201),把day的子界类型改成integer之后就没事了,可是month和day的使用方式一模一样,为什么day的子界类型就有问题
2014年03月09日 06点03分
1
const n=10;
type date=record
month:1..12;
day:1..31;
year:1900..2050;
end;
var today:array[1..n] of date;
i:integer;
maxday:28..31;
begin
writeln('please in put 10 times mm/dd/yyyy, and i will tell you the date of next day');
for i:=1 to n do
with today[i] do readln(month,day,year);
for i:=1 to n do
with today[i] do
begin
case month of
1,3,5,7,8,10,12:maxday:=31;
4,6,9,11:maxday:=30;
2: if (year mod 4=0) and (year mod 100<>0)or (year mod 400=0)
then maxday:=29
else maxday:=28;
end;
if day=maxday then
begin
day:=1;
if month=12 then
begin
month:=1;
year:=year+1;
end
else month:=month+1;
end
else if(day>maxday)or (day<0)then writeln('date error!')
else day:=day+1;
writeln(month,'-',day,'-',year);
end;
readln
end.
运行时输入4 10 1997 显示范围出错(201),把day的子界类型改成integer之后就没事了,可是month和day的使用方式一模一样,为什么day的子界类型就有问题