1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| #include <stdio.h>
int isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return 1; } return 0; }
int getDaysInMonth(int month, int year) { int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if (month == 2 && isLeapYear(year)) { return 29; } return days[month - 1]; }
int dateToDays(int year, int month, int day) { int days = 0; for (int i = 1; i < year; i++) { days += isLeapYear(i) ? 366 : 365; } for (int i = 1; i < month; i++) { days += getDaysInMonth(i, year); } days += day; return days; }
int daysBetweenDates(int year1, int month1, int day1, int year2, int month2, int day2) { int days1 = dateToDays(year1, month1, day1); int days2 = dateToDays(year2, month2, day2); return days2 - days1; } int main() { int year1, month1, day1; int year2, month2, day2; printf("请输入第一个日期 (yyyy mm dd):"); scanf("%d %d %d", &year1, &month1, &day1); printf("请输入第二个日期 (yyyy mm dd):"); scanf("%d %d %d", &year2, &month2, &day2); int diff = daysBetweenDates(year1, month1, day1, year2, month2, day2); printf("两个日期之间的天数差为:%d天\n", diff); return 0; }
|