题解 | #日期差值#

日期差值

http://www.nowcoder.com/practice/ccb7383c76fc48d2bbc27a2a6319631c

让小的日期自增直到和大的相同记录中间自增的天数即可。

#include<iostream>
using namespace std;

bool ismax(int year1,int month1,int day1,int year2,int month2,int day2)
{
    if(year1>year2)
        return true;
    else if(year1==year2)
    {
        if(month1>month2)
            return true;
        else if(month1==month2)
        {
            if(day1>day2)
                return true;
        }
    }
    return false;
}
void Swap(int&x,int&y)
{
    int tmp = x;
    x = y;
    y = tmp;
}
int Getmonthday(int year,int month)
{
    static int mday[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
    int day = mday[month];
    if(month==2 && (year%4==0&&year%100!=0||year%400==0))
        day++;
    return day;
}
int main()
{
    int year1,month1,day1;
    int year2,month2,day2;
    scanf("%4d%2d%2d",&year1,&month1,&day1);
    scanf("%4d%2d%2d",&year2,&month2,&day2);
    int count = 1;
    //找出较大的那个日期
    if(!ismax(year1,month1,day1,year2,month2,day2))
    {
        Swap(year1,year2);
        Swap(month1,month2);
        Swap(day1,day2);
    }
    //让小的日期自增直到相等。
    while(year1!=year2 || month1!=month2 || day1!=day2)
    {
        ++count;
        ++day2;
        if(day2>Getmonthday(year2,month2))//获取每个月的天数
        {
            day2 = 1;
            month2++;
            if(month2>12)
            {
                month2=1;
                year2++;
            }
        }
    }
    cout<<count<<endl;
    return 0;
}
全部评论

相关推荐

我:“加班需要有加班工资。”&nbsp;hr:“为什么?”&nbsp;哈哈哈哈哈哈哈离大谱
juntenor:你确实太理想化了,对社会不了解呀。这个和HR没有关系,这是国内特色,不然怎么还会有外包就这种逆天的存在呢。
点赞 评论 收藏
分享
06-25 16:53
门头沟学院 Java
人力小鱼姐:简历可以直接用飞书模板 模拟面试可以试试ai,现在好多都还是免费阶段 像Sugar云面、多面鹅都不错,主要看面试后自己能不能复盘出有效信息
为了找工作你花了哪些钱?
点赞 评论 收藏
分享
有担当的灰太狼又在摸...:零帧起手查看图片
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
05-28 12:15
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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