算數(shù)練習完美課程設(shè)計報告_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計</b></p><p>  2010 ~ 2011學年第二學期</p><p>  設(shè)計題目 算術(shù)練習 </p><p>  院(系) 計算機科學與信息工程 </p><

2、;p>  專 業(yè) 計算機科學與技術(shù) </p><p>  班 級 xxxxxxxx 學號 xxxxxxxxxx </p><p>  學生姓名 XXX </p><p>  設(shè)計時間 2011年6月27日——2010年7月6日

3、 </p><p>  指導(dǎo)教師 </p><p>  提交日期 2010年7月6日 </p><p><b>  課程設(shè)計任務(wù)書</b></p><p>&

4、lt;b>  目錄</b></p><p><b>  1概述4</b></p><p>  1.1課程設(shè)計目的4</p><p>  1.2課程設(shè)計要求4</p><p>  1.3設(shè)計要求具體說明4</p><p>  2詳細設(shè)計說明4</p>

5、<p>  2.1總體設(shè)計方案4</p><p>  2.2程序描述5</p><p>  2.3功能結(jié)構(gòu)5</p><p>  2.4主要模塊描述6</p><p>  2.5采用的算法11</p><p><b>  3程序測試12</b></p&g

6、t;<p>  4課程設(shè)計總結(jié)15</p><p>  5軟件使用說明16</p><p>  6附錄(參考文獻,原代碼:)16</p><p><b>  概述</b></p><p><b>  課程設(shè)計目的</b></p><p>  綜合理解

7、和掌握關(guān)于C語言的基本知識,做到融會貫通;</p><p>  掌握C語言編程和程序調(diào)試的基本技能,做到舉一反三;</p><p>  憑借已有的C語言知識獨立編寫小程序,做到學以致用;</p><p>  根據(jù)實際遇到的問題查找資料詢問他人,做到不恥下問;</p><p>  細致書寫程序設(shè)計說明及相關(guān)書面材料,做到有條有理;</p&

8、gt;<p><b>  課程設(shè)計要求</b></p><p>  仔細審題分析課程設(shè)計題目的要求;</p><p>  規(guī)劃大致框架并寫出詳細設(shè)計說明;</p><p>  細化內(nèi)容編寫代碼逐漸完成該程序;</p><p>  填補漏洞簡要操作美化界面并調(diào)試;</p><p>  

9、完成程序?qū)懻n程設(shè)計報告上交材料; </p><p><b>  設(shè)計要求具體說明</b></p><p>  在指導(dǎo)書提供的課程設(shè)計題目中選擇一題或自選題目(需經(jīng)指導(dǎo)教師認可);</p><p>  每個題目限一人完成,題目選定后不可更換;</p><p>  用戶提供的主操作界面應(yīng)該方便用戶的操作。</p>

10、<p>  最后提交的課程設(shè)計成果包括:</p><p>  課程設(shè)計報告電子稿;</p><p><b>  源程序文件;</b></p><p><b>  可執(zhí)行程序文件。</b></p><p><b>  詳細設(shè)計說明</b></p>&l

11、t;p>  見附表:XXX的詳細設(shè)計說明.doc</p><p><b>  總體設(shè)計方案</b></p><p>  本系統(tǒng)首先設(shè)計出了主函數(shù),然后根據(jù)去要實現(xiàn)的功能分別設(shè)計了練習,測驗,查詢成績,設(shè)置等功能的子函數(shù)。</p><p>  在練習的函數(shù)設(shè)計過程中運用了循環(huán)、隨即數(shù)的函數(shù)知識,使得四則運算式的題目以及運算符號可以隨即變化,

12、每題答者輸入計算答案后回車,自動出現(xiàn)這道題目做對與否的判斷、正確答案、正確題數(shù)和正確率。此練習模式能不斷出題直到答者不想輸出“110110”作為止。</p><p>  在測驗?zāi)J揭策\用了循環(huán)、隨機數(shù)函數(shù)的知識,使得四則運算式的題目以及運算符號可以隨即變化,每題答者輸入計算答案后回車,自動出現(xiàn)下一道題目,直到題數(shù)達已定值。答題全部結(jié)束時可以看到題目、測驗后的結(jié)果、參考答案、總的題數(shù)、答對幾題、錯幾題、本次測驗的成

13、績。</p><p>  在查詢成績的函數(shù)設(shè)計過程中首先運用了文件的讀取等必要的知識通過把文件的內(nèi)容讀取到內(nèi)存然后打印出來。查找也是先打開文件,然后打印測驗后輸出的所有內(nèi)容。</p><p>  在設(shè)置的函數(shù)設(shè)計過程中,通過輸入選擇,賦值位數(shù)。測驗?zāi)J较碌念}目數(shù)量和總分設(shè)定靠輸入數(shù)字進行賦值。</p><p><b>  程序描述</b><

14、;/p><p>  本程序是數(shù)值計算型算法設(shè)計,我設(shè)計出了算術(shù)練習系統(tǒng)的基本功能,并設(shè)計了簡單的界面,初步實現(xiàn)了練習、測驗、查看成績、寫入文件等必要的功能,幫助用戶練習四則運算。編寫過程考驗了我對自定義函數(shù)的熟悉程度。本程序主要使用的是隨機數(shù)的相關(guān)操作,包括結(jié)構(gòu)體數(shù)組的輸入、輸出等。我設(shè)計的這個程序特點就是,界面清晰,條理清楚,語言簡煉。</p><p> ?。ńo出對該程序的簡要描述,主要說明

15、安排設(shè)計本程序的目的意義,并且還要說明本程序的特點)</p><p><b>  功能結(jié)構(gòu)</b></p><p>  練習功能:包括每次可以在+、-、*、/ 四種運算中任選其中的1到4種出題,每題只包含一個運算符。(每答完一題,要顯示對或錯、正確結(jié)果、總答題數(shù),正確答題數(shù)和答題正確率)</p><p>  測驗功能:包括每次可以在+、-、*、

16、/ 四種運算中任選其中的1到4種出題,每題只包含一個運算符。答題全部結(jié)束時可以看到題目、測驗后的結(jié)果、參考答案、總的題數(shù)、答對幾題、錯幾題、本次測驗的成績。</p><p>  設(shè)置功能:包括計算數(shù)據(jù)的位數(shù)按設(shè)定值給出(1 ~ 3位)。設(shè)置測驗?zāi)J降念}數(shù)和總分。</p><p>  拓展功能:查看測驗成績要求在測驗?zāi)J较聦⒈敬螠y驗的姓名,總的題數(shù)、題目、測驗后的結(jié)果、參考答案、答對幾題、錯

17、幾題、本次測驗的成績寫入文件。接著可以在查看測驗成績模式下從磁盤上讀出并顯示出來。 </p><p>  (說明該程序應(yīng)具有的功能,給出功能結(jié)構(gòu)圖)</p><p><b>  主要模塊描述</b></p><p><b>  總結(jié)構(gòu)</b></p><p>  功能描述;打印菜單,主菜單顯示,囊

18、括了各個子菜單函數(shù)。 </p><p>  設(shè)計說明:用switch語句選擇菜單,選擇后進行相應(yīng)操作,其他操作在各個函數(shù)中進行。并用while(1)語句循環(huán)此操作。直到輸入為0時退出程序。</p><p>  操作說明:根據(jù)需要,輸入數(shù)字,回車結(jié)束輸入。</p><p><b>  總流程圖:</b></p><p> 

19、 1 2 3 4 5 其他情況</p><p>  練習:void exercise(int weishu)</p><p><b>  {}</b></p><p><b>  練習</b></p><p>  功能描述:反復(fù)出題——一道四則運算,直到輸入110110,才

20、結(jié)束該子函數(shù)回主菜單。要求:每次輸入完答案顯示其對或錯、正確結(jié)果、總答題數(shù),正確答題數(shù)和答題正確率。 </p><p>  設(shè)計說明:用for循環(huán)語句不斷出題,答案等于110110即break。出題時的運算符、運算數(shù)據(jù)可用隨機rand()函數(shù)產(chǎn)生</p><p>  操作說明:根據(jù)隨機算術(shù)式,輸入你的運算答案,按下回車鍵結(jié)束輸入,即可看到正解及相關(guān)信息。</p><p&

21、gt;<b>  練習流程圖: </b></p><p>  Y N</p><p><b>  N</b></p><p><b>  Y</b></p><p>  測驗:void test()</p><

22、;p><b>  {}</b></p><p><b>  測驗</b></p><p>  功能描述:根據(jù)題數(shù)設(shè)定的數(shù)目出隨機四則運算式,出一題答一題。答題全部結(jié)束時可以看到題目、測驗后的結(jié)果、參考答案、總的題數(shù)、答對幾題、錯幾題、本次測驗的成績。隨后要求輸入答者的名字,輸入完成后,回車回主菜單。 </p><p>

23、;  設(shè)計說明:用for循環(huán)語句不斷出題。出題時的運算符、運算數(shù)據(jù)可用隨機rand()函數(shù)產(chǎn)生。題目、測驗后的結(jié)果等測驗后輸出數(shù)據(jù)皆來自結(jié)構(gòu)體。</p><p>  操作說明:根據(jù)隨機算術(shù)式,輸入你的運算答案,按下回車鍵,即可看到下一題的題目。如此依次做完所有題目,回車結(jié)束輸入。(題數(shù)若不預(yù)先設(shè)置,即為初始值10題??偡秩舨活A(yù)先設(shè)置,即為初始值100分。)</p><p><b>

24、;  測驗流程圖:</b></p><p>  Y N</p><p><b>  N</b></p><p><b>  Y</b></p><p>  設(shè)置:void setting()</p><p>

25、  {} 全局變量 weishu n_test ,初始值為9,10.</p><p><b>  設(shè)置</b></p><p>  功能描述:通過輸入選擇,賦值測驗及練習下隨機數(shù)的位數(shù)——(1 ~ 3位)。通過輸入數(shù)字,賦值測驗?zāi)J较碌念}目數(shù)量和總分設(shè)定。所有設(shè)置內(nèi)容完成后,即回主菜單。 </p><p>  設(shè)計說明:用switch語句選擇

26、位數(shù)的數(shù)值。測驗?zāi)J较碌念}目數(shù)量和總分設(shè)定用賦值法。</p><p>  操作說明:根據(jù)輸出的提示,選擇或者輸入數(shù)字,回車結(jié)束輸入。 </p><p><b>  設(shè)置流程圖:</b></p><p>  1 2 3 其他情況</p><p>  查看測驗成績:void find

27、data()</p><p><b>  {}</b></p><p><b>  查看測驗成績</b></p><p>  功能描述:查看測驗成績要題數(shù)、題目、測驗后的結(jié)果、參考答案、答對幾題、錯幾題、本次測驗的成績寫入文件。接著可以在查看測驗成績模式下從磁盤上讀出并顯示出來。所有內(nèi)容完成后,即回主菜單。 </p&

28、gt;<p>  設(shè)計說明:用文件的知識,存入測驗后顯示數(shù)據(jù)(即結(jié)構(gòu)體內(nèi)容),并用printf語句打出這些數(shù)據(jù)。操作說明:根據(jù)輸出的提示,選擇或者輸入數(shù)字,回車結(jié)束輸入。</p><p>  操作說明:無需操作,進入該子程序,即可顯示所有考生信息。</p><p>  進入d盤,雙擊student_date.txt,可見所有考生信息。</p><p>

29、<b>  設(shè)置流程圖</b></p><p> ?。▽χ饕K包括主程序分別進行功能描述、設(shè)計說明、操作說明,并給出流程圖)</p><p><b>  采用的算法</b></p><p>  面對印入眼簾的目錄表,用戶根據(jù)需要,對應(yīng)菜單上的數(shù)字編號,輸入數(shù)字,回車結(jié)束輸入。</p><p>  

30、如果用戶輸入數(shù)字1進入的是練習模塊:for循環(huán)下根據(jù)隨機數(shù)列出算術(shù)式,輸入你的運算答案,按下回車鍵結(jié)束輸入,隨后即可看到正解及相關(guān)信息。當答案輸入110110,就會跳出for循環(huán)體。主菜單再次隨之出現(xiàn),用戶再度按需要選擇。</p><p>  如果用戶輸入數(shù)字2進入的是測驗?zāi)K:for循環(huán)下根據(jù)隨機數(shù)列出算術(shù)式,輸入你的運算答案,按下回車鍵結(jié)束輸入。如此依次做完所有題目,就跳出循環(huán)體題數(shù)若不預(yù)先設(shè)置,即為初始值1

31、0題??偡秩舨活A(yù)先設(shè)置,即為初始值100分。)此時,屏幕出現(xiàn)所有答題信息,并要求用戶輸入姓名,輸入完成后,回車結(jié)束輸入。主菜單再次隨之出現(xiàn),用戶再度按需要選擇。</p><p>  如果用戶輸入數(shù)字3進入的是設(shè)置模塊:根據(jù)輸出的提示,選擇或者輸入數(shù)字,全局變</p><p>  量被賦予新數(shù)據(jù)。結(jié)束所有輸入。主菜單再次隨之出現(xiàn),用戶再度按需要選擇。</p><p>

32、  如果用戶輸入數(shù)字4進入的是查看模塊:無需操作,進入該子程序,即可顯示所有考生</p><p>  信息。(Ps:進入d盤,雙擊student_date.txt,可見所有考生信息。)主菜單再次隨之出現(xiàn),用戶再度按需要選擇。</p><p>  如果用戶輸入數(shù)字5進入的是退出模塊:用戶便離開程序界面。</p><p> ?。ㄔ敿毞治稣f明本程序所選用的算法,具體的計算

33、公式和計算步驟)</p><p><b>  程序測試</b></p><p>  我所有的子函數(shù)都有通過單體測驗。通過了測試,再放入主程序中,稍加修改,繼續(xù)測試運行。如此反復(fù)直到程序圓滿完成。輸出的算術(shù)式的運算符號屢次出現(xiàn)亂碼,這與預(yù)計的樣式出入頗大。經(jīng)過一系列的查看、糾錯、調(diào)試,發(fā)現(xiàn)語句的漏洞(少寫了else的判斷),及時補上后,算術(shù)式便能正常反應(yīng)。</p&

34、gt;<p><b>  練習時:</b></p><p><b>  設(shè)置時:</b></p><p><b>  測驗時:</b></p><p><b>  退出時:</b></p><p><b>  測驗后察看成績時:&l

35、t;/b></p><p> ?。ㄕf明對本程序進行單體測試的計劃,包括對測試的技術(shù)要求、輸入數(shù)據(jù)、預(yù)期結(jié)果等。實際測試情況等等)</p><p><b>  課程設(shè)計總結(jié)</b></p><p>  通過這兩周的程序設(shè)計課程,我感到受益良多。我學到了不少新的知識:隨機數(shù)是怎樣</p><p>  獲得的、結(jié)構(gòu)體中包

36、含結(jié)構(gòu)體是如何具體運用的等。學習的過程中,難免路途曲折。比如,輸出的算術(shù)式的運算符號屢次出現(xiàn)亂碼,這與預(yù)計的樣式出入頗大。經(jīng)過一系列的查看、糾錯、調(diào)試,發(fā)現(xiàn)語句的漏洞(少寫了else的判斷),及時補上后,算術(shù)式便能正常反應(yīng)。</p><p>  而正是在這般曲折中,恰恰能激發(fā)了一些小小的創(chuàng)意和改進。比如,在練習模式,我便讓它不斷循環(huán)出題,直到輸入110110表示不想做。讓用戶能隨意停止。</p>&

37、lt;p> ?。ㄍㄟ^二周課程設(shè)計進行自我總結(jié),包括你學到了什么,哪里遇到了困難,解決的辦法以及系統(tǒng)可以進行哪些功能的提升等等。)</p><p><b>  軟件使用說明</b></p><p>  面對印入眼簾的目錄表,用戶根據(jù)需要,對應(yīng)菜單上的數(shù)字編號,輸入數(shù)字,回車結(jié)束輸入。</p><p>  如果用戶輸入數(shù)字1進入的是練習模塊:

38、根據(jù)隨機算術(shù)式,輸入你的運算答案,按下回車鍵結(jié)束輸入,隨后即可看到正解及相關(guān)信息。不想做題需輸入110110,回車結(jié)束輸入。主菜單再次隨之出現(xiàn),用戶再度按需要選擇。</p><p>  如果用戶輸入數(shù)字2進入的是測驗?zāi)K:根據(jù)隨機算術(shù)式,輸入你的運算答案,按下回</p><p>  車鍵,即可看到下一題的題目。如此依次做完所有題目,回車結(jié)束輸入。(題數(shù)若不預(yù)先設(shè)置,即為初始值10題??偡秩?/p>

39、不預(yù)先設(shè)置,即為初始值100分。)此時,屏幕出現(xiàn)所有答題信息,并要求用戶輸入姓名,輸入完成后,回車結(jié)束輸入。主菜單再次隨之出現(xiàn),用戶再度按需要選擇。</p><p>  如果用戶輸入數(shù)字3進入的是設(shè)置模塊:根據(jù)輸出的提示,選擇或者輸入數(shù)字,回車結(jié)</p><p>  束輸入。主菜單再次隨之出現(xiàn),用戶再度按需要選擇。</p><p>  如果用戶輸入數(shù)字4進入的是查看

40、模塊:無需操作,進入該子程序,即可顯示所有考生</p><p>  信息。(Ps:進入d盤,雙擊student_date.txt,可見所有考生信息。)主菜單再次隨之出現(xiàn),用戶再度按需要選擇。</p><p>  如果用戶輸入數(shù)字5進入的是退出模塊:用戶便離開程序界面。</p><p> ?。▽δ闼O(shè)計軟件的使用進行說明)</p><p>  

41、附錄(參考文獻,原代碼:)</p><p><b>  源代碼</b></p><p>  #include<stdio.h></p><p>  #include<stdlib.h></p><p>  #include<time.h></p><p>  i

42、nt n_test=10,weishu=9;//定義測驗的題數(shù)的初始值 、題目難度位數(shù)從10以內(nèi)開始 /*全局變量*/ </p><p>  int num=0;//測驗人數(shù)</p><p>  int record=100;//總分 </p><p>  struct suanshu</p><p><b>  {<

43、/b></p><p>  int sj1[1000];</p><p>  int sj2[1000];</p><p>  char fuhao[1000];</p><p>  int byhand[1000];</p><p>  int zhengjie[1000];</p><p&

44、gt;  char judge[1000];</p><p><b>  };</b></p><p>  Struct student_note /*結(jié)構(gòu)體*/ </p><p><b>  {</b>

45、</p><p>  char name[10];</p><p>  float score;</p><p>  int right;</p><p>  int wrong;</p><p><b>  int all;</b></p><p>  struct su

46、anshu ss; </p><p>  }stud[50];</p><p>  int ram(int min,int max)</p><p><b>  {</b></p><p><b>  int a;</b></p><p>  a=(rand() % (max

47、-min+1))+ min ;</p><p>  return(a); </p><p><b>  }</b></p><p>  void practice(int weishu) /*1練習的函數(shù)*/

48、 </p><p>  {int ram(int min,int max);</p><p>  srand(time(NULL)); /*初始化隨機數(shù)種子*/ </p><p>  int ram(int min,int max);</p><p>  int a,b,c

49、,answer=0; //數(shù)字1、數(shù)字2、手算答案、標準答案 </p><p>  int x=0; </p><p>  int i,r=0; </p><p>  char yun;//運算符號 </p><p>  float correctrate;</p><p>  printf(&q

50、uot;* tip:stop until you answer 110110\n"); </p><p>  for(i=0;;i++)</p><p><b>  {</b></p><p>  a=ram(-weishu,weishu);</p><p>  b=ram(-weishu,weishu);&l

51、t;/p><p>  x=ram(1,4);</p><p><b>  if (x==1)</b></p><p>  {answer=(a)+(b); yun='+'; }</p><p>  else if (x==2) </p><p>  {answer=(a)-(b);yu

52、n='-';}</p><p>  else if (x==3) </p><p>  {answer=(a)*(b);yun='*';}</p><p><b>  else </b></p><p><b>  {</b></p><p>

53、;  if(b!=0 && a%b==0 && a>=b)</p><p>  {answer=(a)/(b);</p><p><b>  yun='/';}</b></p><p><b>  else</b></p><p><b&g

54、t;  i=i-1;</b></p><p><b>  continue;</b></p><p><b>  }</b></p><p>  if(b<0) printf(" %d %c (%d) =",a,yun,b);</p><p>

55、  else printf(" %d %c %d =",a,yun,b);</p><p>  scanf("%d",&c);</p><p>  if(c==answer)</p><p><b>  {</b></p><p><b>  r

56、=r+1 ;</b></p><p>  printf("Great~!~!~!the correct answer is %d\n",answer);</p><p><b>  }</b></p><p>  else if(c==110110)break; </p><p><

57、b>  else </b></p><p><b>  {</b></p><p>  printf("OH!!!no~~~the correct answer is %d\n",answer);</p><p><b>  }</b></p><p>  c

58、orrectrate=100*((float)(r)/(float)(i+1));</p><p>  printf("總答題數(shù):%d 正確題數(shù):%d 正確率:%7.2f\n",i+1,r,correctrate);</p><p><b>  }</b></p><p><b>  } </b>

59、;</p><p>  void test(int weishu,int n_test) </p><p>  { srand(time(NULL));</p><p>  int ram(int min,int max);</p><p><b>  int a=0;</b></p><p>

60、<b>  int b=0;</b></p><p><b>  int c=0; </b></p><p>  int answer=0;</p><p><b>  int x=0;</b></p><p><b>  int j=0;</b><

61、/p><p>  int i,r=0,w=0; </p><p><b>  char yun;</b></p><p>  float score;</p><p>  for(i=0;i<n_test;i++)</p><p><b>  {</b></p>

62、<p>  a=ram(-weishu,weishu);</p><p>  b=ram(-weishu,weishu);</p><p>  x=ram(1,4);</p><p><b>  if (x==1)</b></p><p>  {answer=(a)+(b); yun='+'

63、; }</p><p>  else if (x==2) </p><p>  {answer=(a)-(b);yun='-';}</p><p>  else if (x==3) </p><p>  {answer=(a)*(b);yun='*';}</p><p><b>

64、;  else </b></p><p>  { if(b!=0 && a%b==0 && a>=b)</p><p>  {answer=(a)/(b);</p><p><b>  yun='/';}</b></p><p><b>

65、  else </b></p><p><b>  {i=i-1;</b></p><p>  continue;}</p><p><b>  }</b></p><p>  if(a>=0 && b<0) printf("%d. %

66、d %c (%d) =",i+1,a,yun,b);</p><p>  else if(a<0 && b<0) printf("%d. (%d) %c (%d) =",i+1,a,yun,b);</p><p>  else if(a<0 && b>=0) printf("

67、%d. (%d) %c %d =",i+1,a,yun,b);</p><p>  else printf("%d. %d %c %d =",i+1,a,yun,b);</p><p>  scanf("%d",&c);</p><p>  stud[num].ss.sj1

68、[i]=a;</p><p>  stud[num].ss.sj2[i]=b;</p><p>  stud[num].ss.fuhao[i]=yun;</p><p>  stud[num].ss.byhand[i]=c;</p><p>  stud[num].ss.zhengjie[i]=answer;</p><p

69、>  if(c==answer) </p><p><b>  {</b></p><p><b>  r=r+1;</b></p><p>  stud[num].ss.judge[i]='T';</p><p><b>  }</b></p>

70、;<p><b>  else </b></p><p><b>  {</b></p><p><b>  w=w+1;</b></p><p>  stud[num].ss.judge[i]='F';</p><p>  }

71、 </p><p><b>  }</b></p><p>  printf("\n Finish! Let's check:\n");</p><p>  printf("總答題數(shù):%d 正確數(shù)量:%d 錯誤題數(shù):%d\n",i,r,w);

72、</p><p>  printf("The correct answers is here:\n");</p><p>  for(i=0;i<n_test;i++)</p><p><b>  {</b></p><p>  printf("%-2d. (%3d) %c (%-3d

73、) = (%7d)",i+1,stud[num].ss.sj1[i],stud[num].ss.fuhao[i],stud[num].ss.sj2[i],stud[num].ss.byhand[i]);</p><p>  printf("\t%c",stud[num].ss.judge[i]);</p><p>  printf("\tANSWER

74、:%d\n",stud[num].ss.zhengjie[i]);</p><p><b>  }</b></p><p>  score=float(r)*(record)/(n_test); </p><p>  printf("\nScore:%7.2f\n",score);</p><p

75、>  printf("your name:"); </p><p>  scanf("%s",stud[num].name); /*將獲得的名字存儲到結(jié)構(gòu)變量name中*/</p><p>  stud[num].score=score;/*將得出的分數(shù)存儲到結(jié)構(gòu)變量score中*/</p><p>  stud[num

76、].right=r;</p><p>  stud[num].wrong=w;</p><p>  stud[num].all=i;</p><p>  num++; /*測驗人數(shù)+1*/</p><p><b>  }</b></p><p>  void setting()</p>

77、<p><b>  {</b></p><p>  int a,b,c=0;</p><p>  printf("測驗?zāi)J较码y度選擇:1) 一位數(shù) 2) 二位數(shù) 3) 三位數(shù) :"); </p><p>  scanf("%d",&a);</p><p>  

78、if(a>3 || a<1) </p><p><b>  {</b></p><p>  printf("請按照難度范圍選擇:"); </p><p>  scanf("%d",&a);</p><p><b>  }</b></p

79、><p><b>  switch(a)</b></p><p><b>  {</b></p><p>  case 1:weishu=9; break; </p><p>  case 2:weishu=99; break; </p><p>  case 3:weis

80、hu=999; break; </p><p>  default : ; </p><p><b>  } </b></p><p>  printf("測驗?zāi)J较骂}量設(shè)定(10-100):");</p><p>  scanf("%d",&b);</p>

81、<p>  if(b<10||b>100) </p><p><b>  {</b></p><p>  printf("請按照題目范圍內(nèi)選擇:"); </p><p>  scanf("%d",&b);</p><p><b>  }<

82、;/b></p><p>  else n_test=b; </p><p>  printf("測驗?zāi)J较驴偡衷O(shè)定:(大于等于10)");</p><p>  scanf("%d",&c);</p><p><b>  if(c<10) </b></p&

83、gt;<p><b>  {</b></p><p>  printf("請按照總分范圍內(nèi)選擇:"); </p><p>  scanf("%d",&c);</p><p><b>  }</b></p><p>  else recor

84、d=c; </p><p><b>  }</b></p><p>  void save() </p><p><b>  { </b></p><p><b>  FILE *fp;</b></p><p><b>  int i;<

85、;/b></p><p>  if((fp=fopen("D:\\student_note.txt","wb"))==NULL)/*保護措施,下同*/</p><p><b>  {</b></p><p>  printf("cannot open file\n");</

86、p><p><b>  return;</b></p><p><b>  }</b></p><p>  for(i=0;i<num;i++)</p><p>  if(fwrite(&stud[i],sizeof(struct student_note),1,fp)!=1) </

87、p><p>  printf("file write error\n"); </p><p>  fclose(fp);</p><p><b>  }</b></p><p>  void finddate() </p><p><b>  {</b>

88、</p><p>  void save();</p><p><b>  save();</b></p><p><b>  FILE *fp;</b></p><p><b>  int i, j;</b></p><p>  if((fp=fope

89、n("D:\\student_note.txt","w"))==NULL)</p><p><b>  {</b></p><p>  printf("cannot open file\n");</p><p><b>  return;</b></p>

90、;<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  for(i=0;i<num;i++)</p><p><b>  {</b></p>

91、<p>  fprintf(fp, "No. N 姓名\t分數(shù)\t答對\t答錯\t總題數(shù)\n"); </p><p>  fprintf(fp, "No.%2d %4s\t%4.2f\t%d\t%d\t%d\n",i+1,stud[i].name,stud[i].score,stud[i].right,stud[i].wrong,stud[i].all

92、);</p><p>  printf( "No. N 姓名\t分數(shù)\t答對\t答錯\t總題數(shù)\n"); </p><p>  printf( "No.%2d %4s\t%4.2f\t%d\t%d\t%d\n",i+1,stud[i].name,stud[i].score,stud[i].right,stud[i].wrong,stud[i]

93、.all);</p><p>  for(j=0;j<n_test;j++)</p><p><b>  {</b></p><p>  fprintf(fp, " %-2d. (%3d) %c (%-3d) = (%7d)",j+1,stud[i].ss.sj1[j],stud[i].ss.fuhao[j]

94、,stud[i].ss.sj2[j],stud[i].ss.byhand[j]);</p><p>  fprintf(fp, "\t%c",stud[i].ss.judge[j]);</p><p>  fprintf(fp, "\tANSWER:%d\n",stud[i].ss.zhengjie[j]);</p><p>

95、  printf(" %-2d. (%3d) %c (%-3d) = (%7d)",j+1,stud[i].ss.sj1[j],stud[i].ss.fuhao[j],stud[i].ss.sj2[j],stud[i].ss.byhand[j]);</p><p>  printf("\t%c",stud[i].ss.judge[j]);</p>&

96、lt;p>  printf("\tANSWER:%d\n",stud[i].ss.zhengjie[j]);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  f

97、close(fp);</p><p><b>  }</b></p><p>  int main() </p><p><b>  {</b></p><p><b>  int a; </b></p><p><b>  while

98、(1)</b></p><p>  { printf(" \n Menu\n");</p><p>  printf(" 1.practice:\n");</p><p>  printf(" 2.test:\n")

99、; </p><p>  printf(" 3.setting:\n");</p><p>  printf(" 4.finddate:\n");</p><p>  printf(" 5.exit");</p><p>  printf("\ny

100、our choice:");</p><p>  scanf("%d",&a);</p><p><b>  switch(a)</b></p><p><b>  {</b></p><p>  case 1: practice(weishu); brea

101、k;</p><p>  case 2: test(weishu,n_test);break;</p><p>  case 3: setting(); break;</p><p>  case 4: finddate(); break;</p><p>  case 5: exit(0);

102、 break;</p><p>  default: ;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  參考文獻</b>&l

103、t;/p><p>  [1]林小茶. C程序設(shè)計教程 . 北京:清華大學出版社, 2005 </p><p>  [2]譚浩強. C程序設(shè)計題解與上機指導(dǎo)(第三版) . 北京:清華大學出版社, 2005</p><p>  [3] Herbert Schildt. C語言大全(第四版). 北京:電子工業(yè)出版社, 2004</p><p>  

104、[4]Samuel P.Harbison Ⅲ,Guy L.Steele. C語言參考手冊(第5版). 北京:機械工業(yè)出版社,2003  </p><p>  [5]產(chǎn)生一定范圍隨機數(shù)的通用表示公式:</p><p>  要取得[a,b)的隨機整數(shù),使用(rand() % (b-a))+ a (結(jié)果值含a不含b)。</p><p>  要取得[a,b]的隨機

105、整數(shù),使用(rand() % (b-a+1))+ a (結(jié)果值含a和b)。</p><p>  要取得(a,b]的隨機整數(shù),使用(rand() % (b-a))+ a + 1 (結(jié)果值不含a含b)。</p><p> ?。偟膩碚f,通用公式:a + rand() % n ;其中的a是起始值,n是整數(shù)的范圍)</p><p>  要取得a到b之間的隨機整數(shù),另一種表示

106、:a + (int)b * rand() / (RAND_MAX + 1)。</p><p>  要取得0~1之間的浮點數(shù),可以使用rand() / double(RAND_MAX)。</p><p><b>  參考代碼</b></p><p>  顯示菜單的主函數(shù)( 在Turbo C 2.0 ,C Free 4.0,VC6.0環(huán)境中調(diào)試通過

107、)</p><p>  #include "stdio.h"</p><p>  void openfile()</p><p><b>  {}</b></p><p>  void inputdata()</p><p><b>  {}</b><

108、;/p><p>  void deletedata()</p><p><b>  {}</b></p><p>  void finddata()</p><p><b>  {}</b></p><p>  void main()</p><p>&

109、lt;b>  {</b></p><p><b>  int a;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  printf("\n\n\n");</p&

110、gt;<p>  printf(" 主 菜 單\n");</p><p>  printf(" 1: 打 開 文 件\n");</p><p>  printf(" 2: 錄 入 數(shù) 據(jù)\n");</p><p>  printf

111、(" 3: 刪 除 數(shù) 據(jù)\n");</p><p>  printf(" 4: 數(shù) 據(jù) 查 詢\n");</p><p>  printf(" 0: 退 出 \n");</p><p>  printf(" 請輸入數(shù)字選擇: &q

112、uot;);</p><p>  scanf("%d",&a);</p><p><b>  switch(a)</b></p><p><b>  {</b></p><p>  case 1: openfile(); break;</p><p&g

113、t;  case 2: inputdata();break; </p><p>  case 3:deletedata();break;</p><p>  case 4:finddata(); break;</p><p>  case 0: exit(0);</p><p>  default: ;</p><p>

114、;<b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  產(chǎn)生隨機數(shù)</b></p><p>  #include "stdlib.h"</p>

115、<p>  #include "time.h"</p><p>  #include "stdio.h"</p><p><b>  main()</b></p><p><b>  {</b></p><p><b>  int i;&l

116、t;/b></p><p>  srand( time(NULL) ); //srand()初始化新的隨機數(shù)序列</p><p>  //time()本函數(shù)給出自1970年1月1日凌晨至現(xiàn)在所經(jīng)過的秒數(shù),</p><p>  for( i = 0; i < 10; i++ )</p><p>  printf( &qu

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論