题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。
输入
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出
每组数据输出一行,即日期差值
样例输入
20130101
20130105
样例输出
5
AC程序
#include<stdio.h>
bool isleap(int x) {
return(x % 4 == 0 && x % 100 != 0 || x % 400 == 0);
}
int main()
{
int date1,date2,y1,y2,m1,m2,d1,d2;
int num[13][2] = { {0,0}, {31,31}, { 28,29 },{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30}, {31,31},{30,30},{31,31} };
while (scanf("%d%d", &date1, &date2)!=EOF) {
if (date1 > date2) {
int temp = date1;
date1 = date2;
date2 = temp;
}
y1 = date1 / 10000;
y2 = date2 / 10000;
m1 = (date1 / 100) - y1 * 100;
m2 = (date2 / 100) - y2 * 100;
d1 = date1 % 100;
d2 = date2 % 100;
int count = 0;
while (!(y1==y2&&m1==m2&&d1==d2)) {
d1++;
//满当月天数
if (d1 == num[m1][isleap(y1)] + 1) {
d1 = 1;
m1 += 1;
}
//月份满12个月
if (m1 == 13) {
m1 = 1;
y1++;
}
count++;
}
printf("%d\n", count+1);
}
return 0;
}