2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩22頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  課程設(shè)計(jì)(論文)任務(wù)書</p><p>  軟件  學(xué)院   軟件工程  專業(yè)  3  班 </p><p>  一、課程設(shè)計(jì)(論文)題目  表達(dá)式求值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)   </p><p>  二、課程設(shè)計(jì)(論文)工作自 2014 年 12 月 22 日至 2014 年

2、12 月 26 日。</p><p>  三、課程設(shè)計(jì)(論文) 地點(diǎn): 創(chuàng)新大樓實(shí)訓(xùn)中心4樓 </p><p>  四、課程設(shè)計(jì)(論文)內(nèi)容要求:</p><p>  1.本課程設(shè)計(jì)的目的</p><p>  1) 使學(xué)生增進(jìn)對數(shù)據(jù)結(jié)構(gòu)各理論知識的熟練程度, </p>

3、<p>  2) 加強(qiáng)算法設(shè)計(jì)的能力,為以后的數(shù)據(jù)庫原理等課程的學(xué)習(xí)打下良好基</p><p><b>  礎(chǔ)。, </b></p><p>  2.課程設(shè)計(jì)的任務(wù)及要求</p><p>  25.表達(dá)式求值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)</p><p>  問題描述: 利用所學(xué)知識,建立一個(gè)試題庫,供小學(xué)生

4、選題。 </p><p>  基本要求: </p><p>  (1)建立試題庫文件,隨機(jī)產(chǎn)生n個(gè)題目;

5、 </p><p>  (2)題目涉及加減乘除,帶括號的混合運(yùn)算; </p><p>  (3)隨時(shí)可以退出; </p><p>  (4)保留歷史分?jǐn)?shù),能回顧歷史,給出與歷史分?jǐn)?shù)比較后

6、的評價(jià)。 </p><p>  3)課程設(shè)計(jì)論文編寫要求</p><p>  1)詳細(xì)清晰地描述個(gè)人的課程設(shè)計(jì)工作;</p><p>  2)要按照本模板的規(guī)格打印謄寫課程報(bào)告;</p><p>  3)課設(shè)報(bào)告包括目錄、內(nèi)容提要、正文、課程設(shè)計(jì)體

7、會、參考文獻(xiàn)、附</p><p><b>  錄等;</b></p><p>  4)課程報(bào)告裝訂按學(xué)校的統(tǒng)一要求完成</p><p><b>  4)評分標(biāo)準(zhǔn): </b></p><p>  1)完成原理分析:20分; </p><p>  2)完成設(shè)計(jì)過程:40分; &l

8、t;/p><p>  3)完成代碼分析:20分。</p><p>  4)個(gè)人創(chuàng)新工作:20分。</p><p>  學(xué)生簽名: </p><p>  2014年12月 26 日</p><p>  課程設(shè)計(jì)(論文)評審意見</p><p> ?。?)原理分析 (

9、20分):優(yōu)(?。?、良(?。⒅校ā。?、一般(?。⒉睿ā。?; </p><p>  (2)設(shè)計(jì)分析 ?。?0分):優(yōu)(?。⒘迹ā。?、中( )、一般(?。?、差( ); </p><p> ?。?)程序流程  (20分):優(yōu)(?。⒘迹ā。⒅校ā。⒁话悖ā。⒉睿ā。?lt;/p><p> ?。?)代碼分析 ?。?0分):優(yōu)(?。⒘迹ā。?、中( )、一般( )、

10、差( );</p><p> ?。?)個(gè)人創(chuàng)新 ?。?0分):優(yōu)( )、良(?。?、中(?。⒁话悖ā。?、差(?。?lt;/p><p> ?。?)格式規(guī)范性及考勤是否降等級:是( )、否(?。?lt;/p><p>  評閱人:      職稱: 講師 </p><p>  2010年 12月28 日</p>

11、<p><b>  目 錄</b></p><p>  目 錄- 1 -</p><p>  正 文- 2 -</p><p>  一、需求分析- 2 -</p><p>  二、個(gè)人工作- 3 -</p><p>  三、概要設(shè)計(jì)- 4 -</p><

12、;p>  四、源程序- 5 -</p><p>  五、程序結(jié)果- 17 -</p><p>  課程設(shè)計(jì)體會- 21 -</p><p><b>  正 文</b></p><p><b>  一、需求分析</b></p><p>  該題目的核心是利用棧這種

13、數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)一個(gè)加減乘除以及帶括弧的混合數(shù)學(xué)表達(dá)式的計(jì)算。其次是利用文件來保存和讀寫試題庫、每次做題的成績和以往成績的平均值。</p><p>  對于數(shù)學(xué)表達(dá)式的計(jì)算,可以設(shè)置一個(gè)運(yùn)算符棧和一個(gè)數(shù)字棧,分別來保存運(yùn)算符、數(shù)字或者中間計(jì)算得到的結(jié)果。將整個(gè)表達(dá)式看做一個(gè)字符串,從開頭依次判斷每個(gè)字符是運(yùn)算符還是數(shù)字,若是運(yùn)算符,則根據(jù)運(yùn)算符優(yōu)先級來確定是將其壓棧還是彈棧進(jìn)行計(jì)算;若是數(shù)字,則先將其轉(zhuǎn)化并計(jì)入一個(gè)

14、臨時(shí)int型變量中,看下一個(gè)字符是否為運(yùn)算符棧,若是,則將臨時(shí)變量壓進(jìn)數(shù)字棧,否則讀取下一個(gè)數(shù)字字符并進(jìn)行相關(guān)處理后累加到臨時(shí)變量中,直到下一個(gè)字符為運(yùn)算符,將臨時(shí)變量壓進(jìn)數(shù)字棧。最后,當(dāng)字符為"="時(shí),結(jié)束計(jì)算,得到計(jì)算結(jié)果。</p><p>  對于試題庫,第一次運(yùn)行程序時(shí)需要用戶輸入若干試題來建立試題庫文件,再次運(yùn)行時(shí)磁盤上已經(jīng)存在試題庫文件,故不需再次建立試題庫,直接讀取文件即可。然后

15、從試題庫中通過隨機(jī)數(shù)函數(shù)隨機(jī)抽取若干個(gè)試題供用戶來做測試。</p><p>  測試過程中可即時(shí)跟蹤判斷用戶所給答案是否正確,并給出相關(guān)提示。測試完畢后給出本次測試得分,對得分進(jìn)行評價(jià)并將得分存到磁盤文件上。</p><p>  用戶可隨時(shí)查看成績的歷史記錄以及其平均成績,可隨時(shí)選擇退出程序。</p><p><b>  個(gè)人工作</b><

16、;/p><p>  本次的課程數(shù)據(jù)我是用棧來實(shí)現(xiàn)表達(dá)式求解,利用棧求表達(dá)式的值,可供小學(xué)生作業(yè),并能給出分?jǐn)?shù)。</p><p>  要求:建立試題庫文件,隨機(jī)產(chǎn)生n個(gè)題目;題目涉及加減乘除,帶括弧的混合運(yùn)算;隨時(shí)可以退出;保留歷史分?jǐn)?shù),能回顧歷史,給出與歷史分?jǐn)?shù)比較后的評價(jià)。我利用文件來保存和讀寫試題庫,且要運(yùn)用磁盤文件。</p><p>  數(shù)學(xué)表達(dá)式的計(jì)算,我設(shè)置了

17、一個(gè)運(yùn)算符棧與一個(gè)數(shù)字棧,分別來保存運(yùn)算符、數(shù)字或者中間計(jì)算得到的結(jié)果。將表達(dá)式看成一個(gè)字符串,從而分種計(jì)算。</p><p><b>  概要設(shè)計(jì)</b></p><p><b>  四、源程序</b></p><p>  //此程序所有文件均保存在了G盤根目錄下,實(shí)際調(diào)試運(yùn)行時(shí),可根據(jù)實(shí)際情況更改存</p>

18、<p><b>  //儲路徑</b></p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p><p>  #include <time.h></p><p>  int N; //定義全局變量,表示

19、試題庫試題數(shù)量</p><p>  typedef struct</p><p><b>  {</b></p><p>  char a[100];</p><p>  int result;</p><p>  }Shiti; //試題數(shù)據(jù)類型</p><p>  t

20、ypedef struct</p><p><b>  {</b></p><p>  int *base,*top;</p><p><b>  int size;</b></p><p>  }Num; //數(shù)字棧</p><p>  typedef struct<

21、/p><p><b>  {</b></p><p>  char *base,*top;</p><p><b>  int size;</b></p><p>  }Oper; //運(yùn)算符棧</p><p>  int NumInitStack(Num *S1) //構(gòu)造

22、數(shù)字棧</p><p><b>  {</b></p><p>  S1->base=(int *)malloc(100*sizeof(int));</p><p>  if(!S1->base)</p><p><b>  {</b></p><p>  pri

23、ntf("申請內(nèi)存失敗!\n");</p><p><b>  return 0;</b></p><p><b>  }</b></p><p>  S1->top=S1->base;</p><p>  S1->size=100;</p>&l

24、t;p><b>  return 1;</b></p><p><b>  }</b></p><p>  int OperInitStack(Oper *S2) //構(gòu)造運(yùn)算符棧</p><p><b>  {</b></p><p>  S2->base=(c

25、har *)malloc(100*sizeof(char));</p><p>  if(!S2->base)</p><p><b>  {</b></p><p>  printf("申請內(nèi)存失敗!\n");</p><p><b>  return 0;</b><

26、;/p><p><b>  }</b></p><p>  S2->top=S2->base;</p><p>  S2->size=100;</p><p><b>  return 1;</b></p><p><b>  }</b>&

27、lt;/p><p>  int NumGetTop(Num *S1) //得到數(shù)字棧棧頂元素</p><p><b>  {</b></p><p><b>  int e1;</b></p><p>  if((*S1).top==(*S1).base)</p><p>&l

28、t;b>  return 0;</b></p><p>  e1=*((*S1).top-1);</p><p>  return e1;</p><p><b>  }</b></p><p>  char OperGetTop(Oper *S2) //得到運(yùn)算符棧棧頂元素</p>&

29、lt;p><b>  {</b></p><p><b>  char e2;</b></p><p>  if((*S2).top==(*S2).base)</p><p><b>  return 0;</b></p><p>  e2=*((*S2).top-1);

30、</p><p>  return e2;</p><p><b>  }</b></p><p>  void NumPush(Num *S1,int e1) //數(shù)字棧壓棧</p><p><b>  {</b></p><p>  *(*S1).top++=e1;&l

31、t;/p><p><b>  }</b></p><p>  void OperPush(Oper *S2,char e2) //運(yùn)算符棧壓棧</p><p><b>  {</b></p><p>  *(*S2).top++=e2;</p><p><b>  }

32、</b></p><p>  int NumPop(Num *S1) //數(shù)字棧彈棧</p><p><b>  {</b></p><p><b>  int e1;</b></p><p>  if((*S1).top==(*S1).base)</p><p&g

33、t;<b>  return 0;</b></p><p>  e1=*--(*S1).top;</p><p>  return e1;</p><p><b>  }</b></p><p>  char OperPop(Oper *S2) //運(yùn)算符棧彈棧</p><p&

34、gt;<b>  {</b></p><p><b>  char e2;</b></p><p>  if((*S2).top==(*S2).base)</p><p><b>  return 0;</b></p><p>  e2=*--(*S2).top;</p&

35、gt;<p>  return e2;</p><p><b>  }</b></p><p>  char Precede(char a,char b) //判斷運(yùn)算符優(yōu)先級</p><p><b>  {</b></p><p><b>  int i,j;</b

36、></p><p>  char Table[8][8]={{' ','+','-','*','/','(',')','='},</p><p>  {'+','>','>','<&#

37、39;,'<','<','>','>'},</p><p>  {'-','>','>','<','<','<','>','>'},</p>&

38、lt;p>  {'*','>','>','>','>','<','>','>'},</p><p>  {'/','>','>','>','>&

39、#39;,'<','>','>'},</p><p>  {'(','<','<','<','<','<','=',' '},</p><p>  {')

40、9;,'>','>','>','>',' ','>','>'},</p><p>  {'=','<','<','<','<','<',

41、9; ','='}}; //優(yōu)先級表格</p><p>  for(i=0;i<8;i++)</p><p>  if(Table[0][i]==a) //縱坐標(biāo)尋找</p><p><b>  break;</b></p><p>  for(j=0;j<8;j++) //橫坐

42、標(biāo)尋找</p><p>  if(Table[j][0]==b)</p><p><b>  break;</b></p><p>  return Table[j][i];</p><p><b>  }</b></p><p>  int Operate(int a,ch

43、ar theta,int b) //計(jì)算二元表達(dá)式的值</p><p><b>  {</b></p><p><b>  int c;</b></p><p>  if(theta=='+')</p><p><b>  c=a+b;</b></p&g

44、t;<p>  else if(theta=='-')</p><p><b>  c=a-b;</b></p><p>  else if(theta=='*')</p><p><b>  c=a*b;</b></p><p><b>  

45、else</b></p><p><b>  c=a/b;</b></p><p><b>  return c;</b></p><p><b>  }</b></p><p>  int IsOper(char ch) //判斷字符ch是否為運(yùn)算符</p

46、><p><b>  {</b></p><p>  char ptr[10]={'+','-','*','/','(',')','='};</p><p><b>  int i;</b></p>&

47、lt;p>  for(i=0;i<7;i++)</p><p><b>  {</b></p><p>  if(ch==ptr[i])</p><p><b>  return 1;</b></p><p><b>  }</b></p><p

48、><b>  return 0;</b></p><p><b>  }</b></p><p>  int Result(char a[],Num *num,Oper *oper) //計(jì)算表達(dá)式的結(jié)果</p><p><b>  {</b></p><p>  ch

49、ar theta;</p><p>  int b,d,k=0,i=0,j=0,num2=0;</p><p>  NumInitStack(num); //構(gòu)造數(shù)字棧</p><p>  OperInitStack(oper); //構(gòu)造運(yùn)算符棧</p><p>  OperPush(oper,'='); //將“=”

50、壓到棧底</p><p>  while(a[i]!='='||OperGetTop(oper)!='=')</p><p><b>  {</b></p><p>  //對表達(dá)式a進(jìn)行計(jì)算</p><p>  if(a[i]>='0'&&a[i]&

51、lt;='9')</p><p><b>  {</b></p><p><b>  //字符是數(shù)字</b></p><p><b>  k++;</b></p><p><b>  if(k<=j)</b></p>&

52、lt;p><b>  {</b></p><p>  num2=a[i]-48;</p><p><b>  i++;</b></p><p><b>  }</b></p><p><b>  if(k>j)</b></p>&

53、lt;p><b>  {</b></p><p>  num2=num2*10+(a[i]-48);</p><p><b>  k=j=0;</b></p><p><b>  i++;</b></p><p><b>  }</b></p&

54、gt;<p>  if(!IsOper(a[i]))</p><p><b>  k++;</b></p><p>  if(k==j) //如果k等于j,說明下一個(gè)字符是運(yùn)算符,即數(shù)字字符結(jié)束,壓進(jìn)數(shù)字棧</p><p>  NumPush(num,num2);</p><p><b>  }

55、</b></p><p>  else if(IsOper(a[i]))</p><p><b>  {</b></p><p><b>  //字符是運(yùn)算符</b></p><p>  switch(Precede(a[i],OperGetTop(oper)))</p>

56、<p><b>  {</b></p><p>  //該運(yùn)算符和棧頂運(yùn)算符進(jìn)行優(yōu)先級比較并做相關(guān)處理</p><p><b>  case '<':</b></p><p>  OperPush(oper,a[i++]);</p><p>  if(a[i]!=&#

57、39;('&&a[i]!=')')</p><p><b>  j++;</b></p><p><b>  break;</b></p><p><b>  case '=':</b></p><p>  OperPop

58、(oper);</p><p><b>  i++;</b></p><p><b>  break;</b></p><p><b>  case '>':</b></p><p>  theta=OperPop(oper); //運(yùn)算符棧彈棧<

59、/p><p>  d=NumPop(num); //數(shù)字棧彈棧</p><p>  b=NumPop(num);</p><p>  NumPush(num,Operate(b,theta,d)); //計(jì)算結(jié)果并壓棧</p><p><b>  break;</b></p><p><b&

60、gt;  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  return (NumGetTop(num)); //返回最終計(jì)算結(jié)果</p><p><b>  }</b></p><

61、p>  int Buildshitiku() //建立試題庫</p><p><b>  {</b></p><p><b>  int i;</b></p><p><b>  FILE *fp;</b></p><p><b>  Shiti t;<

62、/b></p><p>  if(!(fp=fopen("G:\\shitiku.txt","w")))</p><p><b>  {</b></p><p>  printf("無法建立試題庫文件!\n");</p><p><b>  re

63、turn 0;</b></p><p><b>  }</b></p><p>  printf("輸入要建立的試題庫的試題數(shù)目: ");</p><p>  scanf("%d",&N);</p><p>  fprintf(fp,"%d\n&quo

64、t;,N);</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  printf("輸入第%d道題目:\n",i+1);</p><p>  scanf("%s",t.a);</p><p>

65、  fprintf(fp,"%s\n",t.a); //將鍵盤輸入的表達(dá)式寫進(jìn)文件</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  return 1;</b></p><p><b>  }</b&

66、gt;</p><p>  void Xuanti(int n,int a[]) //隨機(jī)選取n個(gè)題目,將題號保存在數(shù)組a中</p><p><b>  {</b></p><p>  srand((int)time(0));</p><p>  int i,j,t;</p><p>  a[0

67、]=rand()%N; //產(chǎn)生0-N之間的隨機(jī)數(shù)并記錄</p><p>  for(i=1;i<n;i++)</p><p><b>  {</b></p><p>  t=rand()%N;</p><p>  for(j=0;j<i;j++)</p><p><b>

68、  {</b></p><p>  if(a[j]==t)</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  if(j==i)</b></p><p><b>  

69、a[i]=t;</b></p><p><b>  else</b></p><p><b>  i--;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  vo

70、id Avescore() //求平均成績</p><p><b>  {</b></p><p>  FILE *fp1,*fp2;</p><p>  int sum=0,i=0,s,a;</p><p>  if(!(fp1=fopen("G:\\score.txt","r"

71、;)))</p><p><b>  {</b></p><p>  printf("無法打開成績信息文件!\n");</p><p>  exit (-1);</p><p><b>  }</b></p><p>  while(!feof(fp1))

72、 //讀出所有的歷史成績并求和</p><p><b>  {</b></p><p>  fscanf(fp1,"%d",&s);</p><p><b>  sum+=s;</b></p><p>  i++; //記錄成績個(gè)數(shù)</p><p&

73、gt;<b>  }</b></p><p>  fclose(fp1);</p><p><b>  a=sum/i;</b></p><p>  if(!(fp2=fopen("G:\\average.txt","w")))</p><p><b&g

74、t;  {</b></p><p>  printf("無法創(chuàng)建或者無法打開平均成績文件!\n");</p><p>  exit (-1);</p><p><b>  }</b></p><p>  fprintf(fp2,"%d",a); //將平均值寫入文件中

75、</p><p>  fclose(fp2);</p><p><b>  }</b></p><p>  void Zuoti(Shiti a[]) //做題</p><p><b>  {</b></p><p>  system("cls");&l

76、t;/p><p>  printf("\t\t******好好學(xué)習(xí)天天向上******\n\n");</p><p>  int n,i,r,k=0,score,ave;</p><p>  FILE *fp,*fp1;</p><p>  printf("請輸入要做幾道題:");</p>&

77、lt;p>  scanf("%d",&n);</p><p>  int t[n]; //在VC++6.0編譯環(huán)境下該條語句編譯通不過,可改為定義一個(gè)足夠大的數(shù)組,例如int t[100];</p><p>  Xuanti(n,t); //調(diào)用Xuanti函數(shù)從試題庫中隨機(jī)抽取n道題目</p><p>  for(i=0;i&

78、lt;n;i++)</p><p><b>  {</b></p><p>  //做題并判斷答案是否正確</p><p>  printf("\n第%d道題:\n",i+1);</p><p>  printf("%s",a[t[i]].a);</p><p&

79、gt;  scanf("%d",&r);</p><p>  if(a[t[i]].result==r)</p><p><b>  {</b></p><p><b>  k++;</b></p><p>  printf("答案正確!\n");&l

80、t;/p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("答案錯(cuò)誤!正確答案為:%d\n",a[t[i]].result);</p><

81、p><b>  }</b></p><p><b>  }</b></p><p>  score=100*k/n;</p><p>  printf("\n本次得分:%d\n",score); //輸出本次做題所得的分?jǐn)?shù)并進(jìn)行評價(jià)</p><p>  if(score&

82、gt;=90)</p><p>  printf("優(yōu)秀,繼續(xù)保持!\n");</p><p>  else if(score>=80)</p><p>  printf("良好,還需努力!\n");</p><p>  else if(score>=70)</p><p

83、>  printf("一般,繼續(xù)加油!\n");</p><p>  else if(score>=60)</p><p>  printf("及格,多多努力!\n");</p><p><b>  else</b></p><p>  printf("糟糕,

84、不及格,該好好學(xué)習(xí)了!\n");</p><p>  if(!(fp=fopen("G:\\score.txt","a")))</p><p><b>  {</b></p><p>  printf("無法建立或者無法打開成績信息文件!\n");</p>&l

85、t;p>  exit (-1);</p><p><b>  }</b></p><p>  fprintf(fp," %d",score); //將本次成績寫入文件</p><p>  fclose(fp);</p><p>  Avescore();</p><p>

86、;  if(!(fp1=fopen("G:\\average.txt","r")))</p><p><b>  {</b></p><p>  printf("無法創(chuàng)建或者無法打開平均成績文件!\n");</p><p>  exit (-1);</p><p&g

87、t;<b>  }</b></p><p>  fscanf(fp1,"%d",&ave); //讀出之前成績的平均成績</p><p>  if(score>ave)</p><p>  printf("\n成績較以前相比有所進(jìn)步,繼續(xù)努力!\n");</p><p&

88、gt;  else if(score<ave)</p><p>  printf("\n成績較以前相比退步了,要多多練習(xí),不要?dú)怵H?。n");</p><p><b>  else</b></p><p>  printf("\n成績與以前持平\n");</p><p>&

89、lt;b>  }</b></p><p>  void History() //輸出歷史成績</p><p><b>  {</b></p><p>  FILE *fp,*fp1;</p><p><b>  int s,a;</b></p><p> 

90、 if(!(fp=fopen("G:\\score.txt","r")))</p><p><b>  {</b></p><p>  printf("無法打開成績信息文件!\n");</p><p>  exit (-1);</p><p><b>

91、  }</b></p><p>  printf("歷史成績顯示如下:\n");</p><p>  while(!feof(fp))</p><p><b>  {</b></p><p>  fscanf(fp,"%d",&s);</p>&l

92、t;p>  printf("%d ",s);</p><p><b>  }</b></p><p>  fclose(fp);</p><p>  printf("\n");</p><p>  if(!(fp1=fopen("G:\\average.txt&qu

93、ot;,"r")))</p><p><b>  {</b></p><p>  printf("無法打開平均成績文件!\n");</p><p>  exit (-1);</p><p><b>  }</b></p><p>  f

94、scanf(fp1,"%d",&a);</p><p>  printf("平均為:%d\n\n",a);</p><p><b>  }</b></p><p>  int menu() //菜單函數(shù)</p><p><b>  {</b><

95、/p><p><b>  int a;</b></p><p><b>  do</b></p><p><b>  {</b></p><p>  system("cls");</p><p>  printf("\t\t**

96、****好好學(xué)習(xí)天天向上******\n\n");</p><p>  printf("\t\t 1.做題\n");</p><p>  printf("\t\t 2.查看歷史成績\n");</p><p>  printf("\t\t 3.退出系統(tǒng)\n\n");&l

97、t;/p><p>  printf("\t\t****************************\n");</p><p>  printf("\t\t請選擇:");</p><p>  scanf("%d",&a);</p><p>  }while(a<1||a&

98、gt;3);</p><p><b>  return a;</b></p><p><b>  }</b></p><p>  int main()</p><p><b>  {</b></p><p><b>  FILE *fp;<

99、;/b></p><p><b>  int i;</b></p><p><b>  char c;</b></p><p>  Shiti s[1000];</p><p><b>  Num num;</b></p><p>  Oper o

100、per;</p><p>  if(!(fp=fopen("G:\\shitiku.txt","r"))) //如果試題庫文件不存在,則建立試題庫</p><p><b>  {</b></p><p>  printf("\t******歡迎使用******\n\n");</

101、p><p>  printf("\t程序第一次運(yùn)行,尚無試題庫,請先建立試題庫!\n\n\t");</p><p>  system("pause");</p><p>  if(Buildshitiku())</p><p>  printf("成功建立試題庫!\n");</p&

102、gt;<p>  system("pause");</p><p>  fp=fopen("G:\\shitiku.txt","r");</p><p><b>  }</b></p><p>  fscanf(fp,"%d",&N); //

103、將試題庫文件中的信息讀到內(nèi)存中</p><p>  for(i=0;i<N;i++)</p><p><b>  {</b></p><p>  fscanf(fp,"%s",s[i].a);</p><p>  s[i].result=Result(s[i].a,&num,&o

104、per);</p><p><b>  }</b></p><p>  fclose(fp);</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  switch(menu())</p&g

105、t;<p><b>  {</b></p><p><b>  case 1:</b></p><p><b>  do</b></p><p><b>  {</b></p><p><b>  Zuoti(s);</b&g

106、t;</p><p>  printf("\n是否繼續(xù)做題?y-是,n-否:");</p><p>  getchar();</p><p>  scanf("%c",&c);</p><p>  }while(c!='n'&&c!='N');&l

107、t;/p><p><b>  break;</b></p><p><b>  case 2:</b></p><p>  History(); //輸出成績</p><p>  system("pause");</p><p><b>  bre

108、ak;</b></p><p><b>  case 3:</b></p><p>  printf("\n\t歡迎使用,再見!\n\n\t");</p><p>  system("pause");</p><p>  exit (0); //退出系統(tǒng)</p&

109、gt;<p><b>  }</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p>  400. }</p><p><b>  五、程序結(jié)果</b></p>

110、;<p>  首次運(yùn)行程序時(shí)如圖1。</p><p><b>  圖1</b></p><p>  按任意鍵以建立試題庫,如圖2。</p><p><b>  圖2</b></p><p>  依次輸入所要建立的試題數(shù)目n和n個(gè)表達(dá)式,現(xiàn)以輸入十個(gè)為例,實(shí)際可多輸入一些,如圖3。

111、</p><p><b>  圖3</b></p><p>  再次按任意鍵即可進(jìn)入系統(tǒng)正常進(jìn)行作業(yè)使用,見圖4,另外,從第二次使用本系統(tǒng)開始,每次剛打開后的界面也為圖4。</p><p><b>  圖4</b></p><p>  之后輸入1即可做題,根據(jù)提示輸入要做多少題n,然后屏幕上會依次

112、出現(xiàn)n道題,等待用戶給出結(jié)果。用戶輸入結(jié)果后即時(shí)給出判定,對答錯(cuò)的題給出正確答案,之后給出這次做題所得分?jǐn)?shù)(百分制),并給出與以往成績的比較(第一次由于之前不存在成績記錄,于是與自己相比),見圖5。</p><p><b>  圖5</b></p><p>  選擇是否繼續(xù)做題,這里選擇“是”,再做一組題,輸入"y",見圖7(下頁)。</p

113、><p>  可以看出這一次比上次進(jìn)步了。輸入"n",結(jié)束做題,返回圖4所示界面。輸入2查看成績歷史記錄,見圖6。</p><p><b>  圖6</b></p><p>  按任意鍵后返回圖4界面,輸入3退出系統(tǒng),見圖8。</p><p><b>  圖7</b></p

114、><p><b>  圖8</b></p><p>  按任意鍵后即推出系統(tǒng)。以后再運(yùn)行該程序時(shí),將從圖4界面開始。</p><p><b>  課程設(shè)計(jì)體會</b></p><p>  本次課程設(shè)計(jì)是制作一個(gè)試題庫供小學(xué)生選題,我是通過棧來實(shí)現(xiàn)表達(dá)式求值的,起初對于表達(dá)式求值,我不知如何求值。而后參考

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論