c语言:13.编写程序实现功能: 输入两个日期,输出他们之间相差多少天。 样例输入:2024 10 1 2024 10 7 样例输出:6 样例输入:2020 1 1 2020 12 31 样例输出:365
时间: 2024-10-05 12:02:51 浏览: 8
在C语言中,你可以使用`struct`来表示日期,并利用一些基本的算术操作来计算两个日期之间的天数差。这里是一个简单的示例程序,它假设月份有30天作为平均值:
```c
#include <stdio.h>
// 定义日期结构体
struct Date {
int year;
int month;
int day;
};
// 计算两个日期之间的天数差
int days_diff(struct Date date1, struct Date date2) {
// 年份差加上闰年调整
int years_diff = date2.year - date1.year;
// 如果第一年的最后一天小于第二年的第一天,说明第一个年份多了一天
if (date1.year == date2.year && date1.day > date2.day) {
years_diff--;
}
// 月份差乘以平均每月天数,再考虑每个月的实际天数差异
int months_diff = date2.month - date1.month;
int extra_days = abs(months_diff);
for (int i = 1; i <= extra_days; i++) {
if (date1.month == 2 && date1.year % 4 == 0 && (date1.year % 100 != 0 || date1.year % 400 == 0)) { // 考虑闰年二月
if (i == 29) continue;
} else if (date1.month >= 8) { // 八月及以后的月份有31天
if (i == 31) continue;
}
// 否则按30天计算
months_diff -= 1;
}
// 加上剩余的天数
return years_diff * 365 + months_diff * 30 + date2.day - date1.day;
}
int main() {
struct Date date1, date2;
printf("请输入第一个日期(格式: yyyy mm dd): ");
scanf("%d %d %d", &date1.year, &date1.month, &date1.day);
printf("请输入第二个日期: ");
scanf("%d %d %d", &date2.year, &date2.month, &date2.day);
int diff = days_diff(date1, date2);
printf("两个日期之间相差 %d 天。\n", diff);
return 0;
}
```
注意这个程序仅作为基础示例,实际应用中需要处理更复杂的情况,如闰年、不同月份的具体天数等。