解题思路:
令日期不断加1天,直到第一个日期等于第二个日期为止。
#include <iostream>
#include <cstdio>
using namespace std;
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}
};
bool isLeap(int y){//判断是否是闰年
return (y%4==0 && y%100 != 0 )||(y%400==0);
}
int main(){
int time1,y1,m1,d1;
int time2,y2,m2,d2;
while(scanf("%d%d",&time1,&time2)!=EOF){
if(time1 > time2){
int temp = time1;
time1 = time2;
time2 = temp;
}
y1 = time1/10000;
m1 = time1%10000/100;
d1 = time1%100;
y2 = time2/10000;
m2 = time2%10000/100;
d2 = time2%100;
int ans = 1;//初始化结果,相差天数
while((y1<y2) || (m1 < m2) || (d1 < d2)){//第一个日期没有达到第二个日期时循环
d1++;//天数加一
if(d1 == month[m1][isLeap(y1)]+1){//满当月天数
m1++;//日期变为下个月的一号
d1=1;
}
if(m1==13){//月份满十二个月
y1++;//日期变为下一年的一月
m1=1;
}
ans++;//相差天数+1
}
printf("%d\n",ans);
}
return 0;
}
京公网安备 11010502036488号