




已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
中國礦業(yè)大學徐海學院軟件開發(fā)基礎實踐報告姓 名: 李岳 學 號: 22110522 專 業(yè): 計算機科學與技術 指導教師: 孫錦程 職 稱: 講師 2012 年 6 月 30 徐州姓名/學號:李岳 22110522 班級:計(中軟)11-11、 程序來源:百度貼吧 c語言吧/f?kw=c%D3%EF%D1%D4 二、程序項目名稱:萬年歷3、 程序原理:1、int days12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; 這是定義的關于每個月天數(shù)的數(shù)組,根據(jù)大小月以及二月分的特殊情況將每個月的天數(shù)最為數(shù)組中的元素存入數(shù)組當中。其中days1=28,是將閏年二月的天數(shù)28天作為初始元素存入。在經過theWeek函數(shù)后就可以給days1中存入正確的月天數(shù)。2、char *weeks7 =Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday; char *months12 = January, February, March, April, May, June, July, August, September, October, November, DeCember; 這兩組數(shù)據(jù)都設計利用了指針定義的。這兩個數(shù)組的作用是存入每個月,每個星期的地址。利用指針可以提高程序的可讀性,可以更方便使用。四、程序功能: 1、輸入年份,判斷是否為閏年 2、輸入年月日,判斷改日為星期幾 3、輸入年份,打出12個月歷,輸入月份,打出該月的日歷五、程序內容(輸入輸出): isLeap和theLeap函數(shù)的共同使用,一起判斷出了輸入年份是否為閏年的信息。 theCalendar/*打開相應的詳情*/ ,details /*月歷詳情函數(shù)*/ ,printCalendar /*輸出日期詳情及表格*/,通過這三個函數(shù)可以將輸入數(shù)據(jù)的具體信息通過完整日歷的形式表示出來。六、數(shù)據(jù)流分析(定義的變量,類型,數(shù)組,類型,結構體):頭文件:stdio.h /*/ conio.h /*/ stdlib.h /*/采用指針形式定義了*weeks和*months兩組數(shù)組指針變量在程序中運用了大量的自定義函數(shù),都涉及為了使程序更簡介明了。其中有:isLeap/*判斷是否為閏年*/theLeap/*輸入輸出改年是否為閏年的信息*/ Zeller/*判斷星期的自定義函數(shù)*/ theWeek()/*對于輸入的日期輸出該天是星期幾*/ printCalendar()/*輸出日期詳情及表格*/ details /*月歷詳情函數(shù)*/ theCalendar/*打開相應的詳情*/ Menu()/*程序的主菜單*/ Select()/*按鍵的控制函數(shù)*/這些函數(shù)的定義極其相應的內部程序共同構筑起了這個萬年歷總程序。其中的isLeap函數(shù)是用來判斷輸入的年份是否為閏年,實現(xiàn)了預計功能的第一個方面;theWeek函數(shù)則是為了實現(xiàn)判斷星期而編寫的;printCalendar , details , theCalendar這三個函數(shù)的共同使用就能夠完成第三個功能。七、程序代碼分析(每個函數(shù)和代碼模塊的功能作用分析):1、總天數(shù)算法isLeap和theLeap函數(shù)的共同使用,一起判斷出了輸入年份是否為閏年的信息。判斷一年是否為閏年的方法是:該年分而能被四整除但不能被100整除,或者是能被400整除。2、計算輸入日期是星期幾利用Zeller函數(shù)可以判斷出星期,然后對于輸入的日期可以通過theWeek() 函數(shù)對Zeller進行一次調用然后就可以輸出相應的星期數(shù)。int Zeller(int year, int month, int day) /by theWeek(); printCalendar();/*判斷星期的函數(shù)*/ int C, y, m, d, w; if( month = 0 ? w : w+7);void theWeek() /by Select();/*對于輸入的日期輸出該天是星期幾*/ int year, month, day, w; printf(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 0 & day = daysmonth - 1) ) ); w = Zeller(year, month, day); printf(nThis day %d-%02d-%02d is %s., year, month, day, weeksw); getch();3、對輸入信心的匯總theCalendar/*打開相應的詳情*/ ,details /*月歷詳情函數(shù)*/ ,printCalendar /*輸出日期詳情及表格*/,通過這三個函數(shù)可以將輸入數(shù)據(jù)的具體信息通過完整日歷的形式表示出來。void printCalendar(int year, int month) /by details(); theCalendar();/*輸出日期詳情及表格*/ 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 =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 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( tolower(getch() = y ) details( year );八、控制流分析(源程序整體流程圖):開始計算是否為閏年計算星期數(shù)按鍵1?按鍵2?按鍵3?輸出是否為閏年輸出星期數(shù)計算編輯接收到的數(shù)據(jù)輸出具體月歷按鍵0?是是是是計算是否為閏年計算星期數(shù)按鍵1?按鍵2?按鍵3?是是是計算是否為閏年計算星期數(shù)按鍵1?按鍵2?按鍵3?是是計算是否為閏年計算星期數(shù)按鍵1?按鍵3?是是結束 退出九、源代碼優(yōu)點,好處:程序中使用了大量的自定義函數(shù),使程序簡單明了,效率更高十、總結及心得體會: 這次“萬年歷系統(tǒng)設計”的課程設計不僅讓我對C語言的熟悉程度上升到了另一個高度,更加熟練的運用C語言,而且在一定意義上對面向過程設計的理解更加深刻了。是我在編程路途上的一次質的飛躍。而且在處理非常規(guī)數(shù)據(jù)類型的運算的鍛煉下,使我對編程語言有了一個新的認識。當看著一個具有圖形界面的萬年歷的模型成品出現(xiàn)在自己面前時,心中有著無限感慨,原來編程也不是非常遙不可及的,原來在編程的趣味性中能讓我學到更多有意思的知識十一、對源程序過程及方法、手段的改進建議: 在主菜單輸入0后,顯示:是否真的要退出(Y/N)? 如果輸入Y 則退出程序 否則重新運行 Case 0: 后的代碼改為 printf(nDo you want to Exit?(Y/N); con=getch(); if(con=y)|(con=Y) return; if(con=n)|(con=N) Exit(1);報告評分: 指導教師簽字:源代碼#include #include /getch(); tolower(); exit();#include /system();int days12 = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31;char *weeks7 =Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday;char *months12 = January, February, March, April, May, June, July, 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();/*輸入輸出改年是否為閏年的信息*/ int 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(); printCalendar();/*判斷星期的自定義函數(shù)*/ int c, y, m, d, w; if( month = 0 ? w : w+7);void theWeek() /by Select();/*對于輸入的日期輸出該天是星期幾*/ int year, month, day, w; printf(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 0 & day = daysmonth - 1) ) ); 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 -%02d-n, month); printf( SUN MON TUE WED THU FRI SATn); for(d = 0; d w; d+) printf( ); for(month-, d = 1; d =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 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( tolower(getch() = y ) details( year );void Menu() /by main();/*程序的主菜單*/ system(cls); printf(1 -This year is leap year or notn); printf(2 -This day is which day of the weekn); printf(3 -The Calendar of this yearn); printf(0 -Exitnn); printf(Pleas
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件設計師備考過程中的決策與優(yōu)先級確定能力試題及答案
- 計算機二級MySQL難點解析與試題及答案
- 法律邏輯學中試題及答案
- 移動端開發(fā)中的用戶體驗試題及答案
- 高頻計算機二級試題及答案分析
- 理論結合實踐的Delphi試題及答案
- 2025企業(yè)間的租賃合同模板
- C++語言與數(shù)據(jù)科學結合試題及答案
- 2025燈光租賃合同
- 2025年Python時間和日期處理試題及答案
- 帶電作業(yè)施工方案
- 宏定義與跨平臺開發(fā)
- 腰椎病護理措施
- 社保費扣費協(xié)議書范文范本下載
- 2024年全國寄生蟲病防治技能競賽備賽試題庫-上(血吸蟲病、瘧疾)
- 【一等獎課件】《刑事攝像技術》比賽課題:現(xiàn)場照相內容及方法
- 手術室環(huán)境清潔與消毒課件
- DB23T 3844-2024 煤礦地區(qū)地震(礦震)監(jiān)測臺網(wǎng)技術要求
- 工商企業(yè)管理畢業(yè)論文范文(4篇)
- 卷紙有多長(教學設計)-2023-2024學年六年級下冊數(shù)學北師大版
- 浙江省寧波市2024年小升初英語試卷(含答案)2
評論
0/150
提交評論