給你兩個日期,問這兩個日期相差幾天。
輸入說明 :
輸入有多筆測資,每筆測資有兩行,每行有三個整數依序是年、月、日。輸入以 EOF 作為結束,題目保證不會有不符合的測資出現。
輸出說明 :
輸出兩個日期差幾天。
範例輸入 :
2011 10 19
2011 10 18
範例輸出 :
1
提示 :
年份在[0,9999]範圍內
程式碼:
#include <stdio.h>
int monthday[13] = {0,0,31,59,90,120,151,181,212,243,273,304,334};
int calculateDay(int year, int month, int day)
{
int leaps,isleap;
isleap = (year%4==0 && year%100!=0) || year%400==0;
year--;
leaps = year/4 - year/100 + year/400;
return (year*365+leaps) + (monthday[month]+((month>2)?isleap:0)) + day;
}
int main ()
{
int i,year[2],month[2],day[2],check;
while(scanf("%d %d %d",&year[0],&month[0],&day[0])==3)
{
scanf("%d %d %d",&year[1],&month[1],&day[1]);
check = calculateDay(year[0],month[0],day[0]) - calculateDay(year[1],month[1],day[1]);
printf("%d\n",check>-1?check:-check);
}
return 0;
}
http://zerojudge.tw/ShowProblem?problemid=a263