25:計算兩個日期之間的天數

自為風月馬前卒發表於2017-03-12

25:計算兩個日期之間的天數

總時間限制: 
1000ms
 
記憶體限制: 
65536kB
描述

給定兩個日期,計算相差的天數。比如2010-1-1和2010-1-3相差2天。

輸入
共兩行:
第一行包含三個整數startYear,startMonth,startDay,分別是起始年、月、日。
第二行包含三個整數endYear,endMonth,endDay,分別是結束年、月、日。
相鄰兩個整數之間用單個空格隔開。

年份範圍在1~3000。保證日期正確且結束日期不早於起始日期。
輸出
輸出一個整數,即是兩個日期相差的天數。
樣例輸入
2008 1 1
2009 1 1
樣例輸出
366
提示
閏年被定義為能被4整除的年份,但是能被100整除而不能被400整除的年是例外,它們不是閏年。閏年的2月份有29天。
 1 #include<iostream>
 2 using namespace std;
 3 int bgyear,bgmonth,bgday;
 4 int enyear,enmonth,enday;
 5 int month[21]={0,31,28,31,30,31,30,31,31,30,31,30,31};//非閏年
 6 int rmonth[21]={0,31,29,31,30,31,30,31,31,30,31,30,31};//閏年 
 7 int flag=1;
 8 int tot=0;
 9 int main()
10 {
11     cin>>bgyear>>bgmonth>>bgday;
12     cin>>enyear>>enmonth>>enday;
13     for(int i=bgyear;i<=enyear+1;i++)//尋找年數上的差異 
14     {
15         if((i%4==0&&i%100!=0)||(i%400==0))
16         {
17             for(int j=1;j<=12;j++)
18             {
19                 if(i==bgyear&&j<bgmonth)
20                 continue;//尋找開始月份
21                 for(int k=1;k<=rmonth[j];k++)
22                 {
23                     if(i==enyear&&j==enmonth&&k==enday)
24                     {
25                         cout<<tot;
26                         return 0;
27                     }
28                     if(k<bgday&&flag==1)
29                     continue;
30                     else
31                     {
32                         flag=0;
33                         tot++;
34                     }
35                     
36                 }
37                  
38             }
39         }//閏年 
40         else
41         {
42         
43             for(int j=1;j<=12;j++)
44             {
45                 if(i==bgyear&&j<bgmonth)
46                 continue;//尋找開始月份
47                 for(int k=1;k<=month[j];k++)
48                 {
49                     if(i==enyear&&j==enmonth&&k==enday)
50                     {
51                         cout<<tot;
52                         return 0;
53                     }
54                     if(k<bgday&&flag==1)
55                     continue;
56                     else
57                     {
58                         flag=0;
59                         tot++;
60                     }
61                     
62                 }
63                  
64             }
65         }//非閏年 
66     }
67     cout<<tot;
68     return 0;
69 }

 

相關文章