题解 | #打印日期#

打印日期

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

#include <stdio.h>
#define bool int
#define TRUE 1
#define FALSE 0

int mDays[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};

int main() {
    int m, n; //年份和第几天
    while (scanf("%d %d", &m, &n) != EOF) { // 注意 while 处理多个 case
        int month,day;
        bool isLeapYear = FALSE;
        //判断是不是闰年
        if(m % 400 == 0 || m % 100 != 0 && m % 4 == 0){
            isLeapYear = TRUE;
            mDays[2] = 29;
        }else{
            mDays[2] = 28;
        }
        int days = 0;
        for(int i = 0; i < 13; i++){
            days += mDays[i];
            //如果刚好是某个月的最后一天
            if(days == n){
                month = i;
                day = mDays[i];
                break;
            }
            //超过了天数
            if(days > n){
                month = i;
                day = n - (days - mDays[i]);
                break;
            }
        }
	  //最后要格式化处理一下
        if(day < 10 && month < 10){
            printf("%d-0%d-0%d\n", m, month, day);    
        }else if(day < 10){
            printf("%d-%d-0%d\n", m, month, day);
        }else if(month < 10){
            printf("%d-0%d-%d\n", m, month, day);
        }else{
            printf("%d-%d-%d\n", m, month, day);
        }
        
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-04 15:20
牛客61197583...:看到室友一个个没怎么学通过关系直接入职或者接到面试,真的很难受。八股不知道背了多少遍,hot100也刷了1.5遍了,但就是没有面试的机会,唉
点赞 评论 收藏
分享
头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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