摘要:介紹了利用VB編程實現(xiàn)萬年歷的解法、思路、程序源代碼及運行結(jié)果。
關(guān)鍵詞:萬年歷 平年 閏年 VB 源程序
中圖分類號:TP312 文獻標識碼:B 文章編號:1002-2422(2008)01-0015-02
1 問題的解法
制作萬年歷,首先要計算出這一年的一月一日是星期幾,其次計算這一年是否為閏年,以便確定該年二月份是多少天,最后,再依次排出該年的年歷。
根據(jù)歷法,按下面公式計算,就可以知道任意一年的某月、某日是星期兒。公式如下:
S=x-I+int((x-1/4)-int((x-1)/100)+int((x-1)/400)+C
其中x是公元的年數(shù),c是從這一年的元旦算起到這天為止(包括這一天在內(nèi))的日數(shù),int((x-1)/4)、int((x-1)/100)、int((x-1)/400)分別表示(x-1)/4、(X-1)/100、(x-1)/400的整數(shù)部分。
求出S后,再用7去除。若余數(shù)為零則這天是星期日;若不為零,則余數(shù)是幾這一天就是星期幾。
例如:求2006年10月1日是星期幾。
C=(31+28+31+30+31+30+31+31+30+1)=274
S=2006-1+int((2006-1)/4)-int((2006-1)/100)+int((2006-1)/400)+274
=2005+501-20+5+274=2765
2765÷7=395……0
所以,2006年10月1日是星期日。
2 程序設計思路
(1)由鍵盤輸入年(year1)的值;
(2)判斷所輸入的年份是否為閏年。由歷法可知,若該年的年數(shù)不能被4整除,則該年為平年,即2月份為28天;若該年的年數(shù)能被4整除,且不能被100整除,則該年為閏年,即2月份為29天;若能被400整除,則該年也為閏年:
(3)計算這一年每個月的第一天是星期幾(m)。為了以后計算方便,免得重復計算,分別將m-1的值賦給數(shù)組元素c(1)~c(12):
(4)按所需要的格式輸出該年的年歷:先輸出年號,再輸出每個月份的月份號,之后在每個月份的月份導下輸出星期日至星期六的一個漢字,本例使用“日”~“六”,最后在每月的星期“日”~“六”下輸出該月的每一天相應的號數(shù):
(5)關(guān)于變量及幾個自定義子過程的簡要說明:變量allmonthday表示每月的總天數(shù):數(shù)組a(O)~a(6)表示周“日”~“六”:c(1)~c(12)分別表示1~12每月的第一天是星期幾;v表示2月份總天數(shù)。
3 程序界面設計
在窗體界面中,主要控件為圖片框(名稱為pie1),用于輸出年歷,其AutoRedraw屬性設置為True。
4 VB源程序


5 結(jié)束語
源程序已經(jīng)在vB6下調(diào)試通過,還可以將窗體中的圖片框控件換成RichTextBox控件,這樣會使輸出的萬年歷樣式更美觀。