c语言程序设计平时作业代刷,C语言程序设计——小学生口算刷题系统
程序函數關系圖
函數功能及全局變量介紹
代碼中已有詳細注釋的地方不再進行解釋。
全局變量
Cut( )函數
此函數用于分割界面,使界面更為美觀。
Start( )函數
此函數集成了開始菜單,年級的輸入,為了營造一個快樂而刺激的刷題體驗,程序與用戶有很多互動。
Number( )函數
由于出題時要非常注重題目的難度,因此控制隨機數的位數極其重要,因此單獨封裝成一個函數處理。
myRand( )函數
同上,很多時候生成的隨機數需要控制范圍,為了提高準確性,簡化判斷機制,單獨封裝函數來達成生成隨機數的目的。
correctMessage( )函數
incorrectMessage( )函數
Questions( )函數
此函數是出題的中樞函數,集成了我設置的所有題型,并且出口對接著其他函數共同完成出題。
出題注意:
所有的題目中不能出現答案的得數是負數;
三年級之前的小學生還沒有學習交換律、結合律和分配律,命題的時候不能考查這些,及運算過程不能存在負數中間量;
涉及除法運算時,除數不能為0;
除法運算的得數不能出現小數,三年級前的普通學生并不能很好地進行這種運算;
出題時需要注意控制得數的位數,不能將題目搞得太難;
出含有乘法、除法運算的題目時,必須顯示數學符號“×”和“÷”,否則小學生看不懂。
Game( )函數
此函數集成了題目量控制、判斷答案正誤及超時作答、中途退出的功能。
judgment( )函數
此函數用于分析用戶的作答情況,并給出一些提示和建議,并確認是否開啟下一輪練習。
Timer( )函數
此函數用于獲取現在的時間。
outTime( )函數
Prepare( )函數
此函數用于確認用戶的習題量,并給出溫馨提示,做好答題準備。
Ending( )函數
Addition( )函數
Subtraction( )函數
Multiplication( )函數
Division( )函數
Remainder( )函數
fourOperations( )函數
主函數
集成了菜單函數、準備函數、題量控制及裁判函數、結算函數和結束函數。
運行效果,測試用例
開始頁面
一年級題目
出題時由系統隨機出題,我并沒有完全按照作業要求出題,例如整十數減整十數的減法這類題,本質上是一位數加一位數,因此我對一些題型做了歸并處理。
一年級的題型有:
1/2位數 + 1位數;
1/2位數 - 1位數;
3個1位數的加減法運算。
二年級題目
出題時由系統隨機出題,我并沒有完全按照作業要求出題,例如尾數是0三位數加法(和在一千以內的)這類題,本質上是二位數加二位數,因此我對一些題型做了歸并處理。
二年級的題型有:
九九乘法表及其逆運算;
2位數與2位數的加減運算;
求余運算;
簡易的四則運算。
三年級題目
出題時由系統隨機出題,我并沒有完全按照作業要求出題,例如一位數乘一位這類題,本質上是九九乘法表,因此我對一些題型做了歸并處理。
三年級的題型有:
3位數與兩位數加減法運算(含連續進/退位);
兩位數乘一位數;
被除數是三位數求余運算;
考慮優先級的四則運算。
非法輸入
隨機給出習題量
生成習題量的方式是生成一個兩位的隨機數。
超時作答
超時作答的判定方式為單題答題結束時間減去開始時間超過15秒。
結算并開啟下一輪練習
系統將會根據正確率100%、80%、60%、60%以下四種情況進行判定,同時對超時率30%以上也有判定。
調試碰到問題及解決辦法
Q1:有時候出題時會同時打出兩道題目。
A1:出題時,主要使用了switch多分支結構,由于該結構的特性,在缺少break語句時會繼續執行下一個case,就會出現同時出了兩道題的情況,補上break即可。
Q2:四則運算題時,會出現題目的中間量為負數的情況。
A2:利用循環生成題目,如果遇到會出現這種情況的數據,則重新生成。
Q3:出除法題時,會出現得數含有小數的情況,然而三年級之前的學生較難處理這類題。
A3:所有的除法題改為用乘法的逆運算出題。
Q4:出除法題時,會出出除零運算的題。
A4:利用我自己寫的隨機數函數,就不會出現數字0。
Q5:出題時,最后一種題型的題目不出現。
A5:我忘記了我自己的隨機數函數的生成范圍是開區間,修改上即可。
Q6:非法數據作答時,系統會直接跑完所有循環。
A6:由于這種情況系統不會崩潰,并且也可以實現強行退出,再加上實力問題,所以暫時沒有處理。
Q7:如何實現計時功能?
A7:原計劃是判斷作答時間如果超過15秒就直接判錯,但是由于實力問題暫時不能實現,只能做到用戶作答之后判斷是否超時。
Q8:如何做到重開一輪練習?
A8:原計劃是想使用“goto”語句,但是后來想一想,只需要在主函數套個循環即可,因此重構了菜單函數,重新定義一個準備函數將原本的題量輸入的部分放進去。
Q9:在不利用bug的情況下如何實現強退?
A9:原計劃是想使用“goto”語句,但是后來想一想,只需要操作習題量,如果輸入負數,就直接讓題號加到習題量的上限,讓系統誤以為題目出完了即可。
Q10:為了避免猝不及防的開始,想要在開始練習之前設置倒計時。
A10:與舍友討論之后,學習了Sleep函數實現這個功能。
Q11:出題函數被老師指出代碼重復率很高。
A11:將不同的題型分別用函數封裝,通過控制傳入的參數達到控制難度的效果。
總結
以上是生活随笔為你收集整理的c语言程序设计平时作业代刷,C语言程序设计——小学生口算刷题系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 标题样式,Android
- 下一篇: python数据批量写入iq数据库_通过