【问题描述】 结构 struct Date { int year; int month; int day; }; 利用该结构编写一个程序用来计算两个日期之间相差的天数。 【输入形式】 输入两个日期,每个日期分占一行,在一行中日期的年、月、日是三个整数,以空格分隔。并假设第二个日期大于或等于第一个日期。 【输出形式】 第二个日期与第一个日期间相差的天数。 【输入样例】 2003 3 25 2003 3 29。C语言
时间: 2023-12-10 13:41:15 浏览: 300
以下是C语言的代码实现:
```c
#include<stdio.h>
struct Date {
int year;
int month;
int day;
};
// 计算某一年某一月的天数
int getDaysOfMonth(int year, int month) {
int days;
switch(month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
days = 29;
} else {
days = 28;
}
break;
default:
days = 0;
break;
}
return days;
}
// 计算某一年某一月某一日是该年的第几天
int getDaysOfYear(struct Date date) {
int days = 0;
for(int i = 1; i < date.month; i++) {
days += getDaysOfMonth(date.year, i);
}
days += date.day;
return days;
}
// 计算两个日期之间相差的天数
int getDaysBetween(struct Date date1, struct Date date2) {
int days = 0;
for(int i = date1.year; i < date2.year; i++) {
if((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
days += 366;
} else {
days += 365;
}
}
days += getDaysOfYear(date2) - getDaysOfYear(date1);
return days;
}
int main() {
struct Date date1, date2;
scanf("%d%d%d", &date1.year, &date1.month, &date1.day);
scanf("%d%d%d", &date2.year, &date2.month, &date2.day);
int days = getDaysBetween(date1, date2);
printf("%d\n", days);
return 0;
}
```
思路说明:
1. 定义结构体 `Date` 表示日期,包含年、月、日三个成员。
2. 定义函数 `getDaysOfMonth`,根据输入的年份和月份,返回该月份的天数。
3. 定义函数 `getDaysOfYear`,根据输入的日期,返回该日期在当年中是第几天。
4. 定义函数 `getDaysBetween`,根据输入的两个日期,计算它们之间相差的天数。
5. 在 `main` 函数中,读入两个日期,调用 `getDaysBetween` 函数计算它们之间相差的天数,并输出结果。
阅读全文