有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
每组数据输出一行,即日期差值
20130101
20130105
5
思路:求日期的题,一种比较简单直接的方法就是将其中最小的那个日期的天数一直加1,直到两个日期相等为止。题中先定义一个二维数组,表示平年和闰年,平年用0表示,闰年用1表示。由于输入时不一定一开始输入的数y1比y2小,所以得进行判断,y2小的话则进行交换,用swap()函数比较方便,头文件是algorithm,后期我会介绍STL(C++标准模板库)。该题具体代码如下:
#include
#include
#include
using namespace std;
int month[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{1,31,29,31,30,31,30,31,31,30,31,30,31}};
int main()
{
int y1,y2,m1,m2,d1,d2,sum,temp,flag;
int t1,t2;
while(scanf("%d%d",&t1,&t2)!=EOF){
sum=1;
if(t1>t2)
swap(t1,t2);
y1=t1/10000;m1=t1%10000/100;d1=t1%100;
y2=t2/10000;m2=t2%10000/100;d2=t2%100;
while(!(y1==y2&&m1==m2&&d1==d2)){
flag=0;
if(y1%4==0&&y1%100!=0||y1%400==0)
flag=1;
d1++;
if(d1==(month[flag][m1]+1)){
d1=1;
m1++;
}
if(m1==13){
m1=1;
y1++;
}
sum++;
}
cout <<sum<<endl;
}
return 0;
}