一种比较优雅的解法(少了很多判断)

#include <iostream>
using namespace std;
int MonthArray[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int GetMonth_day(int year,int month)//获取当年当月的天数
{
    int day = MonthArray[month];
    if (month == 2 && ((year % 4 == 0) && (year % 100 != 0 || year % 400 == 0)))
	    ++day;
    return day;
}
int main() {
    int a, b,count = 0;
    while (cin >> a >> b) { // 注意 while 处理多个 case 

    //假设第一个日期为大日期,如果假设错了,再通过下面判断进行交换
        int max_year = a/10000;//解析出年月日
        int max_month = (a%10000)/ 100;
        int max_day = a%100;

        int min_year = b/10000;
        int min_month = (b%10000)/ 100;
        int min_day = b%100;
        if(max_year < min_year||
            (max_year == min_year && max_month < min_month)||
            (max_year == min_year && max_month == min_month&& max_day < min_day))//判断日期大小
        {
            swap(max_year,min_year);
            swap(max_month,min_month);
            swap(max_day,min_day);
        }

        //让小日期走完与大日期相差的年月,并将每个月的天数加到总数中,以避免大量判断
        while(!(max_year==min_year&&max_month==min_month))
        {
            count += GetMonth_day(min_year,min_month);
            ++min_month;
            if(min_month>12)
            {
                ++min_year;
                min_month = 1;
            }
        }
        cout<< count + max_day - min_day+1 <<endl;//这里两个天数之减其实可能是负的,但是之前多加了小日期当月的天数,不会影响结果


       
    }
}
// 64 位输出请用 printf("%lld")