题解 | #日期类#

日期类

https://www.nowcoder.com/practice/130aa2d7d1f5436b920229dca253893b

#include<iostream>
#include <string>
#include<map>
using namespace std;

int isLearYear(int year) {
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
        return 1;
    }
    return 0;
}

int main() {
    int n, y, m, d;
    cin >> n;
    map<int, int> maps = { {1, 31}, {2, 28}, {3, 31}, {4, 30}, {5, 31}, {6, 30}, {7, 31}, {8, 31}, {9, 30}, {10, 31}, {11, 30}, {12, 31} };
    for (int i = 0; i < n; i++) {
        cin >> y >> m >> d;
        //对天数加一
        d += 1;
        //对月份处理
        if (isLearYear(y) == 1 && m == 2) {
            if (d > (maps[m] + 1)) {//这里要注意二者操作的先后顺序,否则d会减错值
			    d -= (maps[m] + 1);
                m += 1;
            }
        } else {
            if (d > maps[m]) {//这里要注意二者操作的先后顺序,否则d会减错值
                d -= maps[m];
                m += 1;
            }
        }
        //对年份处理
        if (m > 12) {
            y += 1;
            m -= 12;
        }
        printf("%d-%02d-%02d\n", y, m, d);
    }

    return 0;
}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

牛客41406533...:回答他在课上学,一辈子待在学校的老教授用三十年前的祖传PPT一字一句的讲解,使用谭浩强红皮书作为教材在devc++里面敲出a+++++a的瞬间爆出114514个编译错误来学这样才显得专业
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务