25.計算兩個日期之間的天數
阿新 • • 發佈:2021-08-01
25:計算兩個日期之間的天數
描述
給定兩個日期,計算相差的天數。比如2010-1-1和2010-1-3相差2天。
輸入
共兩行:
第一行包含三個整數startYear,startMonth,startDay,分別是起始年、月、日。
第二行包含三個整數endYear,endMonth,endDay,分別是結束年、月、日。
相鄰兩個整數之間用單個空格隔開。
年份範圍在1~3000。保證日期正確且結束日期不早於起始日期。
輸出
輸出一個整數,即是兩個日期相差的天數。
樣例輸入
2008 1 1
2009 1 1
樣例輸出
366
程式碼
#include<bits/stdc++.h> using namespace std; bool isR(int year); int main() { int sYear,sMonth,sDay; int eYear,eMonth,eDay; cin >> sYear >> sMonth >> sDay; cin >> eYear >> eMonth >> eDay; int a[]={31,28,31,30,31,30,31,31,30,31,30,31}; int ans = 0; if(sYear==eYear) { if(isR(sYear)) a[1]=29; if(sMonth==eMonth) ans=eDay-sDay; else{ ans+=(a[sMonth-1]-sDay); for(int i=sMonth;i<eMonth-1;i++) ans+=a[i]; ans+=eDay; } cout << ans << endl; } else{ if(isR(sYear)) a[1]=29; ans+=(a[sMonth-1]-sDay); for(int i=sMonth;i<12;i++) ans+=a[i]; for(int j=sYear+1;j<eYear;j++) { if(isR(j)) ans+=366; else ans+=365; } a[1]=28; //再加月份 if(isR(eYear)) a[1]=29; for(int k=0;k<eMonth-1;k++) ans+=a[k]; ans+=eDay; cout << ans << endl; } return 0; } bool isR(int year) { if(year%4==0 && year%100!=0 || year%400==0) return true; return false; }