C++设计一个程序用于向后推算指定日期经过n天后的具体日期。 编程要求 根据提示,在右侧编辑器补充代码,输入为长度为8的字符串str和一个正整数n,str前四位表示年份,后四位表示月和日。当推算出的年份大于4位数时,输出“out of limit!”,否则输出8位的具体日期。 测试说明 平台会对你编写的代码进行测试: 测试输入: 00250709 60000 预期输出: 01891017
时间: 2023-06-14 08:03:40 浏览: 102
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[9];
int n, year, month, day;
scanf("%s %d", str, &n);
year = atoi(str);
month = atoi(str + 4) / 100;
day = atoi(str + 6);
while (n > 0) {
int leap = ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0);
int days = 31;
if (month == 4 || month == 6 || month == 9 || month == 11) {
days = 30;
} else if (month == 2) {
days = 28 + leap;
}
if (n >= days - day + 1) {
n -= days - day + 1;
day = 1;
if (++month > 12) {
month = 1;
if (++year > 9999) {
printf("out of limit!\n");
return 0;
}
}
} else {
day += n;
n = 0;
}
}
printf("%04d%02d%02d\n", year, month, day);
return 0;
}
```
注:本题假设闰年为每4年一次的情况(即2000年,2004年,2008年等均为闰年)。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)