题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
示例1
输入
复制
20110412
20110422
输出
复制
11
#include<stdio.h>
#include<math.h>
int month[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
typedef struct{
int y;
int m;
int d;
}Date;
int isleap(int year){
if((year%4==0 && year%100!=0) || year%400==0){
return 1;
}
else
return 0;
}
int days(Date x){
int y=x.y,m=x.m,d=x.d;
int sum=0;
for(int i=0;i<y;i++){
if(isleap(i)==1)
sum=sum+366;
else
sum=sum+365;
}
for(int i=1;i<m; i++)
{
sum=sum+month[isleap(y)][i];
}
sum=sum+d;
return sum;
}
int main(){
Date date1,date2;
while(scanf("%4d%2d%2d",&date1.y,&date1.m,&date1.d)!=EOF){
scanf("%4d%2d%2d",&date2.y,&date2.m,&date2.d);
printf("%d\n",abs(days(date1)-
days(date2))+1);
}
return 0;
}