#include <stdio.h>
bool isleap(int);
int main(){
int cal[13][1]={{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,year1,month1,day1;
int time2,year2,month2,day2;
int i,j,m,n;
while(scanf("%d%d",&time1,&time2) != EOF){
int gap=1;
if(time1>time2){
int temp=time1;
time1=time2;
time2=temp;
}
year1=time1/10000; year2=time2/10000;
month1=time1%10000/100; month2=time2%10000/100;
day1=time1%100; day2=time2%100;
// 整年时间计算
for(year1;year1<year2-1;year1++){
if(isleap(year1))
gap += 366;
else
gap += 365;
}
while(year1 != year2 || month1 != month2 || day1 != day2){
gap++;
bool record=isleap(year1);
if(day1 != cal[month1][record])
day1++;
else{
month1++;
day1=1;
}
if(month1 == 13){
year1++;
month1=1;
}
}
printf("%d\n",gap);
}
}
bool isleap(int y){
return (y%400 == 0) || ( (y%100 != 0) && (y%4 ==0));
} //判断是否是闰年,是则返回1,不是则返回0
算法笔记Problem A: 日期差值
于 2022-01-20 19:30:53 首次发布