c语言【问题描述】 结构 struct Date { int year; int month; int day; }; 利用该结构编写一个程序用来计算两个日期之间相差的天数。 【输入形式】 输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。 【输出形式】 第二个日期与第一个日期间相差的天数。
时间: 2024-02-15 16:03:04 浏览: 148
C语言实现计算两个日期之间的天数的算法
5星 · 资源好评率100%
以下是符合题目要求的C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
struct Date {
int year;
int month;
int day;
};
// 计算某年某月某日是该年的第几天
int dayOfYear(struct Date d) {
int days[] = {0,31,59,90,120,151,181,212,243,273,304,334};
int day = days[d.month - 1] + d.day;
if((d.month > 2) && ((d.year % 4 == 0 && d.year % 100 != 0) || (d.year % 400 == 0))) {
day += 1;
}
return day;
}
// 计算两个日期之间相差的天数
int diffDays(struct Date d1, struct Date d2) {
int days1 = dayOfYear(d1) - 1;
int days2 = dayOfYear(d2) - 1;
int diffYears = d2.year - d1.year;
int diffDays = (diffYears * 365) + ((d2.year - 1) / 4 - (d1.year - 1) / 4);
return diffDays + (days2 - days1);
}
int main() {
struct Date d1, d2;
printf("请输入第一个日期(年 月 日):");
scanf("%d %d %d", &d1.year, &d1.month, &d1.day);
printf("请输入第二个日期(年 月 日):");
scanf("%d %d %d", &d2.year, &d2.month, &d2.day);
int days = diffDays(d1, d2);
printf("第二个日期与第一个日期间相差的天数是:%d\n", days);
system("pause");
return 0;
}
```
该程序先定义了一个日期的结构体 `Date`,然后定义了两个函数,其中 `dayOfYear` 函数用来计算某年某月某日是该年的第几天,`diffDays` 函数用来计算两个日期之间相差的天数。最后在 `main` 函数中读入两个日期,调用 `diffDays` 函数计算相差的天数并输出。
阅读全文