//土尔逊Torson 编写于2023/2/9 #define _CRT_SECURE_NO_WARNINGS #include <cstdio> #include <iostream> int year, year2, month, month2, day, day2; //定义第一个日期数据,和第二个日期数据 int year_1, year_2, year_3, year_4;//每次除以10再求10的余来取得在每一位上的数字 single dight int month_1, month_2; int day_1, day_2; int number1, number2; bool IsLeapYear(int year) { //计算得是否是闰年 return (year % 400 == 0) || (year % 100 != 0 && year % 4 == 0); } int CountDay(int month, int day, int month_day[]) {//计算一年中有多少天 int n = 0; for (int i = 0; i < month; ++i) { n += month_day[i]; } n = n + day; return n; } void DayFormat(int number) {//把接受的数据转换成我们方便处理的数据 day_2 = number % 10; day_1 = (number / 10) % 10; day2 = day_1 * 10 + day_2; month_2 = (number / 100) % 10; month_1 = (number / 1000) % 10; month2 = month_1 * 10 + month_2; year_4 = (number / 10000) % 10; year_3 = (number / 100000) % 10; year_2 = (number / 1000000) % 10; year_1 = (number / 10000000) % 10; year2 = year_1 * 1000 + year_2 * 100 + year_3 * 10 + year_4; } int NumOfYear(int year) {//如果是闰年则返回闰年天数,否则返回正常年的天数 if (IsLeapYear(year)) { return 366; } else { return 365; } } int main() { int count_1 = 0, count_2 = 0; int month_day[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; while (scanf("%d%d", &number1, &number2) != EOF) { DayFormat(number1);//整理第一个组数据 //printf("year2 = %04d\n", year2); year = year2, month = month2, day = day2; DayFormat(number2);//整理第二个组数据 //printf("year = %04d-%02d-%02d, year2 = %04d-%02d-%02d\n", year, month, day, year2, month2, day2); if (IsLeapYear(year)) { month_day[2] = 29; } else { month_day[2] = 28; } count_1 = CountDay(month, day, month_day);//计数第一个数据一年中的天数 if (IsLeapYear(year2)) { month_day[2] = 29; } else { month_day[2] = 28; } count_2 = CountDay(month2, day2, month_day);//计数第二个数据一年中的天数 //如果两个年份不相等有差值,则从小的年份往大的方向加以年为单位的天数 int DifYear = 0; int tmpyear = 0; if (year2 != year) { DifYear = year2 - year; //printf("year = %04d, year2 = %04d, Difyear = %d\n", year, year2, DifYear); tmpyear = year; if (DifYear > 0) { for (tmpyear; tmpyear < year2; ++tmpyear) { count_2 += NumOfYear(tmpyear); } } else { if (DifYear < 0) { tmpyear = year2; for (tmpyear; tmpyear < year; ++tmpyear) { count_1 += NumOfYear(tmpyear); } } } } //接下来显示差值 int dif = count_1 - count_2; if (dif == 1 || dif == -1) { printf("%d\n", 2); } else { if (dif >= 0) { printf("%d\n", dif + 1); } else { printf("%d\n", - dif + 1); } } //printf("%d\n", day_1); //printf("%04d-%02d-%02d\n", year, month, day); } return EXIT_SUCCESS; } // 64 位输出请用 printf("%lld")