C語言課程設計報告 萬年曆

2022-05-17 14:59:14 字數 4492 閱讀 4622

萬年曆的設計

二 、設計要求

1、能夠顯示星期;

2、能夠顯示年月日;

3、能夠修改;

4、當系統時間變動時,能自動跳到相應的時間。

三 、 設計目的

1. 通過本項課程設計,可以培養獨立思考、 綜合運用所學有關相應知識的能力,能更好的鞏固《c語言程式設計》課程學習的內容,掌握工程軟體設計的基本方法,強化上機動手程式設計能力,闖過理論與實踐相結合的難關!更加了解了c語言的好處和其可用性!

同時增加了同學之間的團隊合作精神!更加也體會到以後在工作中團隊合作的重要性和必要性!

2. 通過c語言課程設計,使學生了解高階程式語言的結構,掌握基本的程式設計過程和技巧,掌握基本的分析問題和利用計算機求解問題的能力,具備初步的高階語言程式設計能力。為後續各門計算機課程的學習和畢業設計打下堅實基礎。

四 、設計思想及過程

【一】由於萬年曆具有以下特點:

1。平年365天(52周+1天),閏年366天(52周+2天)。平年2月28天,閏年2月29天。

由於公元1月1日設為星期六,故3月1日為星期三注意這個「三」

為使演算法達到最簡,故本演算法以「星期」為計算單位。且選3月1日為基月。

2。每400年整一閏,或每4年且不為百年的一閏。(原因:

地球繞太陽一周的時間是365天5小時46秒,為了使一年的天數為整數,將一年的天數定為365天,餘下的時間積累起來,四年就是23小時15分4秒,將近一天,把這一天加在某年的二月而成29天,該年稱為閏年,其它年稱為平年。但四年加一天又多用了44分56秒,這個數積滿400年為三天。因此400年中只能有97個閏年,所以凡能被400整除,或不能被100整除但能被4整除的年份為閏年。

)所以百年%4=0閏或(年%4=0並且年<>0)閏。

3。每 4年(3個平年+1個閏年)共208周+5天注意這個「5天」

每百年共100*(208周+5天)-1天=5217周+5天注意這個「5天」(整百年暫設為平年)

每400年共4*(5217周+5天)+1天(整400年閏)=20871周+0天——注意這個「0天」和

「1天」(4個整百年只有乙個閏年)

即400年一輪迴!(原來萬年曆400年前是一家)

【二】根據萬年曆以上特點進行編寫:

首先對萬年曆年、月、日進行編寫,編寫程式先定義每月的天數為28天,如月份為1、3、5、7、8、10、12就定義天數為31天反之如果月份為4、6、9、11就輸出天數為30天,由上可見2月份為28天但是如果為閏年就有29天就要定義另乙個函式#define year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:

0當為閏年時可得1加上該程式便可得到每月的天數。 具體程式見(五、萬年曆程式)

再對其中的星期進行編寫:由於公元1月1日設為星期六,故3月1日為星期三,可以用萬年3月1日星期演算法(特別是那個三)

由於其公式為:

某年3月1日星期幾=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7

某年3月1日星期幾=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7

或某年3月1日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

閏4百年3月1日星期演算法(百年%4=0)

其公式為:

某年3月1日星期幾=(年+年/4+月星期表+日+2天)%7

例:2023年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

2023年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

2023年3月1日星期幾=(0+0/4+0+1+2)%7=3%7=星期三

2023年3月1日星期幾=(1+1/4+0+1+2)%7=4%7=星期四

2023年3月1日星期幾=(4+4/4+0+1+2)%7=8%7=星期一

2023年3月1日星期幾=(8+8/4+0+1+2)%7=13%7=星期六

2023年3月1日星期幾=(42+42/4+0+1+2)%7=55%7=星期六

平4百年3月1日星期演算法(百年%4<>0)

其公式為:

某年3月1日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

例:2023年3月1日星期幾=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:2023年是平年)

2023年3月1日星期幾=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:2023年是平年)

2023年3月1日星期幾=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:2023年是平年)

2023年3月1日星期幾=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五

2023年3月1日星期幾=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五

2023年3月1日星期幾=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六

2023年3月1日星期幾=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二

2023年3月1日星期幾=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一

2023年3月1日星期幾=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2023年是平年)

2023年3月1日星期幾=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二

2023年3月1日星期幾=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三

2023年3月1日星期幾=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四

2023年3月1日星期幾=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2023年是閏年)

2023年3月1日星期幾=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一

注:按400年一輪迴!(400年前是一家)的說法

2023年,2023年是一樣的;

2023年,2023年是一樣的;

2023年,2023年是一樣的;

2023年,2023年是一樣的。

其中萬年某日星期演算法

其公式為:

某日星期幾=(百年%4*5天+年+年/4+月星期表+日+2天)%7

通同星期偏差表

閏年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天數 31 29 31 30 31 30 31 31 30 31 30 31

星期 3 6 0 3 5 1 3 6 2 4 0 2

平年 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

天數 31 28 31 30 31 30 31 31 30 31 30 31

星期 4 0 0 3 5 1 3 6 2 4 0 2

為對以上的萬年曆星期的演算法是正確的對其進行了以下的計算:

⒈對於二十世紀任意日期可以用公式某日星期幾=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根據上面對其進行的計算:

2023年元旦 1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4

1月表=4(平年) 故 4+4=1 即2023年元旦是星期一

2023年國慶 1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2

10月表=4(平年) 故 4+2=6 即2023年國慶是星期六

2023年12月31日 31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3

12月表=2(平年) 故 2+3=5 即2023年12月31日是星期五

⒉對於二十一世紀新前年蟲演算法(20%4*5=0)可以用公式:某日星期幾=(百年%4*5天+年+年/4+閏年月星期表+日+2天)%7 =(20%4*5天+年+年/4+閏年月星期表+日+2天)%7以下就是根據上面對其進行的計算:

2023年元旦 1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3

1月表=3(閏年) 故 3+3->6 即2023年元旦是星期六

2023年春節 16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5

2月表=0(平年) 故 0+5=5 即2023年春節是星期五

2023年12月31日 31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2

12月表=2(平年) 故 2+2=4 即2023年12月31日是星期四

對於上面的分析以及公式的推論和計算證明可以對萬年曆中的星期進行了編寫具體編寫程式見(五 、萬年曆程式)中。

五 、萬年曆源程式

#include""

C語言萬年曆課程設計報告書

萬年曆系統設計 學院 理學院 專業 資訊與計算科學 姓名指導教師 序言經過乙個學期對 c程式設計 的學習,同學們都認為真正的學到了有用知識,可能有一些人學的不夠理想,但無論如何,這些知識都為我們的下一步學習打下了堅實的基礎。做這麼乙個課程設計,一方面是為了檢查我們乙個學期來我們學習的成果,另一方面也...

微控制器課程設計報告 萬年曆

一 摘要2 二 設計任務4 三 總體方案設計與論證4 1 液晶顯示模組4 2 實時時間計算模組5 3 實時環境溫度採集模組5 4 報警模組6 5 設定模組6 四 總體方案組成框圖7 五 系統硬體設計8 1 lcd顯示模組8 2 實時時間計算模組12 3 實時環境溫度檢測模組16 4 報警模組21 5...

C語言編寫微控制器萬年曆系統課程設計報告98分

多功能電腦時鐘設計報告 微控制器的使用領域已十分廣泛,如智慧型儀器儀表 實時工控 通訊裝置 導航系統 家用電器等。學好微控制器,工作就不成問題了。老師說,可見學好單片意義之重大。微控制器作為一門基礎學科,既是對前期學習c語言的綜合運用,也是理論與實踐相結合的一大體現。電腦時鐘有效地檢驗了對ds130...