题解 | #日期差值#

日期差值

https://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c

#include<cstdio>
int main() {
    int date1, date2;
    int mDay[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    while (scanf("%d%d", &date1, &date2) != EOF) {
        //确定起始日期和终止日期
        if (date1 > date2) {
            int temp = date2;
            date2 = date1;
            date1 = temp;
        }
        //根据date求年、月、日
        int y1 = date1 / 10000, m1 = (date1 % 10000) / 100, d1 = date1 % 100;
        int y2 = date2 / 10000, m2 = (date2 % 10000) / 100, d2 = date2 % 100;
        //计算日期差值
        int totalDay = 1; //相差天数
        int d = d1, m = m1, y = y1;
        while (y < y2 || m < m2 || d < d2) {
            //判断是否为闰年
            if (y % 400 == 0 || y % 100 != 0 && y % 4 == 0) {
                mDay[2] = 29;
            } else {
                mDay[2] = 28;
            }
            ++d;
            if (d > mDay[m]) {
                d = 1;
                ++m;
                if (m > 12) {
                    m = 1;
                    ++y;
                }
            }
            ++totalDay;
        }
        printf("%d\n", totalDay);
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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