**日期差值**
描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
示例1
输入:
20110412
20110422
输出:
11
思路:分别求与00000000的天数差,俩差值继续做差即可求出结果
#include<iostream>
#include<cstdlib>
using namespace std;
//求12个月份的累加和,1月和12月只需要计算天数即可
int mon[12]={0,31,59,90,120,151,181,212,243,273,304,334};
int Add(int y,int m,int d)
{
int num=y*365;
//求包含的闰年数
for(int i=0;i<=y;i++)
{
if((i%4==0&&i%100!=0)||i%400==0) num++;
}
//可替换为int num=y*365+y/4-y/100+y/400;
//求当前年的天数
num+=mon[m-1];
//月超过2并且是闰年就加一天
if(m>2&&((y%4==0&&y%100!=0)||y%400==0)) num++;
//加上当前月的天数
num+=d;
return num;
}
int main()
{
int y1,m1,d1,y2,m2,d2;
scanf("%4d%2d%2d",&y1,&m1,&d1);//一定要格式输入,否则输入不对
int n1=Add(y1,m1,d1);
scanf("%4d%2d%2d",&y2,&m2,&d2);
int n2=Add(y2,m2,d2);
cout<<abs(n1-n2)+1<<endl;//abs求绝对值的函数,cstdlib头文件
return 0;
}