算數(shù)練習(xí)完美課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、<p>  2.1總體設(shè)計(jì)方案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程序測(cè)試12</b></p&g

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

21、gt;<b>  練習(xí)流程圖: </b></p><p>  Y N</p><p><b>  N</b></p><p><b>  Y</b></p><p>  測(cè)驗(yàn):void test()</p><

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

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

24、;  測(cè)驗(yàn)流程圖:</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>  功能描述:通過(guò)輸入選擇,賦值測(cè)驗(yàn)及練習(xí)下隨機(jī)數(shù)的位數(shù)——(1 ~ 3位)。通過(guò)輸入數(shù)字,賦值測(cè)驗(yàn)?zāi)J较碌念}目數(shù)量和總分設(shè)定。所有設(shè)置內(nèi)容完成后,即回主菜單。 </p><p>  設(shè)計(jì)說(shuō)明:用switch語(yǔ)句選擇

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

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

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

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

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

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

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

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

34、gt;<p><b>  練習(xí)時(shí):</b></p><p><b>  設(shè)置時(shí):</b></p><p><b>  測(cè)驗(yàn)時(shí):</b></p><p><b>  退出時(shí):</b></p><p><b>  測(cè)驗(yàn)后察看成績(jī)時(shí):&l

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

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

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

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

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

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

41、附錄(參考文獻(xiàn),原代碼:)</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;//定義測(cè)驗(yàn)的題數(shù)的初始值 、題目難度位數(shù)從10以內(nèi)開(kāi)始 /*全局變量*/ </p><p>  int num=0;//測(cè)驗(yàn)人數(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練習(xí)的函數(shù)*/

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

49、,answer=0; //數(shù)字1、數(shù)字2、手算答案、標(biāo)準(zhǔn)答案 </p><p>  int x=0; </p><p>  int i,r=0; </p><p>  char yun;//運(yùn)算符號(hào) </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 錯(cuò)誤題數(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); /*將獲得的名字存儲(chǔ)到結(jié)構(gòu)變量name中*/</p><p>  stud[num].score=score;/*將得出的分?jǐn)?shù)存儲(chǔ)到結(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++; /*測(cè)驗(yàn)人數(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("測(cè)驗(yàn)?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("請(qǐng)按照難度范圍選擇:"); </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("測(cè)驗(yàn)?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("請(qǐng)按照題目范圍內(nèi)選擇:"); </p><p>  scanf("%d",&b);</p><p><b>  }<

82、;/b></p><p>  else n_test=b; </p><p>  printf("測(cè)驗(yàn)?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("請(qǐng)按照總分范圍內(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)/*保護(hù)措施,下同*/</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分?jǐn)?shù)\t答對(duì)\t答錯(cuò)\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分?jǐn)?shù)\t答對(duì)\t答錯(cuò)\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>  參考文獻(xiàn)</b>&l

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

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

105、整數(shù),使用(rand() % (b-a+1))+ a (結(jié)果值含a和b)。</p><p>  要取得(a,b]的隨機(jī)整數(shù),使用(rand() % (b-a))+ a + 1 (結(jié)果值不含a含b)。</p><p>  (總的來(lái)說(shuō),通用公式:a + rand() % n ;其中的a是起始值,n是整數(shù)的范圍)</p><p>  要取得a到b之間的隨機(jī)整數(shù),另一種表示

106、:a + (int)b * rand() / (RAND_MAX + 1)。</p><p>  要取得0~1之間的浮點(diǎn)數(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)試通過(guò)

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: 打 開(kāi) 文 件\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(" 請(qǐng)輸入數(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)生隨機(jī)數(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()初始化新的隨機(jī)數(shù)序列</p><p>  //time()本函數(shù)給出自1970年1月1日凌晨至現(xiàn)在所經(jīng)過(guò)的秒數(shù),</p><p>  for( i = 0; i < 10; i++ )</p><p>  printf( &qu

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論