牛客网——日期差值

题目描述

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

输入描述:

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

输出描述:

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

链接:https://www.nowcoder.com/questionTerminal/ccb7383c76fc48d2bbc27a2a6319631c
来源:牛客网

#include<stdio.h>
#define leap(x) (x%400==0||(x%4==0&&x%100!=0)?1:0)
#define Abs(x) ((x)>0?(x):-(x))
typedef struct date
{
    int y, m, d;
}Date;
const int yd[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 days(Date x)
{
    int sum=0, i;
    int y=x.y, m=x.m, d=x.d;
    for(i=0; i<y; i++)
    {
        if(leap(i))
        {
            sum+=366;
        }
        else
        {
            sum+=365;
        }
    }
    for(i=1; i<m; i++)
    {
        sum+=yd[leap(y)][i];
    }
    sum+=d;
    return sum;
}
int main(void)
{
    Date a, b;
    while(scanf("%4d%2d%2d", &a.y, &a.m, &a.d)!=EOF)
    {
        scanf("%4d%2d%2d", &b.y, &b.m, &b.d);
        printf("%d\n", Abs(days(a)-days(b))+1);
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/JAYPARK/p/10355040.html
今日推荐