c語言萬年歷程序設(shè)計_第1頁
c語言萬年歷程序設(shè)計_第2頁
c語言萬年歷程序設(shè)計_第3頁
c語言萬年歷程序設(shè)計_第4頁
c語言萬年歷程序設(shè)計_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、-. z.第 PAGE 1 頁目錄 TOC o 1-2 u 第1章需求分析 PAGEREF _Toc282154160 h 6第2章概要設(shè)計 PAGEREF _Toc282154161 h 6第3章詳細設(shè)計 PAGEREF _Toc282154162 h 11第四章運行結(jié)果及分析 PAGEREF _Toc282154163 h 171.登陸界面 PAGEREF _Toc282154164 h 172.顯示*年全年日歷 PAGEREF _Toc282154165 h 173.顯示*月日歷 PAGEREF _Toc282154166 h 18第5章課程設(shè)計心得 PAGEREF _Toc282154

2、167 h 20參考文獻 PAGEREF _Toc282154168 h 21第1章需求分析1程序運行時,首先給出四個菜單項選擇項和輸入提示:圖1-12用戶可以通過主菜單項選擇擇不同選項。輸入1,通過輸入年份可顯示一年每個月份的日歷;輸入2,通過輸入年份和月份中間以空格分開可顯示該月的日歷;假設(shè)輸入3,通過輸入年份月份和日期中間以空格分開可顯示該日的星期;輸入0,則退出查詢系統(tǒng)。第2章 概要設(shè)計菜單項選擇擇界面可通過下面所示函數(shù)時現(xiàn); 主要思路:通過while語句與swichcase以及if條件語句實現(xiàn)菜單的循環(huán)功能和不同選項的功能實現(xiàn)。閏年與平年的判斷:代碼如下: void main() i

3、nt year,month,day,a,b; while(1) printf(nnnn);printf( *nn);printf( * * n);printf( 歡送進入萬年歷查詢系統(tǒng) n); printf( * * nn); printf( *nnn);printf( 1 年歷 2 月歷 3 日歷 4 退出n);printf( 請輸入您的選擇,按回車鍵確定: );scanf(%d,&b); switch(b) case 1: printf(n請輸入您要查的年份: ); scanf(%d,&year); a=*3(year,1,1); if(a=0) printf(錯誤!請您重新輸入。n);

4、break; nianli(year); break; case 2: printf(n請輸入您要查的年和月,年月之間用空格隔開: ); scanf(%d%d,&year,&month); a=*3(year,month,1);if(a=0) printf(錯誤!請您重新輸入。n); break; yueli(year,month); break; case 3: printf(n請輸入您要查的年月日,年月日之間用空格隔開: ); scanf(%d%d%d,&year,&month,&day); a=*3(year,month,day); if(a=0) printf(錯誤!請您重新輸入。n)

5、; break; rili(year,month,day); break; case 4: e*it(0); default: printf(錯誤!請您重新輸入。nn); 顯示一年的日歷,可通過函數(shù)void *1實現(xiàn),思路如下:先判斷輸入年份是否為閏年,假設(shè)為閏年,則定義二月為29天,通過調(diào)用函數(shù)判斷是否為閏年及每個月的天數(shù)依次打印12個月的月份打印每個月的日歷,顯示個每個月的日歷:printf(%2s%2s%2s%2s%2s%2s%2sn, 星期日 , 星期一 , 星期二, 星期三 , 星期四 , 星期五 , 星期六 );閏年的判斷:計算所輸入的年份是否可被4整除,假設(shè)不能被整除,為平年。假

6、設(shè)可被4整除,計算此年份能否被100整除,不能被100整除則為閏年。既能被4整除,也能被100整除的年份,假設(shè)也能被400整除,則為閏年,否則為平年。閏年366天,平年365天 圖2-1代碼:int runnian(int year) if(year%4=0&year%100!=0|year%400=0) return 1; else return 0; 判斷*月的天數(shù);通過函數(shù):int day1(int year,int month) int a12=31,28,31,30,31,30,31,31,30,31,30,31;假設(shè)為閏,則二月為29天。 圖2-2代碼:if(runnian(yea

7、r)a1=29;第3章詳細設(shè)計#include #include /*定義頭文件*/int runnian(int year)/*定義變量*/if(year%4=0&year%100!=0|year%400=0) /*利用函數(shù)判斷輸入年份是閏年還是平年*/return 1;elsereturn 0;int day1(int year,int month)int a12=31,28,31,30,31,30,31,31,30,31,30,31;/*定義數(shù)組確定12個月每個月的天數(shù)*/if(runnian(year) /*如果輸入年份是閏年*/a1=29;/*二月29天*/return amonth

8、-1;int day2(int year,int month,int day)int i,sum=0;for(i=1;imonth;i+)sum+=day1(year,i);sum+=day;return sum;int week1(int year,int month,int day)int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+day2(year,month,day);number%=7;return number;char *Week2(int number)switch(number)/*分類一周七天*/case 0:

9、return 星期日;case 1:return 星期一;case 2:return 星期二;case 3:return 星期三;case 4:return 星期四;case 5:return 星期五;case 6:return 星期六;default:return 錯誤!請您重新輸入。;/*不符和上面七種情況的報錯提示*/void *1(int year,int month,int day)int number=week1(year,month,day);if(runnian(year)printf(閏年);/*年份為閏年則輸出“閏年“*/else printf(平年);printf( %d

10、 年 %d 月 %d 日%10snn,year,month,day,Week2(number);/*按年 月 日輸出結(jié)果*/void *2(int year,int month)int ma*,number,i,j=1;ma*=day1(year,month);number=week1(year,month,1);printf(%2s%2s%2s%2s%2s%2s%2sn, 星期日 , 星期一 , 星期二, 星期三 , 星期四 , 星期五 , 星期六 );/*按照間隔打印日歷for(i=0;inumber;i+)printf( );while(j=ma*)printf(%8d,j);if(i%

11、7=6)printf(n);i+;j+;printf(nn);int *3(int year,int month,int day)if(year0|month12|dayday1(year,month)/*當輸入植出現(xiàn)這些情況時*/return 0;/*返回0*/elsereturn 1;/*返回1*/void nianli(int year)int i;printf(n);for(i=1;i=12;i+)if(runnian(year)printf(閏年);else printf(平年);printf( %d 年 %d 月nn,year,i);void yueli(int year,int

12、month)if(runnian(year)printf(閏年);else printf(平年);printf( %d 年 %d 月nn,year,month);*2(year,month);void rili(int year,int month,int day)printf(n);*1(year,month,day);void main()int year,month,day,a,b;while(1)printf(nnnn);printf( *nn);printf( * * n);printf( 歡送進入萬年歷查詢系統(tǒng) n);printf( * * nn);printf( *nnn);pr

13、intf( 1 年歷 2 月歷 3 日歷 4 退出n);printf( 請輸入您的選擇,按回車鍵確定: );scanf(%d,&b);switch(b)case 1:/*選擇1時*/printf(n請輸入您要查的年份: );/*給出輸入提示*/scanf(%d,&year);/*輸入查詢的年份*/a=*3(year,1,1);if(a=0)printf(錯誤!請您重新輸入。n);/*輸入植異常時報錯*/break;nianli(year);break;case 2:/*選擇二時*/printf(n請輸入您要查的年和月,年月之間用空格隔開: );/*給出輸入提示*/scanf(%d%d,&yea

14、r,&month);/*輸入需要查詢的年 月*/a=*3(year,month,1);if(a=0)printf(錯誤!請您重新輸入。n);break;yueli(year,month);break;case 3:/*選擇3時*/printf(n請輸入您要查的年月日,年月日之間用空格隔開: );/*給出輸入提示*/scanf(%d%d%d,&year,&month,&day);/*輸入年 月 日*/a=*3(year,month,day);if(a=0)printf(錯誤!請您重新輸入。n);/*輸入植異常時報錯*/break;rili(year,month,day);break;case 4

15、:e*it(0);default:printf(錯誤!請您重新輸入。nn); 第四章 運行結(jié)果及分析1.登陸界面 圖4-1登陸界面提供了四個選項進展選擇,并提示輸入后的操作方法;2.顯示*年全年日歷圖4-2輸入指令后,依次打印出每個月份的日歷。并顯示平年或者閏年;3.顯示*月日歷 圖4-3第5章課程設(shè)計心得 通過本次課程設(shè)計我第一次通過自己的實踐對書本上的知識進展了與生活相關(guān)的運用。在這個程序中,主要應(yīng)用了這學(xué)期所學(xué)習的循環(huán),條件語句,數(shù)組以及調(diào)用函數(shù)。這些知識的應(yīng)用使我對課本內(nèi)容的認識得到了加深。 在編寫程序的過程中,也出現(xiàn)了很多錯誤。比方程序語句錯誤導(dǎo)致檢測時連續(xù)報錯;函數(shù)語句編寫錯誤導(dǎo)致輸出結(jié)果與實際不符等。出現(xiàn)這些情況后,通過對一些新知識的學(xué)習和對網(wǎng)上相關(guān)資料的閱覽,我發(fā)現(xiàn)了自己的程序的問題所在并進展了改正。最后得到了正確的結(jié)果。 在程序的編寫完成后,我按照要求對程序進展了拓展。在輸出年歷的根底上增加了月歷及確定日期的輸出。本來設(shè)想增加農(nóng)歷生肖功能,但是

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論