题解 | #日期累加#

日期累加

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

#include <stdio.h>
#include <stdbool.h>

    int daytab[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}};//初始化天数数据

    bool isLunar(int year){
        return(year%100!=0&&year%4==0)||(year%400==0);
    }
    int allnumber(int year){
        if(isLunar(year)){
            return 366;
        }else{
            return 365;
        }
    }

int main() {
    int year,month,day,num;
    int casenum;
    scanf("%d",&casenum);
    while (casenum--) {
    scanf("%d %d %d %d",&year,&month,&day,&num);
    int row=isLunar(year);
    //确定年
    for(int j=0;j<month;++j){
        num+=daytab[row][j];
    }
    num+=day;
    while(num>allnumber(year)){
        num-=allnumber(year);
        year++;


    }
    row=isLunar(year);
    //确定月
    month=0;
    while(num>daytab[row][month]){
        num-=daytab[row][month];
        month++;
    }

    //确定日
    day=num;
    printf("%04d-%02d-%02d\n",year,month,day);
}
return 0;
    }

全部评论

相关推荐

北斗导航Compass低仿版:没必要写这么多东西,还是尽量浓缩成一页,自我评价,git和cursor Trae这些都可以去掉。实习经历的描述最好根据star法则改一下,别这么直白
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务