输入描述:
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。
输出描述:
输出m行,每行按yyyy-mm-dd的个数输出。
示例1
输入:
1
2008 2 3 100
输出:
2008-05-13
#include <stdio.h>
int main() {
int m;
scanf("%d", &m);
while (m--) {
int year, month, day, daysToAdd;
scanf("%d %d %d %d", &year, &month, &day, &daysToAdd);
while (daysToAdd > 0) {
int daysinMonth;
if (month == 2) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
daysinMonth = 29; //闰年
} else {
daysinMonth = 28;
}
} else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 ||
month == 10 || month == 12) {
daysinMonth = 31;
} else daysinMonth = 30;
int daysleftinMonth = daysinMonth - day + 1; // 计算当前月剩余的天数
if (daysToAdd >= daysleftinMonth) {
daysToAdd -= daysleftinMonth;
day = 1;
month++;
if (month > 12) {
month = 1;
year++;
}
} else {
day += daysToAdd;
daysToAdd = 0;
}
}
printf("%04d-%02d-%02d\n", year, month, day);
}
return 0;
}