使用devc++编写一个c语言程序,要求从键盘输入两个日期,计算这两个日期间隔的天数,例如:输入:2019,3,5 2022,1,2 输出:2019年3月5日到2022年1月2日之间间隔1050
时间: 2023-06-03 14:05:55 浏览: 137
天。
好的,这是一个计算日期间隔的题目。以下是C语言程序示例:
```c
#include <stdio.h>
int main() {
int year1, month1, day1, year2, month2, day2;
int i, leap = 0, sum1 = 0, sum2 = 0, days;
printf("请输入起始日期(年、月、日,用空格隔开):");
scanf("%d%d%d", &year1, &month1, &day1);
printf("请输入结束日期(年、月、日,用空格隔开):");
scanf("%d%d%d", &year2, &month2, &day2);
for (i = 1; i < month1; i++) {
switch (i) {
case 4:
case 6:
case 9:
case 11:
sum1 += 30;
break;
case 2:
if ((year1 % 400 == 0) || (year1 % 4 == 0 && year1 % 100 != 0)) {
leap = 1;
} else {
leap = 0;
}
sum1 += 28 + leap;
break;
default:
sum1 += 31;
break;
}
}
sum1 += day1;
for (i = 1; i < month2; i++) {
switch (i) {
case 4:
case 6:
case 9:
case 11:
sum2 += 30;
break;
case 2:
if ((year2 % 400 == 0) || (year2 % 4 == 0 && year2 % 100 != 0)) {
leap = 1;
} else {
leap = 0;
}
sum2 += 28 + leap;
break;
default:
sum2 += 31;
break;
}
}
sum2 += day2;
if (year1 == year2) {
days = sum2 - sum1;
} else {
days = 365 - sum1 + sum2;
for (i = year1 + 1; i < year2; i++) {
if ((i % 400 == 0) || (i % 4 == 0 && i % 100 != 0)) {
leap = 1;
} else {
leap = 0;
}
days += 365 + leap;
}
}
printf("%d年%d月%d日到%d年%d月%d日之间间隔%d天。\n", year1, month1, day1, year2, month2, day2, days);
return 0;
}
```
在程序中,我们首先从键盘输入两个日期的年、月、日,然后用两个循环分别计算这两个日期距离该年的1月1日的天数(sum1和sum2),并累加各个月份的天数(根据不同的月份判断天数),还需要判断闰年的影响。最后,如果两个日期是同一年,直接相减就是间隔的天数;否则需要分段计算,累加中间年份的天数。
运行程序,输入开始日期和结束日期,即可得到日期间隔的天数。注意,该程序没有处理输入错误的情况(例如月份和日期超出范围、日期倒置等),需要自行添加判断。
阅读全文