题解 | #打印日期#

打印日期

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;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务