作业比赛编号 : 100000578 - 《算法笔记》3.4小节——入门模拟->日期处理(Codeup)

作业比赛编号 : 100000578 - 《算法笔记》3.4小节——入门模拟->日期处理A(Codeup)

题目描述

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。

输入

有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

输出

每组数据输出一行,即日期差值

样例输入

20130101
20130105

样例输出

5

注意: 相邻两天的差值为2; 我一直错误这个,没仔细读题

#include<stdio.h>
bool isLeap(int year)
{
    if(year%400==0||(year%100!=0&&year%4==0))
        return true;
    return false;
}
int month[13][2]={
    {0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}
};
int main()
{
    int time[2],t;
    int y[2],m[2],d[2];
    int days;
    while(scanf("%d%d",&time[0],&time[1])!=EOF)
    {
        days=1;     //每次运行都要将天数初始化为1;相邻两天的差值为2,所以要初始化为1
        if(time[0]>time[1])
    {
        t=time[0];
        time[0]=time[1];
        time[1]=t;
    }
    for(int i=0;i<2;i++)
    {
        d[i]=time[i]%100;
        m[i]=time[i]/100%100;
        y[i]=time[i]/10000;
    }
    while((y[0]<y[1])||(m[0]<m[1])||(d[0]<d[1]))
    {
        d[0]++;
        if(d[0]==month[m[0]][isLeap(y[0])]+1){   //当天数大于本月的天数时,月m[0]进1,天d[0]初始为1;
            m[0]++;
            d[0]=1;
        }
        if(m[0]==13)
        {
            y[0]++;
            m[0]=1;
        }
        days++;
    }
    printf("%d\n",days);}
    return 0;
}
/**************************************************************
    Problem: 1928
    User: ********
    Language: C++
    Result: 正确
    Time:22 ms
    Memory:1192 kb
****************************************************************/

如果感觉不错,欢迎收藏点赞

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值