题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出
每组数据输出一行,即日期差值
样例输入
20130101
20130105
样例输出
5
#include <stdio.h>
int isLeapyear(int year) //判断是否是闰年
{
if((year%4==0&&year%100!=0)||(year%400==0))
return 1;
else
return 0;
}
int main()
{
//month存储天数,一维代表平年,二维代表闰年
int month[13][2]= {{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};
int time1,time2,y1,y2,m1,m2,d1,d2;
while(scanf("%d %d",&time1,&time2)!=EOF) //输入两个年份
{
if(time1>time2) //如果第一个年份大于第二个年份,则交换
{
int tmp;
tmp=time1;
time1=time2;
time2=tmp;
}
y1=time1/10000; //得到年份
y2=time2/10000;
m1=(time1%10000)/100; //得到月份
m2=(time2%10000)/100;
d1=time1%100; //得到日
d2=time2%100;
int count=1;
while(y1<y2||m1<m2||d1<d2) //日期一直执行加1操作,直到年月日均相同
{
d1++; //执行天数加1
if(d1==month[m1][isLeapyear(y1)]+1) //判断日是否等于当年月份最后一天
{
m1++; //月份加1
d1=1; //日期变为1号
}
if(m1==13) //月份是否满12个月
{
y1++; //年份加1
m1=1; //月份变为1月份
}
count++; //统计相差结果
}
printf("%d\n",count);
}
return 0;
}