题目描述
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天
输入描述:
有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD
输出描述:
每组数据输出一行,即日期差值
示例1
输入
20110412
20110422
输出
11
1 #include<stdio.h>
2 #include<iostream>
3 using namespace std;
4 #define ISyear(x) x%100!=0&&x%4==0 || x%400==0 ? 1:0
5 //定义宏判断是否是闰年,方便计算每月天数
6 int dayOfMonth[
13][
2]=
7 {
8 0,
0,
9 31,
31,
10 28,
29,
11 31,
31,
12 30,
30,
13 31,
31,
14 30,
30,
15 31,
31,
16 31,
31,
17 30,
30,
18 31,
31,
19 30,
30,
20 31,
31,
21 };
22 struct Date
23 {
24 int day;
25 int month;
26 int year;
27 void nextday()
28 {
29 day++
;
30 if(day>
dayOfMonth[month][ISyear(year)])
31 {
32 day=
1;
33 month++
;
34 if(month>
12)
35 {
36 month=
1;
37 year++
;
38 }
39 }
40 }
41 };
42 int buf[
5001][
13][
32];
//保存预处理的天数
43 int Abs(
int x)
44 {
45 x<
0 ? -
x:x;
46 }
47 int main()
48 {
49 Date temp;
50 int cnt=
0;
51 temp.day=
1;
52 temp.month=
1;
53 temp.year=
0;
54 while(temp.year!=
5001)
55 {
56 buf[temp.year][temp.month][temp.day]=
cnt;
57 temp.nextday();
58 cnt++
;
59 }
60 int d1,m1,y1;
61 int d2,m2,y2;
62 while(scanf(
"%4d%2d%2d",&y1,&m1,&d1)!=
EOF)
63 {
64 scanf(
"%4d%2d%2d",&y2,&m2,&
d2);
65 cout<<buf[y2][m2][d2]-buf[y1][m1][d1]+
1<<
endl;
66 }
67 }
View Code
转载于:https://www.cnblogs.com/qing123tian/p/11153675.html