用c++写一个一个程序用于向后推算指定日期经过n天后的具体日期
时间: 2023-05-30 17:03:31 浏览: 289
```c
#include <stdio.h>
int main() {
int year, month, day, n;
printf("请输入日期(yyyy mm dd)和天数n:");
scanf("%d%d%d%d", &year, &month, &day, &n);
// 判断输入日期是否合法
int is_valid = 1;
if (year < 1 || month < 1 || month > 12 || day < 1) {
is_valid = 0;
} else {
// 判断是否为闰年
int is_leap_year = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
// 计算每个月的天数
int days_in_month[13] = {0, 31, is_leap_year ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (day > days_in_month[month]) {
is_valid = 0;
} else {
// 向后推算n天
while (n--) {
day++;
if (day > days_in_month[month]) {
day = 1;
month++;
if (month > 12) {
month = 1;
year++;
is_leap_year = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
days_in_month[2] = is_leap_year ? 29 : 28;
}
}
}
}
}
// 输出结果
if (is_valid) {
printf("经过%d天后的日期为:%04d-%02d-%02d\n", n, year, month, day);
} else {
printf("输入日期不合法!\n");
}
return 0;
}
```
阅读全文