思路:计算从0000年0月0日计算到该输入的日期天数,作差(注意,相邻为两天)
代码:
#include <iostream>
using namespace std;
int monthDay[12]={0,31,59,90,120,151,181,212,243,273,304,334};
//从该年到0000年的天数
int GetDayCount(int year, int month, int day)
{
int daycount = year*365 + year/4 - year/100 + year/400; //考虑闰年
if (month >= 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))
{
monthDay[2] = 29;
}
daycount += monthDay[month -1];
daycount += day;
return daycount;
}
int main ()
{
int year1,month1,day1;
int year2,month2,day2;
scanf("%4d %2d %2d",&year1,&month1,&day1);
scanf("%4d %2d %2d",&year2,&month2,&day2);
int n1 = GetDayCount(year2,month2,day2);
int n2 = GetDayCount(year1,month1,day1);
cout<<abs(n2-n1) + 1<<endl;
return 0;
}