c语言:结构 struct Date { int year; int month; int day; }; 利用该结构编写一个程序用来计算两个日期之间相差的天数。 【输入形式】 输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。 【输出形式】 第二个日期与第一个日期间相差的天数。
时间: 2023-12-03 19:41:55 浏览: 284
以下是 C 语言的代码实现:
```c
#include <stdio.h>
struct Date {
int year;
int month;
int day;
};
// 计算某年某月的天数
int daysOfMonth(int year, int month) {
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)) {
return 29;
}
return days[month - 1];
}
// 计算日期距离 1970 年 1 月 1 日的天数
int daysSince1970(struct Date date) {
int days = 0;
for (int y = 1970; y < date.year; y++) {
days += 365;
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0) {
days++;
}
}
for (int m = 1; m < date.month; m++) {
days += daysOfMonth(date.year, m);
}
days += date.day - 1;
return days;
}
int main() {
struct Date date1, date2;
int days1, days2;
printf("请输入第一个日期(年 月 日):\n");
scanf("%d %d %d", &date1.year, &date1.month, &date1.day);
printf("请输入第二个日期(年 月 日):\n");
scanf("%d %d %d", &date2.year, &date2.month, &date2.day);
days1 = daysSince1970(date1);
days2 = daysSince1970(date2);
printf("两个日期之间相差 %d 天。\n", days2 - days1);
return 0;
}
```
程序首先定义了一个 `Date` 结构体来表示日期,然后实现了两个辅助函数:`daysOfMonth` 用来计算某年某月的天数,`daysSince1970` 用来计算某个日期距离 1970 年 1 月 1 日的天数。最后在 `main` 函数中读入两个日期,分别计算它们距离 1970 年 1 月 1 日的天数,然后相减即可得到相差的天数。
阅读全文