题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
示例1
输入
20110412 20110422
输出
11
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int isLeap(int y){
if(y%400==0||(y%4==0&&y%100!=0))
return 1;
return 0;
}
//提取数字
int myNum(char *s,int l,int r){
int i,k=0;
char temp[6];
for(i=l;i<=r;i++){
temp[k++]=s[i];
}
temp[k]='\0';
return atoi(temp);
}
//将年统一转化为公元前1年(有个基准)
int sum(int y,int m,int d){
int i,day=0;
for(i=1;i<y;i++){
if(isLeap(y)==1)
day+=366;
else
day+=365;
}
month[2]=isLeap(y)?29:28;
for(i=1;i<m;i++){
day+=month[i];
}
day+=d;
return day;
}
int main(){
char s1[9],s2[9];
while(scanf("%s %s",s1,s2)!=EOF){
int y1,y2,m1,m2,d1,d2;
y1=myNum(s1,0,3);
m1=myNum(s1,4,5);
d1=myNum(s1,6,7);
y2=myNum(s2,0,3);
m2=myNum(s2,4,5);
d2=myNum(s2,6,7);
printf("%d\n",sum(y2,m2,d2)-sum(y1,m1,d1)+1); 注意有个加1,之前还没有看到
}
return 0;
}