题解 | 日期累加

#include<iostream>
using namespace std;
bool isLeapYear(int year){ 
    if(year%4==0&&year%100!=0||year%400==0){
        return true;
    }return false;
}
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}
};
int main(){
    int m,year,month,day,n;
    cin>>m;
    while(m--){
        cin>>year>>month>>day>>n;
        n+=day;
        day=0;
        while(n>=daytab[isLeapYear(year)][month]){
            n-=daytab[isLeapYear(year)][month];
            day=0;
            if(month==12){
                month=1;year++;
            }else{
                month++;
            }
        }day+=n;
        if(day==0){
            month--;
            day=daytab[isLeapYear(year)][month];
        }
        printf("%04d-%02d-%02d\n",year,month,day);
    }
    return 0;
}

简单的日期写法

全部评论

相关推荐

迈瑞 智能产线的上位机软件和算法 总包31w, 最低32w 硕士
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-06 18:17
上海华为技术有限公司 后端 23×16 本科985
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
01-01 22:30
已编辑
携程 前端开发 25 x 15 硕士985
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务