日期累加
题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入描述:
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述:
输出m行,每行按yyyy-mm-dd的个数输出。
示例1
输入
1
2008 2 3 100
输出
2008-05-13
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int daytab[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}
};
bool IsLeapYear(int year) {
return(year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}
int NumberOfYear(int year) {
if (IsLeapYear(year)) {
return 366;
}
else {
return 365;
}
}
int main() {
int year, month, day,n,setnumber;
cin >> setnumber;
while ((setnumber--)>=0) {
cin >> year >> month >> day >> n;
int row = IsLeapYear(year);
for (int i = 0; i < month; ++i) {
n += daytab[row][i];
}
n += day;
while (n > NumberOfYear(year)) {
n -= NumberOfYear(year);
year++;
}
month = 0;
row = IsLeapYear(year);
while (n > daytab[row][month]) {
n -= daytab[row][month];
month++;
}
day = n;
printf("%04d-%02d-%02d\n", year, month, day);
}
return 0;
}
注意可能加的天数会导致年数变化,要确定年。
题中明确告知要输入的数据组数,应该设定变量来存储组数。