编写C语言程序,给定两合法日期,保证在日历上存在该两个该日期,计算两日期相隔多少天,输入包括两行,每行包含三个整数,分别表示年月日,保证该日期合法且在1999年以后,且第一行的日期一定不晚于第二行的日期
时间: 2023-12-05 18:03:50 浏览: 78
以下是计算两日期相隔天数的C语言程序:
```c
#include <stdio.h>
int isLeapYear(int year) { // 判断是否为闰年
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
int daysOfMonth(int year, int month) { // 获取某年某月的天数
int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && isLeapYear(year)) {
return 29;
} else {
return days[month];
}
}
int daysOfYear(int year, int month, int day) { // 计算某年某月某日是该年的第几天
int days = 0;
for (int i = 1; i < month; i++) {
days += daysOfMonth(year, i);
}
days += day;
return days;
}
int main() {
int year1, month1, day1;
int year2, month2, day2;
scanf("%d%d%d", &year1, &month1, &day1);
scanf("%d%d%d", &year2, &month2, &day2);
int days = 0;
for (int i = year1; i < year2; i++) { // 计算整年的天数
days += isLeapYear(i) ? 366 : 365;
}
days += daysOfYear(year2, month2, day2) - daysOfYear(year1, month1, day1); // 加上不足一年的天数
printf("%d\n", days);
return 0;
}
```
程序的思路是先定义两个辅助函数,分别用于判断是否为闰年和获取某年某月的天数。接着利用这两个函数计算出两个日期是该年的第几天,然后用第二个日期的年份减去第一个日期的年份得到整年的天数,最后再加上不足一年的天数即可。
需要注意的是,由于第一行的日期一定不晚于第二行的日期,所以不需要判断两个日期的先后顺序。另外,由于题目中规定日期在1999年以后,所以不需要考虑公元前的情况。
阅读全文