




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中國(guó)礦業(yè)大學(xué)徐海學(xué)院軟件開發(fā)基礎(chǔ)實(shí)踐報(bào)告姓 名: 李岳 學(xué) 號(hào): 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 指導(dǎo)教師: 孫錦程 職 稱: 講師 2012 年 6 月 30 徐州姓名/學(xué)號(hào):李岳 22110522 班級(jí):計(jì)(中軟)11-11、 程序來源:百度貼吧 c語言吧 二、程序項(xiàng)目名稱:萬年歷3、 程序原理:1、int days12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; 這是定義的關(guān)于每個(gè)月天數(shù)的數(shù)組,根據(jù)大小月以及二月分的特殊情況將每個(gè)月的天數(shù)最為數(shù)組中的元素存入數(shù)組當(dāng)中。其中days1=28,是將閏年二月的天數(shù)28天作為初始元素存入。在經(jīng)過
2、theWeek函數(shù)后就可以給days1中存入正確的月天數(shù)。2、char *weeks7 ="Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" char *months12 = "January", "February", "March", "April", "May&
3、quot;, "June", "July", "August", "September", "October", "November", "DeCember" 這兩組數(shù)據(jù)都設(shè)計(jì)利用了指針定義的。這兩個(gè)數(shù)組的作用是存入每個(gè)月,每個(gè)星期的地址。利用指針可以提高程序的可讀性,可以更方便使用。四、程序功能: 1、輸入年份,判斷是否為閏年 2、輸入年月日,判斷改日為星期幾 3、輸入年份,打出12個(gè)月歷,輸入月份,打出該月的日歷五、程序內(nèi)容(輸入輸出): isLeap
4、和theLeap函數(shù)的共同使用,一起判斷出了輸入年份是否為閏年的信息。 theCalendar/*打開相應(yīng)的詳情*/ ,details /*月歷詳情函數(shù)*/ ,printCalendar /*輸出日期詳情及表格*/,通過這三個(gè)函數(shù)可以將輸入數(shù)據(jù)的具體信息通過完整日歷的形式表示出來。六、數(shù)據(jù)流分析(定義的變量,類型,數(shù)組,類型,結(jié)構(gòu)體):頭文件:stdio.h /*/ conio.h /*/ stdlib.h /*/采用指針形式定義了*weeks和*months兩組數(shù)組指針變量在程序中運(yùn)用了大量的自定義函數(shù),都涉及為了使程序更簡(jiǎn)介明了。其中有:isLeap/*判斷是否為閏年*/theLeap/*
5、輸入輸出改年是否為閏年的信息*/ Zeller/*判斷星期的自定義函數(shù)*/ theWeek()/*對(duì)于輸入的日期輸出該天是星期幾*/ printCalendar()/*輸出日期詳情及表格*/ details /*月歷詳情函數(shù)*/ theCalendar/*打開相應(yīng)的詳情*/ Menu()/*程序的主菜單*/ Select()/*按鍵的控制函數(shù)*/這些函數(shù)的定義極其相應(yīng)的內(nèi)部程序共同構(gòu)筑起了這個(gè)萬年歷總程序。其中的isLeap函數(shù)是用來判斷輸入的年份是否為閏年,實(shí)現(xiàn)了預(yù)計(jì)功能的第一個(gè)方面;theWeek函數(shù)則是為了實(shí)現(xiàn)判斷星期而編寫的;printCalendar , details , theC
6、alendar這三個(gè)函數(shù)的共同使用就能夠完成第三個(gè)功能。七、程序代碼分析(每個(gè)函數(shù)和代碼模塊的功能作用分析):1、總天數(shù)算法isLeap和theLeap函數(shù)的共同使用,一起判斷出了輸入年份是否為閏年的信息。判斷一年是否為閏年的方法是:該年分而能被四整除但不能被100整除,或者是能被400整除。2、計(jì)算輸入日期是星期幾利用Zeller函數(shù)可以判斷出星期,然后對(duì)于輸入的日期可以通過theWeek() 函數(shù)對(duì)Zeller進(jìn)行一次調(diào)用然后就可以輸出相應(yīng)的星期數(shù)。int Zeller(int year, int month, int day) /by theWeek(); printCalendar()
7、;/*判斷星期的函數(shù)*/ int C, y, m, d, w; if( month < 3) year -= 1; month += 12; c = year / 100; y = year % 100; m = month; d = day; w = y + y/4 + C/4 - 2*C + 26*(m+1)/10 + d - 1; w %= 7; return (w >= 0 ? w : w+7);void theWeek() /by Select();/*對(duì)于輸入的日期輸出該天是星期幾*/ int year, month, day, w; printf("n&qu
8、ot;); do printf("Please input the date(YYYY-MM-DD): "); scanf("%d-%d-%d", &year, &month, &day); if( isLeap( year ) ) days1 = 29; /是否閏年 else days1 = 28; while(!( (month > 0 && month < 13) && (day > 0 && day <= daysmonth - 1) ) ); w =
9、 Zeller(year, month, day); printf("nThis day %d-%02d-%02d is %s.", year, month, day, weeksw); getch();3、對(duì)輸入信心的匯總theCalendar/*打開相應(yīng)的詳情*/ ,details /*月歷詳情函數(shù)*/ ,printCalendar /*輸出日期詳情及表格*/,通過這三個(gè)函數(shù)可以將輸入數(shù)據(jù)的具體信息通過完整日歷的形式表示出來。void printCalendar(int year, int month) /by details(); theCalendar();/*輸出
10、日期詳情及表格*/ int w, d; w = Zeller(year, month, 1); printf("%28s", monthsmonth - 1); printf("n -%02d-n", month); printf(" SUN MON TUE WED THU FRI SATn"); for(d = 0; d < w; d+) printf(" "); for(month-, d = 1; d <= daysmonth; d+) printf("%4d", d); if
11、( (d + w)%7 = 0 && d != daysmonth) printf("n"); printf("n=n");void details(int year) /by theCalendar();/*月歷詳情函數(shù)*/ int month; while(true) do system("cls"); printf("Press '0' to exit.n"); printf("Please input the month: "); scanf("
12、%d", &month); while(!(month >=0 && month <= 12); if(month != 0) printf("n"); printf("Calendar %dn", year); printCalendar(year, month); if( getch() = '0') break; else break; void theCalendar() /by Select(); int year, month; printf("nPlease input
13、 the year: "); scanf("%d", &year); if( isLeap( year ) ) days1 = 29; /是否閏年 else days1 = 28; system("cls"); printf("Calendar %dn", year); for(month = 1; month <= 12; month+) printCalendar(year, month); printf("More details of each month ?Y/N"); if( t
14、olower(getch() = 'y' ) details( year );八、控制流分析(源程序整體流程圖):開始計(jì)算是否為閏年計(jì)算星期數(shù)按鍵1?按鍵2?按鍵3?輸出是否為閏年輸出星期數(shù)計(jì)算編輯接收到的數(shù)據(jù)輸出具體月歷按鍵0?是是是是計(jì)算是否為閏年計(jì)算星期數(shù)按鍵1?按鍵2?按鍵3?是是是計(jì)算是否為閏年計(jì)算星期數(shù)按鍵1?按鍵2?按鍵3?是是計(jì)算是否為閏年計(jì)算星期數(shù)按鍵1?按鍵3?是是結(jié)束 退出九、源代碼優(yōu)點(diǎn),好處:程序中使用了大量的自定義函數(shù),使程序簡(jiǎn)單明了,效率更高十、總結(jié)及心得體會(huì): 這次“萬年歷系統(tǒng)設(shè)計(jì)”的課程設(shè)計(jì)不僅讓我對(duì)C語言的熟悉程度上升到了另一個(gè)高度,更加熟練的
15、運(yùn)用C語言,而且在一定意義上對(duì)面向過程設(shè)計(jì)的理解更加深刻了。是我在編程路途上的一次質(zhì)的飛躍。而且在處理非常規(guī)數(shù)據(jù)類型的運(yùn)算的鍛煉下,使我對(duì)編程語言有了一個(gè)新的認(rèn)識(shí)。當(dāng)看著一個(gè)具有圖形界面的萬年歷的模型成品出現(xiàn)在自己面前時(shí),心中有著無限感慨,原來編程也不是非常遙不可及的,原來在編程的趣味性中能讓我學(xué)到更多有意思的知識(shí)十一、對(duì)源程序過程及方法、手段的改進(jìn)建議: 在主菜單輸入0后,顯示:是否真的要退出(Y/N)? 如果輸入Y 則退出程序 否則重新運(yùn)行 Case '0': 后的代碼改為 printf("nDo you want to Exit?(Y/N)"); co
16、n=getch(); if(con='y')|(con='Y') return; if(con='n')|(con='N') Exit(1);報(bào)告評(píng)分: 指導(dǎo)教師簽字:源代碼#include <stdio.h>#include <conio.h> /getch(); tolower(); exit();#include <stdlib.h> /system();int days12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;char *we
17、eks7 ="Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"char *months12 = "January", "February", "March", "April", "May", "June", "July"
18、;, "August", "September", "October", "November", "December"bool isLeap(int year) /by theLeap(); theCalendar();/*判斷是否為閏年*/ if(year%4 = 0 && year%100 != 0 | year%400 = 0) return 1; else return 0; void theLeap() /by Select();/*輸入輸出改年是否為閏年的信息*/ i
19、nt year; printf("nPlease input the year: "); scanf("%d", &year); if( isLeap( year ) ) printf("nThe year %d is leap year.", year); else printf("nThe year %d is not leap year.", year); getch();int Zeller(int year, int month, int day) /by theWeek(); printCale
20、ndar();/*判斷星期的自定義函數(shù)*/ int c, y, m, d, w; if( month < 3) year -= 1; month += 12; c = year / 100; y = year % 100; m = month; d = day; w = y + y/4 + C/4 - 2*C + 26*(m+1)/10 + d - 1; w %= 7; return (w >= 0 ? w : w+7);void theWeek() /by Select();/*對(duì)于輸入的日期輸出該天是星期幾*/ int year, month, day, w; printf(&
21、quot;n"); do printf("Please input the date(YYYY-MM-DD): "); scanf("%d-%d-%d", &year, &month, &day); if( isLeap( year ) ) days1 = 29; /是否閏年 else days1 = 28; while(!( (month > 0 && month < 13) && (day > 0 && day <= daysmonth - 1)
22、 ) ); w = Zeller(year, month, day); printf("nThis day %d-%02d-%02d is %s.", year, month, day, weeksw); getch();void printCalendar(int year, int month) /by details(); theCalendar();/*輸出日期詳情及表格*/ int w, d; w = Zeller(year, month, 1); printf("%28s", monthsmonth - 1); printf("n
23、-%02d-n", month); printf(" SUN MON TUE WED THU FRI SATn"); for(d = 0; d < w; d+) printf(" "); for(month-, d = 1; d <= daysmonth; d+) printf("%4d", d); if( (d + w)%7 = 0 && d != daysmonth) printf("n"); printf("n=n");void details(int
24、 year) /by theCalendar();/*月歷詳情函數(shù)*/ int month; while(true) do system("Cls"); printf("Press '0' to exit.n"); printf("Please input the month: "); scanf("%d", &month); while(!(month >=0 && month <= 12); if(month != 0) printf("n"
25、;); printf("Calendar %dn", year); printCalendar(year, month); if( getch() = '0') break; else break; void theCalendar() /by Select(); int year, month; printf("nPlease input the year: "); scanf("%d", &year); if( isLeap( year ) ) days1 = 29; /是否閏年 else days1 = 28; system("Cls"); printf(&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年二級(jí)建造師項(xiàng)目策劃服務(wù)合同協(xié)議書范本
- 2025年企業(yè)員工競(jìng)業(yè)禁止合同參考
- 2025年醫(yī)保藥店藥師雇傭合同參考文本
- 2025年融資擔(dān)保合同協(xié)議示例
- 2025年二手房買賣合同爭(zhēng)議案件審理觀察
- 2025年標(biāo)準(zhǔn)塔式起重機(jī)租賃合同樣本
- 2025年合作合同高品質(zhì)花崗石
- 2025年加工廠勞資合同范本
- 2025年合同公正互惠協(xié)議
- 2025年北京市車牌租用合同標(biāo)準(zhǔn)文本
- 法蘭標(biāo)準(zhǔn)尺寸表(美標(biāo)、日標(biāo)、德標(biāo))
- 施工技術(shù)管理項(xiàng)總體思路、方式和方法解析
- 城市規(guī)劃與建筑學(xué)專業(yè)英語
- 《兒童心理健康課件》
- 赤蒼藤扦插育苗技術(shù)規(guī)程
- 《旅游市場(chǎng)營(yíng)銷》課程教案(東北財(cái)經(jīng)大學(xué)出版社)
- 老年人能力評(píng)估基本知識(shí)
- CATL設(shè)備電氣控制標(biāo)準(zhǔn)-V10
- 糖尿病高滲性昏迷HNDC搶救流程圖
- 風(fēng)電場(chǎng)設(shè)備材料設(shè)備清單
- 裝載機(jī)駕駛員理論考試復(fù)習(xí)題庫(500題)
評(píng)論
0/150
提交評(píng)論