两个日期之间有几天,若日期为连续的他们的天数为两天
#include <bits/stdc++.h>
using namespace std;
//平年和闰年每个月的天数
int mouth[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 year){
return (year%4==0 && year%100!=0 || year%400==0);
}
int main(){
//定义前后时间,年月日
int time1,y1,m1,d1;
int time2,y2,m2,d2;
scanf("%d %d",&time1,&time2);
//第一个日期晚于第二个日期则交换
if(time1>time2){
swap(time1,time2);
}
//将输入的时间转换为年月日
y1=time1/10000;m1=time1%10000/100;d1=time1%100;
y2=time2/10000;m2=time2%10000/100;d2=time2%100;
//计数 ,注意2号到4号算3天
int ans=1;
//当第一个日期没有达到第二个日期时则循环
while(y1<y2 || m1<m2 || d1<d2){
//第一个天数+1
d1++;
//天数等于当月总天数,则月+1,日=1
if(d1==mouth[m1][isLeap(y1)]){
m1=m1+1;
d1=1;
}
//月份满12个月,年+1,月=1
if(m1==12){
y1=y1+1;
m1=1;
}
//计数
ans++;
}
printf("总天数:%d",ans);
return 0;
}