题解 | 日期累加

日期累加

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

#include <iostream>
using namespace std;

int main() {
    int m;
    while (scanf("%d",&m)!=EOF) { // 注意 while 处理多个 case
        int y,mon,d,days;
        for(int i=0;i<m;i++){
            scanf("%d %d %d %d",&y,&mon,&d,&days);
            bool flag=false;//flag=0表示不是闰年
            for(int j=1;j<=days;j++){
                d++;
                if(y%4==0&&y%100!=0)flag=true;
                else if(y%400==0)flag=true;
                else flag=false;
                if(mon==2){
                    if(flag==true&&d>29){
                            mon=3;d=1;
                    }
                    if(flag==false&&d>28){
                            mon=3;d=1;                        
                    }
                }
                if(d>31 &&(mon==1||mon==3||mon==5||mon==7||mon==8||mon==10||mon==12)){
                    d=1;
                    mon++;
                }
                if(d>30&&(mon==4||mon==6||mon==9||mon==11)){
                    d=1;
                    mon++;
                }
                if(mon>12){
                    mon=1;
                    y++;
                }
            }
            printf("%04d-%02d-%02d\n",y,mon,d);
        }

    }
}
// 64 位输出请用 printf("%lld")

全部评论
点赞 回复 分享
发布于 02-19 22:25 浙江省

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务