25:计算两个日期之间的天数
描述
给定两个日期,计算相差的天数。比如2010-1-1和2010-1-3相差2天。
输入
共两行:
第一行包含三个整数startYear,startMonth,startDay,分别是起始年、月、日。
第二行包含三个整数endYear,endMonth,endDay,分别是结束年、月、日。
相邻两个整数之间用单个空格隔开。
年份范围在1~3000。保证日期正确且结束日期不早于起始日期。
输出
输出一个整数,即是两个日期相差的天数。
样例输入
2008 1 1
2009 1 1
样例输出
366
代码
#include<bits/stdc++.h>
using namespace std;
bool isR(int year);
int main()
{
int sYear,sMonth,sDay;
int eYear,eMonth,eDay;
cin >> sYear >> sMonth >> sDay;
cin >> eYear >> eMonth >> eDay;
int a[]={31,28,31,30,31,30,31,31,30,31,30,31};
int ans = 0;
if(sYear==eYear)
{
if(isR(sYear))
a[1]=29;
if(sMonth==eMonth)
ans=eDay-sDay;
else{
ans+=(a[sMonth-1]-sDay);
for(int i=sMonth;i<eMonth-1;i++)
ans+=a[i];
ans+=eDay;
}
cout << ans << endl;
}
else{
if(isR(sYear))
a[1]=29;
ans+=(a[sMonth-1]-sDay);
for(int i=sMonth;i<12;i++)
ans+=a[i];
for(int j=sYear+1;j<eYear;j++)
{
if(isR(j))
ans+=366;
else
ans+=365;
}
a[1]=28;
//再加月份
if(isR(eYear))
a[1]=29;
for(int k=0;k<eMonth-1;k++)
ans+=a[k];
ans+=eDay;
cout << ans << endl;
}
return 0;
}
bool isR(int year)
{
if(year%4==0 && year%100!=0 || year%400==0)
return true;
return false;
}
原文链接: https://www.cnblogs.com/jifenxiaobawang/p/15086774.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/212707
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!