题解 | #打印日期#

打印日期

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

全部评论

相关推荐

10-22 12:03
山东大学 Java
程序员小白条:26届一般都得有实习,项目可以随便写的,如果不是开源社区的项目,随便包装,技术栈也是一样,所以本质应该找学历厂,多投投央国企和银行,技术要求稍微低一点的,或者国企控股那种,纯互联网一般都得要干活
应届生简历当中,HR最关...
点赞 评论 收藏
分享
huo12138:校友,传奇耐面王
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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