C++ 编写程序,给定一个日期,计算该日期之后n天的日期。例如, (2023-05-19) + 2 = 2023-05-21。 输入 输入包含多组测试数据。首先输入一个正整数n,表示测试数据的组数1<=n<=100。 此后每行输入四个正整数,表示给定日期的年月日以及延后的天数。 输出 每组给定日期延后特定天数的日期。
时间: 2023-12-03 18:47:10 浏览: 169
以下是C++的代码实现:
```c++
#include<iostream>
#include<cstdio>
using namespace std;
int month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; // 每个月份对应的天数
bool isLeapYear(int year) // 判断是否是闰年
{
if((year%4==0 && year%100!=0) || year%400==0)
return true;
else
return false;
}
int main()
{
int n;
cin>>n;
while(n--)
{
int year,month1,day,days;
scanf("%d%d%d%d",&year,&month1,&day,&days);
day += days; // 先加上延后的天数
if(isLeapYear(year)) // 如果是闰年,二月份天数加一
month[2] = 29;
else
month[2] = 28;
while(day > month[month1]) // 天数大于月份对应天数,需要进位
{
day -= month[month1];
month1++;
if(month1 == 13) // 月份大于12,需要进位到下一年
{
year++;
month1 = 1;
if(isLeapYear(year)) // 判断是否是闰年,二月份天数加一
month[2] = 29;
else
month[2] = 28;
}
}
printf("%04d-%02d-%02d\n",year,month1,day); // 输出结果
}
return 0;
}
```
代码思路如下:
1. 首先输入测试数据的组数n,表示共有n组数据需要计算。
2. 依次输入每个日期的年、月、日以及延后的天数。
3. 判断是否是闰年,如果是闰年则二月份天数加一。
4. 先将延后的天数加上原来的天数,得到总天数。
5. 如果总天数大于该月份对应的天数,需要进位到下一个月份。
6. 如果月份大于12,需要进位到下一年。
7. 输出计算所得日期。
注意:C++中输出日期需要使用 `%04d-%02d-%02d` 的格式,其中 `%04d` 表示输出4位数字,不足4位时前面补0,`%02d` 表示输出2位数字,不足2位时前面补0。
阅读全文