c語言課程設(shè)計(jì)--萬年歷_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  C</b></p><p><b>  語</b></p><p><b>  言</b></p><p><b>  課</b></p><p><b>  程</b></p><p

2、><b>  設(shè)</b></p><p><b>  計(jì)</b></p><p><b>  第一篇:萬年歷</b></p><p><b>  一、名稱:萬年歷</b></p><p>  二、主題及設(shè)計(jì)目的:</p><p&g

3、t;  本程序是一個(gè)萬年歷程序,可以輸出公元一年一月以后任意月份的天數(shù)及每一天是星期幾,只要在運(yùn)行程序時(shí)按照要求輸入年份確認(rèn)后再輸入月份,程序就會(huì)把這一月份的日歷顯示在屏幕上,使人一目了然。</p><p><b>  三、程序簡(jiǎn)介:</b></p><p>  1、基本結(jié)構(gòu)及基本內(nèi)容:</p><p>  程序一開始輸入年份,輸入后再利用if

4、語句判斷是否再輸入月份? (Y/N)如選擇Y,則需再次輸入具體月份,輸入月份后再按回車,程序就會(huì)把這一月份的日歷顯示出來。如選擇N,再按回車則程序會(huì)把這一年的日歷全部都顯示出來。查看完畢后如想清屏,則再按一次回車即可。</p><p><b>  2、運(yùn)行環(huán)境:.C</b></p><p>  四、主要運(yùn)行界面的介紹:</p><p><

5、b>  五、源代碼:</b></p><p>  #include "stdio.h"</p><p>  #include "time.h"</p><p>  #include "stdlib.h"</p><p><b>  //函數(shù)聲明</b

6、></p><p>  void in_menu(void);</p><p>  void menu(void);</p><p>  void themonth(int,int);</p><p><b>  //總菜單</b></p><p>  void allmenu(void)&

7、lt;/p><p><b>  {</b></p><p>  in_menu();//輸出菜單</p><p>  menu();//選擇菜單</p><p><b>  }</b></p><p><b>  //輸出菜單</b></p>

8、<p>  void in_menu(void)</p><p><b>  {</b></p><p>  printf(" △○ 日歷查詢 ○△\n");</p><p>  printf("\n");</p><p>  prin

9、tf(" ***********************************************************\n");</p><p>  printf("\t\t退出請(qǐng)按alt + F4 或鼠標(biāo)左鍵右上方的叉叉\n");</p><p><b>  }</b></p><p&g

10、t;<b>  //菜單選擇</b></p><p>  void menu(void)</p><p><b>  {</b></p><p><b>  //當(dāng)前查詢的月份</b></p><p><b>  int year;</b></p&g

11、t;<p>  int month = 0;</p><p>  printf("請(qǐng)輸入要查詢的年份:");</p><p>  scanf("%d",&year);</p><p>  printf("是否輸入月份?(Y/N)");</p><p>  if(

12、getchar() == 'Y'||getchar() == 'y')</p><p><b>  {</b></p><p>  printf("請(qǐng)輸入月份:");</p><p>  scanf("%d",&month);</p><p>

13、;<b>  while(1)</b></p><p>  if(month<1||month>12)</p><p><b>  {</b></p><p>  printf("請(qǐng)規(guī)范輸入:");</p><p>  scanf("%d",&am

14、p;month);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  break;</b></p><p>  themonth(year,month);</p><p><b>

15、  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  for(month = 1; month<13; month++)</p><p><b>  {</b></p><

16、p>  printf("%d 月\n",month);</p><p>  themonth(year,month);</p><p><b>  }</b></p><p>  month = 0;</p><p><b>  }</b></p><p

17、>  printf("按回車鍵返回主菜單!\n");</p><p>  getchar();</p><p>  getchar();</p><p>  system("cls");//此函數(shù)可以用于清屏</p><p>  allmenu();</p><p><

18、;b>  }</b></p><p>  /************************</p><p><b>  查詢的當(dāng)月</b></p><p><b>  */</b></p><p>  void themonth(int year,int month)</p

19、><p><b>  {</b></p><p><b>  //定義變量</b></p><p>  struct tm t,*date;//tm結(jié)構(gòu)指針</p><p>  time_t t_day;//聲明time_t類型的變量 t_day</p><p>  int i,

20、j,day;</p><p>  if(month == 2)//月份天數(shù)的判斷</p><p><b>  {</b></p><p>  if(year%4 == 0&&year%100 == 0||year%400 == 0)</p><p><b>  day = 28;</b&g

21、t;</p><p><b>  else</b></p><p><b>  day = 29;</b></p><p><b>  }</b></p><p>  else if(month == 4 || month == 6 || month == 9 || month

22、 == 11)//小月</p><p><b>  day=30;</b></p><p><b>  else</b></p><p><b>  day=31;</b></p><p>  printf("查詢當(dāng)月天數(shù)是:%d\n\n",day);<

23、;/p><p>  printf("一\t二\t三\t四\t五\t六\t日\(chéng)t\n");</p><p>  //功能:使當(dāng)月中的每一天與對(duì)應(yīng)的周幾對(duì)齊</p><p>  for(i=1; i<=day; i++)</p><p><b>  {</b></p><p> 

24、 t.tm_year=year-1900;//從1900開始</p><p>  t.tm_mon=month-1;//月份【取值[0-11]】</p><p>  t.tm_mday=i;//一個(gè)月的日期[1-31]</p><p>  t.tm_hour=0;//時(shí)-取值區(qū)間</p><p>  t.tm_min=0;//分-取值區(qū)間&l

25、t;/p><p>  t.tm_sec=0;//秒-取值區(qū)間</p><p>  t_day=mktime(&t);//</p><p>  date=gmtime(&t_day);</p><p><b>  if(i==1)</b></p><p>  for(j=0; j<

26、date->tm_wday; j++)</p><p>  printf("\t");</p><p>  if(date->tm_wday==6)</p><p>  printf("%d\n",i);</p><p><b>  else</b></p>

27、<p>  printf("%d\t",i);</p><p><b>  }</b></p><p>  printf("\n\n");</p><p><b>  }</b></p><p><b>  //主函數(shù)</b>

28、;</p><p>  int main()</p><p><b>  {</b></p><p>  time_t now;//聲明time_t類型變量</p><p>  time(&now);//獲取時(shí)間</p><p>  printf("\n現(xiàn)在是:%s",

29、ctime(&now));//系統(tǒng)時(shí)間</p><p>  allmenu();</p><p><b>  return 0;</b></p><p><b>  }</b></p><p><b>  六、得意之處:</b></p><p>

30、  最得意的地方還是中間那個(gè)if語句的運(yùn)用,能充分發(fā)揮萬年歷的便捷性和實(shí)用性,而且與平時(shí)的課堂知識(shí)銜接的非常得當(dāng)。</p><p><b>  第二篇:計(jì)算器</b></p><p>  一、名稱:簡(jiǎn)單的四則運(yùn)算計(jì)算器</p><p>  二、主題及設(shè)計(jì)目的:</p><p>  本課題的內(nèi)容是設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器。&l

31、t;/p><p>  通過對(duì)程序的設(shè)計(jì)可以對(duì)C程序中的函數(shù),循環(huán),數(shù)組,調(diào)用等內(nèi)容有更深入的理解和運(yùn)用。</p><p>  設(shè)計(jì)程序的過程中,通過已有知識(shí)的運(yùn)用和思考,能夠做到對(duì)知識(shí)的整體理解。通過解決設(shè)計(jì)中遇到的問題,能夠提高設(shè)計(jì)程序的熟練度,并對(duì)知識(shí)有鞏固作用。</p><p><b>  三、程序簡(jiǎn)介: </b></p>&l

32、t;p>  1、基本結(jié)構(gòu)及內(nèi)容:</p><p>  程序中完成+、-、*、/的混合運(yùn)算,使用者可以根據(jù)個(gè)人的需要在示后輸入相應(yīng)的代碼,然后進(jìn)行相應(yīng)的運(yùn)算,最后在運(yùn)算結(jié)果中查找相應(yīng)的結(jié)果即可。</p><p>  數(shù)學(xué)計(jì)算模塊中,根據(jù)用戶選擇的運(yùn)算類型和運(yùn)算符號(hào),自動(dòng)調(diào)用相應(yīng)的函數(shù),運(yùn)行相關(guān)程序,進(jìn)行計(jì)算,并顯示結(jié)果。</p><p><b>  2

33、、運(yùn)行環(huán)境:.C</b></p><p><b>  3、運(yùn)行流程:</b></p><p><b>  四、運(yùn)行界面介紹:</b></p><p><b>  五、源代碼:</b></p><p>  #include<stdio.h> </p&

34、gt;<p>  #include<ctype.h> </p><p>  #include<stdlib.h> </p><p>  char token[61]; /*存放表達(dá)式字符串的數(shù)組*/ </p><p><b>  int n=0; </b></p><p>  voi

35、d error(void) /*報(bào)告錯(cuò)誤函數(shù)*/ </p><p><b>  { </b></p><p>  printf("ERROR!\n"); </p><p><b>  exit(1); </b></p><p><b>  } </b><

36、;/p><p>  void match(char expected) /*檢查字符匹配的函數(shù)*/ </p><p><b>  { </b></p><p>  if(token[n]==expected) </p><p>  token[++n]=getchar(); </p><p>  el

37、se error(); </p><p><b>  } </b></p><p>  double term(void); /*計(jì)算乘除的函數(shù)*/ </p><p>  double factor(void); /*處理括號(hào)和數(shù)字的函數(shù)*/ </p><p>  double exp(void) /*計(jì)算加減的函數(shù)*/

38、 </p><p><b>  { </b></p><p>  double temp=term(); </p><p>  while((token[n]=='+')||(token[n]=='-')) </p><p>  switch(token[n]) </p>&

39、lt;p><b>  { </b></p><p>  case'+':match('+'); </p><p>  temp+=term(); </p><p><b>  break; </b></p><p>  case'-':match

40、('-'); </p><p>  temp-=term(); </p><p><b>  break; </b></p><p><b>  } </b></p><p>  return temp; </p><p><b>  } </

41、b></p><p>  double term(void) </p><p><b>  { </b></p><p>  double div; </p><p>  double temp=factor(); </p><p>  while((token[n]=='*'

42、;)||(token[n]=='/')) </p><p>  switch(token[n]) </p><p><b>  { </b></p><p>  case'*':match('*'); </p><p>  temp*=factor(); </p>

43、;<p><b>  break; </b></p><p>  case'/':match('/'); </p><p>  div=factor(); </p><p>  if(div==0) /*處理除數(shù)為零的情況*/ </p><p><b>  { &l

44、t;/b></p><p>  printf("The divisor is zero!\n"); </p><p><b>  exit(1); </b></p><p><b>  } </b></p><p>  temp/=div; </p><

45、p><b>  break; </b></p><p><b>  } </b></p><p>  return temp; </p><p><b>  } </b></p><p>  double factor(void) </p><p>

46、;<b>  { </b></p><p>  double temp; </p><p>  char number[61]; </p><p><b>  int i=0; </b></p><p>  if(token[n]=='(') </p><p>

47、;<b>  { </b></p><p>  match('('); </p><p>  temp=exp(); </p><p>  match(')'); </p><p><b>  } </b></p><p>  else if(

48、isdigit(token[n])||token[n]=='.') </p><p><b>  { </b></p><p>  while(isdigit(token[n])||token[n]=='.') /*將字符串轉(zhuǎn)換為浮點(diǎn)數(shù)*/ </p><p><b>  { </b><

49、/p><p>  number[i++]=token[n++]; </p><p>  token[n]=getchar(); </p><p><b>  } </b></p><p>  number[i]='\0'; </p><p>  temp=atof(number); &

50、lt;/p><p><b>  } </b></p><p>  else error(); </p><p>  return temp; </p><p><b>  } </b></p><p><b>  main() </b></p>

51、<p><b>  { </b></p><p>  double result; </p><p>  FILE *data=fopen("61590_4.dat","at"); </p><p>  if(data==NULL) </p><p>  data=fo

52、pen("61590_4.dat","wt"); </p><p>  if(data==NULL) </p><p>  return 0; </p><p>  token[n]=getchar(); </p><p>  result=exp(); </p><p>  i

53、f(token[n]=='\n') </p><p><b>  { </b></p><p>  token[n]='\0'; </p><p>  printf("%s=%g\n",token,result); </p><p>  fprintf(data,&qu

54、ot;%s=%g\n",token,result); </p><p><b>  } </b></p><p>  else error(); </p><p>  fclose(data); </p><p>  return 0; </p><p><b>  getch

55、(); </b></p><p><b>  }</b></p><p><b>  六、得意之處:</b></p><p>  最得意之處就是設(shè)計(jì)的這個(gè)簡(jiǎn)易計(jì)算器既簡(jiǎn)單又實(shí)用,沒有一絲復(fù)雜的花樣,整體一切都以簡(jiǎn)單為主題,充分發(fā)揮了計(jì)算器的本質(zhì)作用。</p><p><b> 

56、 第三篇:總結(jié)</b></p><p><b>  設(shè)計(jì)的不足之處:</b></p><p>  最大的問題就是設(shè)計(jì)的過于簡(jiǎn)單了就缺乏了新意,大都都千篇一律了,而稍微復(fù)雜些了又設(shè)計(jì)不出來,技術(shù)水平達(dá)不到了,這就是最大的問題了。</p><p><b>  二、感受:</b></p><p&g

57、t;  經(jīng)歷了這次課程設(shè)計(jì)的設(shè)計(jì)和制作的整個(gè)過程,我才發(fā)現(xiàn)我知識(shí)的貧乏和知識(shí)面的狹窄,原本以為很容易就可以搞定,可是到了后來實(shí)際的操作的時(shí)候卻是根本就束手無策,這次作的這一個(gè)設(shè)計(jì),使我對(duì)C語言有了更深的了解,使用起來也更加的熟練,原來有一些不知道和不熟悉的函數(shù),我學(xué)會(huì)用了。我這一次找了不少的資料,找專業(yè)的書籍、上網(wǎng)找各方面的資料,也使我學(xué)到了一些書本中學(xué)不到的知識(shí),讓我長(zhǎng)了見識(shí)。同時(shí)我們同學(xué)之間也互相的探討,也增進(jìn)了我們同學(xué)之間的感情。

溫馨提示

  • 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. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論