日期累加
描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出
输出m行,每行按yyyy-mm-dd的个数输出。
输入样例 1
1
2008 2 3 100
输出样例 1
2008-05-13
#include <bits/stdc++.h>
using namespace std;
int month[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},
{31,31},{31,31},{30,30},{31,31},{30,30},{31,31} }; //平年和闰年的每月天数
int isleap(int year)
{
if((year%4==0&&year%100!=0)||(year%400==0))
{
return 1; //判断是否闰年
}
else
return 0;
}
int main()
{
int n,i;
cin>>n;
while(n--)
{
int y,m,d,dd,k=0;
cin>>y>>m>>d>>dd;
for(i=m-1;i>0;i--)
{
k=k+month[i][isleap(y)];
}
k=k+d+dd;
int M=1,D=1;
while(k>1)
{
D++;
k--;
if(D>month[M][isleap(y)])
{
M++;
D=1;
}
if(M==13)
{
y++;
M=1;
}
}
printf("%.4d-%.2d-%.2d\n",y,M,D);
}
return 0;
}