计算日期间隔

计算日期间隔(20分)

题目内容:

用结构体实现计算日期的差值:

(1)编写一函数,计算两个日期之间的时间差,并将其值返回。日期以年、月、日表示。“时间差”以天数表示。注意考虑日期之间的闰年。函数的输入参数为日期1和日期2,为了计算简便,假设用户输入的日期1总是早于日期2。函数的返回值为时间差,单位为天数。

(2)编写一程序,在主函数中输入两个日期,调用上述函数计算两个日期之间的时间差,并将结果输出。

输入格式:

分两行分别输入日期1和日期2,为了计算简便,要求用户输入的日期1总是早于日期2。输入日期包括年月日、年月日之间用空格分隔。

输出格式:

两个日期之间相隔的天数。

输入样例:

1998 7 5

2020 2 10

输出样例:

7890

#include <iostream>
#include <algorithm>
using namespace std;
int day_diff(int year, int month, int day);
int main(int argc, char const *argv[])
{
    int y2, m2, d2;
    int y1, m1, d1;
    cin>>y1>>m1>>d1;
    cin>>y2>>m2>>d2;
    cout<<day_diff(y2, m2, d2) - day_diff(y1, m1, d1)<<endl;
    return 0;
}
int day_diff(int year, int month, int day)
{
    int y, m, d;
    //判断日期是否大于3月并且记录到3月的间隔月数
    m = (month + 9) % 12;
    //如果月份为1月或2月,则不包括当前年
    y = year - m/10;
    //y/4 - y/100 + y/400是加所有闰年多出的那一天
    //30 * m + (5 + 6 * m)/10用于计算到当前月到3月1日间的天数,306=365-31-28(1月和2月的总天数)
    d = 365*y + y/4 - y/100 + y/400 + 30 * m + (5 + 6 * m)/10 + (day - 1);

    return d;
}

下面的分析还可以。

https://www.cnblogs.com/cndccm/p/11974754.html

发布了67 篇原创文章 · 获赞 22 · 访问量 7150

猜你喜欢

转载自blog.csdn.net/weixin_43906799/article/details/104885531
今日推荐