给定两个年月日,计算出这两个年月日之间的天数(不包括前者,但包括后者) 输入 在第一行输入前一个年月日,第二行输入第二个年月日。年份范围在1~3000。保证日期正确且结束日期不早于起始日期。 输出 在下一行输出这个年月日之间的天数。请用C语言写出代码
时间: 2024-02-01 12:12:59 浏览: 93
计算两个日期之间的天数
以下是C语言代码实现:
```c
#include <stdio.h>
int isLeapYear(int year) {
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
}
int daysOfMonth(int year, int month) {
int days;
switch (month) {
case 2:
days = isLeapYear(year) ? 29 : 28;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
default:
days = 31;
break;
}
return days;
}
int daysBetween(int year1, int month1, int day1, int year2, int month2, int day2) {
int days = 0;
while (year1 < year2 || (year1 == year2 && month1 < month2) || (year1 == year2 && month1 == month2 && day1 < day2)) {
days += daysOfMonth(year1, month1) - day1;
if (++month1 > 12) {
month1 = 1;
year1++;
}
day1 = 0;
}
return days;
}
int main() {
int year1, month1, day1, year2, month2, day2;
scanf("%d %d %d", &year1, &month1, &day1);
scanf("%d %d %d", &year2, &month2, &day2);
printf("%d\n", daysBetween(year1, month1, day1 + 1, year2, month2, day2));
return 0;
}
```
代码思路:
1. 定义一个判断闰年的函数 `isLeapYear()`,如果是闰年则返回1,否则返回0。
2. 定义一个计算某个月份的天数的函数 `daysOfMonth()`,根据输入的年份和月份计算出该月份的天数。
3. 定义一个计算两个日期之间天数的函数 `daysBetween()`,通过循环计算两个日期之间的天数。
4. 在 `main()` 函数中读入两个日期,然后调用 `daysBetween()` 函数计算它们之间的天数,最后输出结果。
注意事项:
1. 总天数应该不包括第一个日期,但包括第二个日期,因此在计算时将第一个日期的天数加1。
2. 在计算两个日期之间的天数时,需要循环遍历每个月的天数,因此需要考虑月份和年份的变化。
阅读全文