16. 从控制台输入 x1 年 y1 月 z1 日,再输入现在的日期 x2 年 y2 月 z2 日,最后以 x3 年 y3 月 z3 日的格式输出两个日期的时间差,用c语言写
时间: 2024-09-15 15:12:25 浏览: 44
在C语言中,计算两个日期之间的差异通常需要手动处理月份和年份的天数调整,因为不是每个月都有30天或31天。以下是一个简单的示例,假设用户输入的是公历日期,且不考虑闰年的情况:
```c
#include <stdio.h>
int days_in_month(int month, int year) {
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
return 31;
case 4: case 6: case 9: case 11:
return 30;
default: // February
if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) // Leap year check
return 29;
else
return 28;
}
}
void calculate_date_difference(int x1, int y1, int z1, int x2, int y2, int z2) {
int start_day = (z1 - 1); // 减去1是因为月份开始是第1天
int end_day = (z2 - 1);
int start_year_days = start_day + // January and February
sum(days_in_month(1, x1), days_in_month(2, x1));
int end_year_days = end_day; // We assume December
int time_diff = end_year_days - start_year_days;
printf("The difference is %d years, %d months, and %d days.\n",
x2 - x1, // Years
(y2 - y1) * 12 + (time_diff / 365), // Assuming no leap years in between
time_diff % 365);
}
int main() {
int x1, y1, z1, x2, y2, z2;
printf("Enter date 1 (x1 year y1 month z1 day): ");
scanf("%d %d %d", &x1, &y1, &z1);
printf("Enter current date (x2 year y2 month z2 day): ");
scanf("%d %d %d", &x2, &y2, &z2);
calculate_date_difference(x1, y1, z1, x2, y2, z2);
return 0;
}
```
请注意,这个示例非常基础,并未涵盖所有边缘情况和闰年的复杂性。实际应用中可能需要更精确的日历处理库。
阅读全文