描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入描述:
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述:
输出m行,每行按yyyy-mm-dd的个数输出。
示例1
输入:
1
2008 2 3 100
输出:
2008-05-13
#include<stdio.h>
using namespace std;
void nextDay(int &year, int &month, int &day) {
int dayOfMonth[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
// 判断是否是闰年
int isLeap; // 1表示闰年
isLeap = (year % 400 == 0) || (year % 4==0 && year%100!=0);
if (isLeap) { //闰年,二月29天
dayOfMonth[2] = 29;
}
day++;
// 下一天已经是下一月
if (day > dayOfMonth[month]) {
month++;
day = 1;
}
// 月份超过12
if (month > 12) {
month = 1;
year++;
}
// printf("Next day is: year=%d month=%d day=%d",year, month, day);
}
int main() {
int m;
scanf("%d", &m);
for (int i=0; i<m; i++) {
int year, month, day, totol;
int next = 0; // 表示当前累加的天数,初始值为0
scanf("%d %d %d %d", &year, &month, &day, &totol);
while (totol != next) {
nextDay(year, month, day);
++next;
}
printf("%04d-%02d-%02d\n",year ,month, day);
}
return 0;
}