题解 | #日期累加#

日期累加

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

#include <stdio.h>

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

void Date(int year,int month,int day,int after_day){
    int date[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
    int next_year,next_month,next_day,isrun,d;
    d = after_day + day;
    next_month = month;
    next_year = year;
    while(d>0){
        isrun = Is_run(next_year);
        d -= date[isrun][next_month++];
        if(next_month>12){
            next_month=1;
            next_year ++; 
        }
    }
    next_month--;
    if(next_month < 1){
        next_month = 12;
        next_year--;
    }
    d += date[isrun][next_month];
    next_day = d;
    printf("%d-%02d-%02d\n",next_year,next_month,next_day);
}

int main() {
    int times;
    int year,month,day,after_day;
    scanf("%d",×);
    for(int i = 0;i<times;i++){
        scanf("%d %d %d %d",&year,&month,&day,&after_day);
        Date(year, month, day, after_day);
    }
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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