codeup|问题 D: 日期类

题目描述
编写一个日期类,要求按xxxx-xx-xx 的格式输出日期,实现加一天的操作。

输入
输入第一行表示测试用例的个数m,接下来m行每行有3个用空格隔开的整数,分别表示年月日。测试数据不会有闰年。

输出
输出m行。按xxxx-xx-xx的格式输出,表示输入日期的后一天的日期。

样例输入 Copy
2
1999 10 20
2001 1 31
样例输出 Copy
1999-10-21
2001-02-01
提示
注意个位数日期前面要有0。

代码

#include<stdio.h>

bool isLeap(int year) {
    return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}

int main() {
    int y, m, d, n;
    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}};
    scanf("%d", &n);
    while (n--) {
        scanf("%d %d %d", &y, &m, &d);
        if (d + 1 > month[m][isLeap(y)]) {
            d = 1;
            m++;
            if (m == 13) {
                m = 1;
                y++;
            }
            printf("%04d-%02d-%02d\n", y, m, d);
        } else {
            printf("%04d-%02d-%02d\n", y, m, d + 1);
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43340821/article/details/113837141