本文用于个人复习回顾与记忆
思路:1:先将两个日期的间的天数差求出,在将开始年多加的天数减去,结束年没有加上的天数加上。
技巧:1:把每个月的天数存到一个一维数组中;m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}
后面处理时只需要判断是否为闰年,若是m【2】=29;
2:依次判断年,月是否相同,用for循环计算天数
#include <iostream>
using namespace std;
int main()
{
int sy,sm,sd;//起点时间
int ey,em,ed;//结束时间
int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//平年每月的天数
int sum=0;//两个日期间的天数
cin>>sy>>sm>>sd;
cin>>ey>>em>>ed;
if(sy==ey)//开始年与结束年相同
{
if((sy%4==0&&sy%100!=0)||sy%400==0)//判断是否为闰年,是二月份为29天
m[2]=29;
for(int i=sm;i<em;i++)//计算两月间的天数
{
if(sm==i)//减去开始年已经过去的天数
sum=m[i]-sd;
else
sum+=m[i];
}
sum+=ed;//加上结束年的天数
if(sm==em)//若开始年的月和结束年的月相同,天数相减
sum-=sd;
cout<<sum<<endl;
}
else//若开始年和结束年不相同
{
for(int i=sy;i<ey;i++)//将开始年与结束年的所有天数加起来
{
if((i%4==0&&i%100!=0)||i%400==0)
sum+=366;
else
sum+=365;
}
if((sy%4==0&&sy%100!=0)||sy%400==0)// 判断是否为闰年,是二月份为29天
m[2]=29;
for(int i=1;i<sm;i++)//减去开始年已经过去多加的天数,月数
sum-=m[i];
sum-=sd;
if((ey%4==0&&ey%100!=0)||ey%400==0)//判断是否为闰年,是二月份为29天
m[2]=29;
else
m[2]=28;
for(int i=1;i<em;i++)//加上结束年没有加上的天数、月数
sum+=m[i];
sum+=ed;
cout<<sum<<endl;
}
return 0;
}