版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 算數(shù)表達(dá)式的求解課程設(shè)計(jì)報(bào)告
- c語(yǔ)言_算數(shù)表達(dá)式求值_課程設(shè)計(jì)報(bào)告
- c語(yǔ)言課程設(shè)計(jì)報(bào)告(算術(shù)練習(xí))
- vb課程設(shè)計(jì)益智類算數(shù)小游戲
- rc有源高通濾波器課程設(shè)計(jì)報(bào)告完美版
- rc有源高通濾波器課程設(shè)計(jì)報(bào)告完美版
- c語(yǔ)言課程設(shè)計(jì)報(bào)告--文件存取練習(xí)
- 一元多項(xiàng)式的計(jì)算數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)----課程設(shè)計(jì)報(bào)告
- 偏置直動(dòng)凸輪課程設(shè)計(jì)加計(jì)算數(shù)據(jù)編程
- fpga課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告
- 打字練習(xí)課程設(shè)計(jì)報(bào)告(內(nèi)附源程序)
- ca6140杠桿課程設(shè)計(jì)完美版
- 課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告
- 課程設(shè)計(jì)報(bào)告
- 大氣污染課程設(shè)計(jì)設(shè)計(jì)計(jì)算書(shū)完美版
- web編程課程設(shè)計(jì)報(bào)告--留言簿課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論