#include<cstdio>
#include<string>
using namespace std;
void convertDate(char arr[9], int& year, int& month, int& day) {//先转换日期
year = (arr[0] - '0') * 1000 + (arr[1] - '0') * 100 + (arr[2] - '0') * 10 +
(arr[3] - '0');
month = (arr[4] - '0') * 10 + (arr[5] - '0');
day = (arr[6] - '0') * 10 + (arr[7] - '0');
}
int daytab[13] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
bool isLeapYear(int year) { //判断是否为闰年
if ((year % 4 == 0 && year & 100 != 0) || year & 400 == 0) {
daytab[1] = 29;
return true;
} else {
daytab[1] = 28;
return false;
}
}
int dayNumber(int year, int month, int day) { //判断此日期据元旦有几天
int ret = day;
isLeapYear(year);
while (--month) {
ret += daytab[month - 1];
}
return ret;
}
int main() {
char a[9], b[9];
while (scanf("%s%s", a, b) != EOF) {
int year1 = 0, month1 = 0, day1 = 0, year2 = 0, month2 = 0, day2 = 0;
int ret = 0;
convertDate(a, year1, month1, day1);
convertDate(b, year2, month2, day2);
if (year1 > year2) { //分开算,年份不同和年份相同思路不同
ret += dayNumber(year1, month1, day1) - dayNumber(year2, month2, day2);
while (year1 != year2) {
ret += isLeapYear(year1 - 1) ? 366 : 365;
year1--;
}
} else if (year1 < year2) {
ret += dayNumber(year2, month2, day2) - dayNumber(year1, month1, day1);
while (year1 != year2) {
ret += isLeapYear(year2 - 1) ? 366 : 365;
year2--;
}
} else {
ret = abs(dayNumber(year1, month1, day1) - dayNumber(year2, month2, day2));
}
printf("%d\n", ret + 1);
}
return 0;
}
渣渣手法,与各位道友互相学习互相交流

京公网安备 11010502036488号