#include #include #include typedef struct date_s { int year; int month; int day; } DATE; int daysOfMonth(int year, int month) { switch (month) { case 2: if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 29; else return 28; case 4: case 6: case 9: case 11: return 30; default: return 31; } } int sumDays(int year, int month, int day) { int sum = day; for (int i = 1; i < month; i++) { sum += daysOfMonth(year, i); } return sum; } int yearOFdays(int year1, int year2) { int sum = 0; int minYear = (year1 < year2) ? year1 : year2; int maxYear = (year1 > year2) ? year1 : year2; for (int i = minYear; i < maxYear; i++) { if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) sum += 366; else sum += 365; } return sum; } int main() { DATE day1, day2; printf("请输入第一个日期,输入格式为 年,月,日 "); scanf("%d,%d,%d", &day1.year, &day1.month, &day1.day); printf("请输入第二个日期,输入格式为 年,月,日 "); scanf("%d,%d,%d", &day2.year, &day2.month, &day2.day); int sumdays1 = sumDays(day1.year, day1.month, day1.day); int sumdays2 = sumDays(day2.year, day2.month, day2.day); int yearMoreDays = yearOFdays(day1.year, day2.year); int days = abs(sumdays1 - sumdays2) + yearMoreDays; printf("两个日期的天数差为: %d", days); return 0; }