回 帖 发 新 帖 刷新版面

主题:高手帮我看道题


题目是这样的:
CCC老师的生日是YY年MM月DD日,他想知道自己出生后第一万天纪念日的日期(出生日算第0天)。

输入格式: 
从文件的第一行分别读入YY,MM,DD其中1949<=YY<=2006,日期绝对合法。  
输出格式:
输出文件只有一行,即CCC老师生日第一万天以后的日期,格式为 “Y-M-D”。 

我的代码:
const day:array[0..1,0..11] of longint=((31,31,28,31,30,31,30,31,31,30,31,30),(31,31,29,31,30,31,30,31,31,30,31,30));
var d,dd,m,mm,s,y,yy:longint;

function judge(y:longint):longint;
begin
     judge:=0;
     if y mod 100=0
        then if y mod 400=0 then judge:=1
        else if y mod 4=0 then judge:=1;
end;

begin
     readln(y,m,d);
     yy:=y;mm:=m mod 12;dd:=d;s:=10000;
     while s>0 do
           begin
                dec(s);inc(dd);
                if dd>day[judge(yy),mm]
                   then
                        begin
                             dd:=1;mm:=(mm+1) mod 12;
                        end;
                if (mm=1) and (dd=1) then inc(yy);
           end;
     if mm=0 then mm:=12;
     writeln(yy,'-',mm,'-',dd);
end.

我模拟做的,一天一天往上加,但是不对嘛,高手帮我看一下啦

回复列表 (共3个回复)

沙发

[quote]
function judge(y:longint):longint;
begin
     judge:=0;
     if y mod 100=0
        then if y mod 400=0 then judge:=1
        else if y mod 4=0 then judge:=1;
end;
[quote]
应更改为
function judge(y:longint):longint;
begin
     judge:=0;
     if y mod 100=0 
        then [b]begin[/b] if y mod 400=0 then judge:=1 [b]end[/b]
        else if y mod 4=0 then judge:=1;
end;
否则else 将会认为是跟在if y mod 400=0 then后面的.

其它我没发现什么

板凳

一年365天,闰年366天.

3 楼

果然如此,多谢

我来回复

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