這是一道經典的程式設計練習題。相信網上有很多解答,下面我就這個問題分享一些使編碼簡潔的經驗。
有些數值是固定的這部分數值就不要寫程式實時計算了。給定日期求日數時,不少人喜歡用迴圈做累加。但這是沒有必要的,可以提前做一個數組:
編碼時應儘量避免使用迴圈計算。為了求出距離公元一年一月一號的日數使用迴圈是不必要的。可以用算式算出:
邏輯分支會增加複雜度,影響程式碼質量,應最小限度使用。可以使用算式代替部分邏輯判斷:
以下是求總日數的程式碼片段:
這是一道經典的程式設計練習題。相信網上有很多解答,下面我就這個問題分享一些使編碼簡潔的經驗。
減少不必要的計算有些數值是固定的這部分數值就不要寫程式實時計算了。給定日期求日數時,不少人喜歡用迴圈做累加。但這是沒有必要的,可以提前做一個數組:
int monthdays={31,59,90,120,...};透過計算避免迴圈編碼時應儘量避免使用迴圈計算。為了求出距離公元一年一月一號的日數使用迴圈是不必要的。可以用算式算出:
totaldays+=year*365+year/4-year/100+year/400;使用算式減少邏輯分支邏輯分支會增加複雜度,影響程式碼質量,應最小限度使用。可以使用算式代替部分邏輯判斷:
leap=((year%100!=0)&&(year%4==0))?1:0;leap=((year%100==0)&&(year%400==0))?1:leap;完整的例子以下是求總日數的程式碼片段:
int monthdays={31,59,90,120,...};int totaldays=0;int leap=0;leap=((year%100!=0)&&(year%4==0))?1:0;leap=((year%100==0)&&(year%400==0))?1:leap;totaldays+=monthdays[month-1];totaldays+=leap;totaldays+=year*365+year/4-year/100+year/400;