题目描述
编写一个日期类,要求按 xxxx-xx-xx 的格式输出日期,实现加一天的操作。
样例
// 输入样例
2
1999 10 20
2001 1 31
// 输出样例
1999-10-21
2001-02-01
思路:分类讨论
针对不同月份的边界情况,分别判断即可。
时间复杂度
$O(1)$ : 针对单一样例
C++ 代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
int y, m, d;
cin >> y >> m >> d;
++d;
// 判断日期是否越界
if ((m == 4 || m == 6 || m == 9 || m == 11) && d == 31)
d = 1, ++m;
else if (m == 2 && d == 29)
d = 1, ++m;
else if ((m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12) && d == 32)
d = 1, ++m;
// 判断月份是否越界
if (m > 12)
m = 1, ++y;
printf("%d-%2d-%2d", y, m, d);
}
return 0;
}