偶然看到《最強(qiáng)大腦》的一期節(jié)目,主持人只要隨便說出某年某月某日,嘉賓選手馬上能算出來(lái)這一天是一年中的第幾天,讓觀眾和評(píng)委都贊嘆不已,看完節(jié)目后的我想是否可以編寫一個(gè)程序完成這個(gè)計(jì)算呢。
做任何題目之前我們都要先考慮一下題目的問題和基本的思路,以及題目中會(huì)出現(xiàn)的一些問題或者是陷阱……
程序中需要自行輸入年、月、日,然后輸出天數(shù)。接下來(lái)就要思考如何計(jì)算出天數(shù)呢?有幾點(diǎn)提示,首先年份是要區(qū)分閏年和非閏年,根據(jù)閏年還是非閏年確定2月份的天數(shù)是28天還是29天,并且輸入的月份必須在1到12之間,否則需要報(bào)錯(cuò),如圖1。
在構(gòu)思編程時(shí)就需要綜合考慮解決這些問題了。我們先計(jì)算出每個(gè)月的合計(jì)天數(shù),比如說1月一共有31天,1月到2月一共有59天(暫且把2月設(shè)置為28天),1月到3月一共有90天,一直計(jì)算出十二個(gè)月的。然后這時(shí)我們根據(jù)月份和日期大致計(jì)算出天數(shù)。當(dāng)輸入月份大于2月份時(shí),還需要考慮是否為閏年的情況,如果閏年的話,2月份需要加一天。在計(jì)算閏年時(shí)可以參考上一期《計(jì)算閏年》的知識(shí)點(diǎn)注意“百年不閏,四百年再閏”的世紀(jì)閏年情況。
分析清楚情況之后開始動(dòng)手寫代碼了。大家也可以先自己編寫然后和我寫的對(duì)比一下。方法是有很多種的,但是最終效果應(yīng)該一致。歡迎大家提出自己不同的想法,如圖2、圖3。