解答:
#include <cstdio>
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}
};
bool isLeap(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
int input_num;
scanf("%d", &input_num);
int y, m, d, gap;
while(input_num--) {
scanf("%d %d %d %d", &y, &m, &d, &gap);
while(gap--) {
d++;
if(d == month[m][isLeap(y)] + 1) { //如果当年是闰年,第二下标为2,否则为1
m++;
d = 1;
}
if(m == 13) {
y++;
m = 1;
}
}
printf("%d-%02d-%02d\n", y, m, d);
}
return 0;
}
坑:
- 没有多组输入,代码接收多组输入的话会提示“输出超限”。