C++課程設計(題目2:小學生測驗)_第1頁
C++課程設計(題目2:小學生測驗)_第2頁
C++課程設計(題目2:小學生測驗)_第3頁
C++課程設計(題目2:小學生測驗)_第4頁
C++課程設計(題目2:小學生測驗)_第5頁
已閱讀5頁,還剩15頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、C+語言程序課程設計班級:11電信1班 姓名:謝遠忠 學號:110703*指導老師:胡玨 第一類題目 應用類:題目2:小學生測驗面向小學12年級學生,隨機選擇兩個整數和加減法形成算式要求學生解答。功能要求:(1)電腦隨機出10道題,每題10分,程序結束時顯示學生得分;(2)確保算式沒有超出12年級的水平,只允許進行50以內的加減法,不允許兩數之和或之差超出050的范圍,負數更是不允許的;(3)每道題學生有三次機會輸入答案,當學生輸入錯誤答案時,提醒學生重新輸入,如果三次機會結束則輸出正確答案;(4)對于每道題,學生第一次輸入正確答案得10分,第二次輸入正確答案得7分,第三次輸入正確答案得5分,

2、否則不得分;(5)總成績90以上顯示“SMART(優秀!)”,80-90顯示“GOOD(良好!)”,70-80顯示“OK(中等!)”,60-70顯示“PASS(及格!)”,60以下“TRY AGAIN(不及格!重測!)”。I.設計思路:由系統函數產生兩個隨機數a、b并計算兩數之和為t ,顯示兩個隨機數a、b的加減法運算,學生通過鍵盤輸入答案num與t進行匹配,第1次匹配正確給10分;第2次匹配正確給7分;第3次匹配正確給5分,每道題至多3次輸入機會,3次機會用盡后仍未匹配成功由系統輸出正確答案t ,累計得分score并進入下一道題。以此類推,直至10道題答完止輸出總得分score,判斷等級SM

3、ART、GOOD、OK、PASS還是TRY AGAIN。II.流程圖:III.C+(含class類,面向對象)程序代碼:#include<iostream.h>#include<time.h> #include<stdlib.h> /標準庫頭文件 class Display_biaoti /Display_biaoti標題類,標題顯示public:Display_biaoti()cout<<"=歡迎使用小學生整數50以內加減法測驗評測系統="<<endl<<endl;cout<<"

4、*"<<endl;cout<<"* * *"<<endl;cout<<"* * 共10道題,每道題3次作答機會 * *"<<endl;cout<<"* *第1次作答正確10分;第2次作答正確7分;第3次作答正確5分;* *"<<endl;cout<<"* * 三次作答不正確此題得分:0分,進入下一題 * *"<<endl;cout<<"* * *"<<en

5、dl;cout<<"*"<<endl<<endl;Display_biaoti();/*/class Suijishu /Suijishu隨機數類,產生兩個運算數public:int a,b,n,t;Suijishu()a=rand()%50; /rand()是一個隨機函數,a=rand()%50是在0-50內取隨機值賦給ab=rand()%50; /b=rand()%50是在0-50內取隨機值賦給b n=rand()%6; /n的范圍大些出現加法和減法的概率就越接近(加法:減法=5:5),故n取6if(n=0|n=1|n=2)&

6、&(a+b)>50) /如果產生隨機數a、b之和大于50時if(a>25&&b>25) /a、b同時大于25時a=a-25; b=b-25; /a、b同時減小25if(a>25) /僅是a大于25時a=a-25; /a減小25if(b>25) /僅是b大于25時b=b-25; /b減小25Suijishu();/*/class Display_timu:public Suijishu /Display_timu題目類,對單一道題目顯示給學生public:int i,t;Display_timu() void xianshi()switch(

7、n) case 0: /n為0、1、2時進行加法運算case 1:case 2:cout<<"#"<<i<<"題#"<<endl;cout<<a<<"+"<<b<<"=" t=a+b; i+;break;case 3: /n為3、4、5時進行減法運算case 4:case 5:cout<<"#第"<<i<<"題#"<<endl;if(

8、a>b)cout<<a<<"-"<<b<<"=" t=a-b;i+;else cout<<b<<"-"<<a<<"=" t=b-a;i+;/使用if.else.語句,以防出現負數break; Display_timu();/*/class Ceshi:public Display_timupublic:int num,cnt,score; /測試者輸入答案次數cntCeshi() cnt=1; score=0;in

9、t xunhuan()do cin>>num; /測試者輸入答案numif (num=t) /答案正確時 cout<<"正確!o(v)o好棒"<<endl; else if (cnt<3) /答案輸入少于3次cout<<"答案不正確?在試試吧!"<<endl;cout<<"你還有"<<3-cnt<<"次答題機會"<<endl; +cnt;while(cnt<=3&&num!=t);

10、 /答案輸入少于3次且輸入答案不正確時繼續輸入(3次答題機會) if (num!=t) /3次為輸入正確答案,由系統給出正確答案cout<<"答案不正確!正確答案是:"<<t<<endl;switch (cnt) /累計答題得分情況 case 1:score+=10;break; /第1次答對得10分 case 2:score+=7;break; /第2次答對得7分 case 3:score+=5;break; /第3次答對得5分 return score;Ceshi();/*/class Display_zongping:public

11、Ceshi /Display_zongping總評類,對答完10道題給出總評public:int score;Display_zongping()void pandduan()if (score>90) /如果總分大于90 cout<<"優秀!"<<endl; /輸出優秀! else if (score>80) /如果總分大于80 cout<<"良好!"<<endl; /輸出良好! else if (score>70) /如果總分大于70 cout<<"中等!&quo

12、t;<<endl; /輸出中等! else if (score>=60) /如果總分大于60 cout<<"及格!"<<endl; /輸出及格! else cout<<"不及格!重測!"<<endl; /低于60分時,輸出不及格!重測!cout<<"n"Display_zongping();/*/void main()int all_score=0;Display_biaoti aa; /定義Display_biaoti標題類對象aa,標題顯示srand(t

13、ime(NULL); /srand函數是以現在系統時間作為時間種子產生隨機數int j; /定義整形j計數10道題for(j=1;j<11;j+)Suijishu bb; /定義隨機數Suijishu類對象bbDisplay_timu cc; /定義Display_timu類對象cccc.i=j;cc.xianshi(); /調用對象cc的方法xianshi()Ceshi dd; /定義Ceshi類對象dddd.t=cc.t; /對象cc的數據t賦值給對象dd的數據tall_score+=dd.xunhuan(); /調用對象dd的方法xunhuan()cout<<"

14、;-當前分數為"<<all_score<<endl; /輸出當前的得分Display_zongping ee; /定義Display_zongping類對象eeee.score=all_score;cout<<"最后得分為"<<ee.score<<" "ee.pandduan(); /調用對象ee的方法pandduan()IV.運行結果:(良好!)(優秀!)(不及格!重測!)(及格!)(中等!)IV.C+(不含class類)程序代碼:#include<iostream.h>

15、#include<time.h> #include<stdlib.h> /標準庫頭文件void main() int t, num, a,n, i, b; /定義變量t(系統正確答案),num(測試者輸入答案),a(參與運算的數), /n(決定加法還是減法運算),i(題號),b(參與運算的另一個數) int score=0; /定義變量score存放得分 cout<<"=歡迎使用小學生整數50以內加減法測驗評測系統="<<endl; srand(time(NULL); /srand函數是以現在系統時間作為時間種子產生隨機數 f

16、or(i=1;i<=10;i+) loop: a=rand()%50; /rand()是一個隨機函數,a=rand()%50是在0-50內取隨機值賦給ab=rand()%50; /b=rand()%50是在0-50內取隨機值賦給b n=rand()%6; /n的范圍大些出現加法和減法的概率就越接近(加法:減法=5:5),故n取6if(n=0|n=1|n=2)&&(a+b)>50) /如果產生隨機數a、b之和大于50時if(a>25&&b>25) /a、b同時大于25時a=a-25; b=b-25; /a、b同時減小25if(a>25

17、) /僅是a大于25時a=a-25; /a減小25if(b>25) /僅是b大于25時b=b-25; /b減小25 switch(n) case 0: /n為0、1、2時進行加法運算case 1: case 2:cout<<"*第"<<i<<"題*"<<endl;cout<<a<<"+"<<b<<"=" t=a+b; break;case 3: /n為3、4、5時進行減法運算case 4:case 5:cout&l

18、t;<"*第"<<i<<"題*"<<endl;if(a>b)cout<<a<<"-"<<b<<"=" t=a-b;else cout<<b<<"-"<<a<<"=" t=b-a;/使用if.else.語句,以防結果出現負數break; goto loop; int cnt=1; /測試者輸入答案次數cnt do cin>>

19、num; /測試者輸入答案num if (num=t) /答案正確時 cout<<"正確!o(v)o好棒"<<endl; else if (cnt<3) /答案輸入少于3次 cout<<"答案不正確?在試試吧!"<<endl;cout<<"你還有"<<3-cnt<<"次答題機會"<<endl; +cnt;while(cnt<=3&&num!=t); /答案輸入少于3次且輸入答案不正確時繼續輸入(3次答題機會) if (num!=t) /3次為輸入正確答案,由系統給出正確答案cout<<"答案不正確!正確答案是:"<<t<<endl;switch (cnt) /累計答題得分情況 case 1:score+=10;break; /第1次答對得10分 case 2:score+=7;br

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論