题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出
每组数据输出一行,即日期差值
样例输入
20130101
20130105
样例输出
5
#include <stdio.h>
int year[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};
int isLeap(int year){
if(year%4==0&&year%100!=0||year%400==0) return 1;
else return 0;
}
struct date{
int t;
int y;
int m;
int d;
};
int main()
{
struct date d1,d2;
while(scanf("%d%d",&d1.t,&d2.t)!=EOF){
int diff=1,sign=1;
if(d1.t>d2.t){
int tmp;
tmp=d1.t;
d1.t=d2.t;
d2.t=tmp;
sign*=-1;
}
d1.y=d1.t/10000; d1.m=d1.t%10000/100; d1.d=d1.t%100;
d2.y=d2.t/10000; d2.m=d2.t%10000/100; d2.d=d2.t%100;
while(d1.t<d2.t){
int le=isLeap(d1.y);
if(d1.m==12&&d1.d==31){d1.y++;d1.m=1;d1.d=1;}
else if(d1.d == year[le][d1.m-1]){d1.m++;d1.d=1;}
else d1.d++;
diff++;
d1.t=d1.y*10000+d1.m*100+d1.d;
}
printf("%d\n",diff);
};
return 0;
}