日期累加问题

日期累加

https://www.nowcoder.com/practice/eebb2983b7bf40408a1360efb33f9e5d?tpId=40&tqId=31013&rp=1&ru=/ta/kaoyan&qru=/ta/kaoyan&difficulty=&judgeStatus=&tags=/question-ranking

//
// Created by chenlong666 on 2022/2/7.
//
#include <iostream>
#include <cstdio>
using  namespace  std;
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 IsLeapYear(int year)
{
    return (year%4==0&&year%100!=0)||(year%400==0);//判断闰年
}
int Numberofyear(int year)
{
    if (IsLeapYear(year))
    {
        return  366;
    } else
    {
        return  365;
    }
}

int main()
{
    int m,year,month,day,number;
    cin>>m;
    while(m--)
    {
        while (cin>>year>>month>>day>>number)
        {
            //转化为天数
            int row= IsLeapYear(year);
            for (int i = 0; i < month; ++i) {
                number+=daytab[row][i];
            }
            number+=day;
            //确定年
            while (number> Numberofyear(year))
            {
                number-= Numberofyear(year);
                year++;
            }
            //确定月
            month=0;
            row= IsLeapYear(year);
            while (number>daytab[row][month])
            {
                number-=daytab[row][month];
                month++;

            }
            day=number;
            printf("%04d-%02d-%02d",year,month,day);
        }
    }
}

全部评论

相关推荐

A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

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