這是我個(gè)人對(duì)這個(gè)題目理解民逼,可能有些雜亂糊余,僅供參考秀又。
題目:
? ? ? ?編寫(xiě)程序单寂,提示用戶輸入年份和代表該年第一天是星期幾的數(shù)字,然后在控制臺(tái)上顯示該年的日歷表涮坐。
控制臺(tái)顯示結(jié)果如下:(我用_代表空格)
首先,說(shuō)一下我認(rèn)為在做這道題之前需要想到的幾個(gè)要點(diǎn):
1,首先,要判斷輸入的年份是平年還是閏年,判斷閏年的條件是能被4整除且不能被100整除,或能 被400整除
? 這里,我寫(xiě)了一個(gè)單獨(dú)的函數(shù)用來(lái)表示
2,第二,判斷完平年還是閏年之后,還需要得出每月的天數(shù),需要注意,2月的天數(shù)和平年閏年有關(guān)系
? 這里我使用的是switch語(yǔ)句,也可以使用循環(huán)等獲取天數(shù),2月的天數(shù)調(diào)用了前面判斷是否為閏年的方法
3,最后,在知道每個(gè)月的天數(shù)后,需要知道這個(gè)月的第一天從星期幾開(kāi)始,這時(shí)就需要獲取每個(gè)月開(kāi)始的星期數(shù):(上個(gè)月的天數(shù)%7+上個(gè)月第一天的星期數(shù))%7
? 這里第一個(gè)月的星期數(shù)是由用戶手動(dòng)輸入獲取的,所以,第一個(gè)月的星期數(shù),就是他本身,第二個(gè)月的星期數(shù)是前面一個(gè)月,也就是第一個(gè)月的星期數(shù),用遞歸調(diào)用比較方便
當(dāng)我寫(xiě)到這里的時(shí)候,我還沒(méi)考慮7天換行的問(wèn)題,就只是看能不能在正確的位置輸出每個(gè)月的一號(hào),于是開(kāi)始寫(xiě)main函數(shù)
此處,kl為我的類名,(注:類名首字母要大寫(xiě),不要像我一樣小寫(xiě)),_代替空格
通過(guò)運(yùn)行后,得出下圖所示的結(jié)果:
說(shuō)實(shí)話,看到這個(gè)結(jié)果,著實(shí)嚇了一跳,隨即,我就發(fā)現(xiàn),我沒(méi)寫(xiě)換行,但是每個(gè)月的第一天所在星期數(shù)是正確的,還是竊喜了一小下
接下來(lái)就開(kāi)始換行的操作
換行的話,就是每到周六就換行,Sun對(duì)應(yīng)的值是0,Sat對(duì)應(yīng)的是6,也就是說(shuō),要判斷當(dāng)days為6時(shí)換行,就是判斷days為星期幾,我的思路是,當(dāng)天的日期加上這個(gè)月開(kāi)始的星期數(shù)余7就是當(dāng)前日期的星期數(shù),但是要注意,這個(gè)月開(kāi)始的星期數(shù)是從0開(kāi)始的,所以,總的來(lái)說(shuō):
當(dāng)前日期的星期數(shù)= (當(dāng)前日期+這個(gè)月開(kāi)始的星期數(shù)-1)%7
判斷完當(dāng)前天數(shù)之后,就要在main函數(shù)里使用了,使用要
判斷當(dāng)前天數(shù)是否為周6,進(jìn)行換行:
將以下語(yǔ)句放在圖5的紅線出即可,在if條件里調(diào)用dWeak函數(shù)
這樣就可以了,運(yùn)行結(jié)果后,就會(huì)出現(xiàn)圖1的樣式
以上,是我在寫(xiě)完之后的一些理解,如果有更好的方式歡迎告知(^w^)
最后,用一張圖片結(jié)束吧