題目連結 http://zerojudge.tw/ShowProblem?problemid=a263 。 這題需要注意閏年的判斷。筆者用一個陣列 daysPerMon[ 13 ] 來紀錄每個月有幾天。 要算出西元 0 年 1 月 1 日 到 西元 y 年 m 月 d 日總過經過多少天數。 算法是先算出從西元 0 年到今年 y 經過多少天,再算出到這個月 m 經過多少天,加上今天的 d 。 於是可以得到 daysCnt(y1, m1, d1) 與 daysCnt(y2, m2, d2) ,再將這兩個值相減會是要的答案。 程式碼: # include <cstdio> # include <iostream> using namespace std ; int daysPerMon[ 13 ] = { 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 }; bool isLeapYear ( int year) { return (year % 4 == 0 && year % 100 || year % 400 == 0 ); } int daysCnt ( int year, int month, int day) { int sumOfDays = 0 ; for ( int i = 1 ; i < year; i++) { bool isLeap = isLeapYear(i); if (isLeap) { sumOfDays += 366 ; } else { sumOfDays += 365 ; } } for ( int i = 1 ; i < month; i++) { sumOfDays += daysPerMon[i]; } if (isLeapYear(year) && month > 2 ) sumOfDays++; sumOfDays += day; //cout << "Total Day...