题目描述
设计一个程序能计算一个日期加上若干天后是什么日期。
输入
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出
输出m行,每行按yyyy-mm-dd的个数输出。
样例输入
1
2008 2 3 100
样例输出
2008-05-13
代码
#include<cstdio>
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}};
bool isleap(int year){
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main(){
int n; //用例数n
int y, m, d, t; //日期y年,m月, d天, t加的天数
scanf("%d", &n);
while(n--){
scanf("%d %d %d %d", &y, &m, &d, &t);
if(d + t <= month[m][isleap(y)]){
d += t;
}else{
while(d + t > month[m][isleap(y)]){
t = t - (month[m][isleap(y)] - d + 1);
m++;
d = 1;
if(m == 13){
y++;
m = 1;
}
}
d += t;
}
printf("%04d-%02d-%02d\n", y, m, d);
}
return 0;
}
总结:日期的天加入本月剩余天数+1就进入下个月一号了。