思路是令小的日期天数不断++,一直追赶到与大的日期相等。其中要注意润年!
#include <iostream>
using namespace std;
bool is_leapyear(int _year) {
if ((_year % 4 == 0 && _year % 100 != 0) || _year % 400 == 0)
return 1;
else
return 0;
}
int main() {
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}};
int year1, month1, day1, time1;
int year2, month2, day2, time2;
while (cin >> time1 >> time2) {
if (time1 < time2) {
int a = time1;
time1 = time2;
time2 = a;
}
int ant = 1;
year1 = time1 / 10000;
month1 = time1 % 10000 / 100;
day1 = time1 % 10000 % 100;
year2 = time2 / 10000;
month2 = time2 % 10000 / 100;
day2 = time2 % 10000 % 100;
while (year1 > year2 || month1 > month2 || day1 > day2) {
day2++;
ant++;
if (day2 == month[month2][is_leapyear(year2)]+1) {
day2 = 1;
month2++;
}
if (month2 == 13) {
year2++;
month2 = 1;
}
}
cout << ant;
}
}