C语言编程实现输入某两天的年月日,输出这两天的相距多少天。
时间: 2024-05-15 19:15:12 浏览: 137
```c
#include <stdio.h>
int is_leap_year(int year) { // 判断是否为闰年
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int day_of_year(int year, int month, int day) { // 计算这一天是这一年的第几天
int days[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int i, sum = 0;
for (i = 1; i < month; i++) {
sum += days[i];
}
sum += day;
if (is_leap_year(year) && month > 2) { // 如果是闰年且在2月之后,则再加1天
sum++;
}
return sum;
}
int main() {
int year1, month1, day1, year2, month2, day2;
int days1, days2, diff;
printf("请输入第一个日期(年 月 日,用空格分隔):");
scanf("%d %d %d", &year1, &month1, &day1);
printf("请输入第二个日期(年 月 日,用空格分隔):");
scanf("%d %d %d", &year2, &month2, &day2);
days1 = day_of_year(year1, month1, day1); // 计算第一个日期是当年的第几天
days2 = day_of_year(year2, month2, day2); // 计算第二个日期是当年的第几天
if (year1 == year2) { // 如果是同一年
diff = days2 - days1;
} else {
diff = 365 - days1; // 先计算第一个日期距离当年结束还有多少天
if (is_leap_year(year1)) { // 如果是闰年,则多加1天
diff++;
}
int i;
for (i = year1 + 1; i < year2; i++) { // 计算中间年份的天数
diff += is_leap_year(i) ? 366 : 365;
}
diff += days2; // 加上第二个日期是当年的第几天
if (is_leap_year(year2) && month2 > 2) { // 如果第二个日期是闰年的2月之后,则多加1天
diff++;
}
}
printf("两个日期相距 %d 天\n", diff);
return 0;
}
```
阅读全文