codeup-日期差值

1928: 日期差值

Time Limit: 1 Sec  Memory Limit: 32 MB
Submit: 10033  Solved: 2267
[Submit][Status][Web Board][Creator:Imported]

Description

有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。

Input

有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD

Output

每组数据输出一行,即日期差值

Sample Input

20130101
20130105

Sample Output

5
 1 #include <stdio.h>
 2 
 3 //平年28天、闰年29天 
 4 int month[13][2] = {  
 5     {0, 0}, {31, 31}, {28, 29}, {31, 31}, {30, 30}, {31, 31}, 
 6     {30, 30}, {31, 31}, {31, 31}, {30, 30}, {31, 31}, {30, 30}, {31, 31}
 7 };
 8 //判断是否闰年,如1900则不是闰年
 9 bool isLeap(int year){  
10     return (year%4==0 && year%100!=0 || year%400==0);
11 }
12 
13 int main(){
14     int time1, y1, m1, d1;
15     int time2, y2, m2, d2;
16     while(scanf("%d%d", &time1, &time2) != EOF){
17         if(time1 > time2){
18             int temp = time1;
19             time1 = time2;
20             time2 = temp;
21         }
22         y1 = time1 / 10000;
23         m1 = time1 % 10000 /100;
24         d1 = time1 % 100;
25         y2 = time2 / 10000;
26         m2 = time2 % 10000 /100;
27         d2 = time2 % 100;
28         int ans = 1;
29         while((y1<y2) || (m1<m2) || (d1<d2)){
30             d1++;//注意是先加哦!!! 
31             if(d1 == month[m1][isLeap(y1)] + 1){
32                 m1++;
33                 d1 = 1;
34             }//isLeap(y1)为false的时候,及相当于0 
35             if(m1 == 13){
36                 y1++;
37                 m1 = 1;
38             }
39             ans++;
40         }
41         printf("%d
", ans);
42     }
43     return 0;
44 }
原文地址:https://www.cnblogs.com/heyour/p/12149857.html