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