编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。
输入输出格式
输入描述:
输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。
输出描述:
输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。
输入输出样例
输入样例#:
2
1999 10 20
2001 1 31
输出样例#:
1999-10-21
2001-02-01
#include <iostream>
using namespace std;
struct node {int y;int m;int d;
};
void nextDay(int y, int m, int d) {int y1 = y, m1 = m, d1 = d;switch (m) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:if (d1 >= 31) {m1++;d1 = (d1 + 1) % 31;}else {d1 = d + 1;}break;case 2:if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {if (d1 >= 29) {m1++;d1 = (d1 + 1) % 29;}elsed1 = d + 1;}else {if (d1 >= 28) {m1++;d1 = (d1 + 1) % 28;}elsed1 = d + 1;}break;case 4:case 6:case 9:case 11:if (d1 >= 30) {m1++;d1 = (d1 + 1) % 30;}else {d1 = d + 1;}break;}if (m == 12 && d == 31) {y1 = y + 1;m1 = 1;d1 = 1;}printf("%d-%02d-%02d\n", y1, m1, d1);
}
int main() {node day[100];int n;cin >> n;for (int i = 0; i < n; i++) {cin >> day[i].y >> day[i].m >> day[i].d;}for (int i = 0; i < n; i++) {nextDay(day[i].y, day[i].m, day[i].d);}
}