// 1. 2. 编写一个程序,定义一个结构体表示日期,包括年、月和日。编写一个函数,接受两个日期作为参数,并计算并返回它们之间的天数差。 #include #include #include typedef struct date_s { int year; int month; int day; } DATE; int sumDays(int year, int month, int day) { int sum = day; switch (month) { case 12: sum += 30; case 11: sum += 31; case 10: sum += 30; case 9: sum += 31; case 8: sum += 31; case 7: sum += 30; case 6: sum += 31; case 5: sum += 30; case 4: sum += 31; case 3: sum += 28; case 2: sum += 31; } if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) sum += 1; return sum; } int yearOFdays(int year1, int year2) { int sum = (abs(year1 - year2) - 1) * 365; int runYearCount = 0; // 闰年计数器 int minYear = (year1 < year2) ? year1 : year2; // 找出较小的年份 int maxYear = (year1 > year2) ? year1 : year2; // 找出较大的年份 for (; minYear <= maxYear; minYear++) if ((minYear % 4 == 0 && minYear % 100 != 0) || minYear % 400 == 0) runYearCount++; sum += runYearCount; // 每多一个闰年多一天 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; }