利用C++實(shí)現(xiàn)計(jì)算機(jī)輔助教學(xué)系統(tǒng)
我們都知道計(jì)算機(jī)在教育中起的作用越來越大。
下面編寫一個(gè)程序,幫助小學(xué)生學(xué)習(xí)乘法。利用rand函數(shù)產(chǎn)生兩個(gè)一位的正整數(shù)。接著應(yīng)該顯示諸如6乘7等于多少的問題?學(xué)生然后輸入答案。
程序會(huì)檢查學(xué)生的答案。
計(jì)算機(jī)助教學(xué)環(huán)境中出現(xiàn)的一個(gè)問題是學(xué)生容易疲勞。這是可以消除的,通過變換計(jì)算機(jī)的對(duì)話來保持學(xué)生的注意力。要求對(duì)于每個(gè)正確的答案和不正確的答案,應(yīng)該打印出不同的評(píng)語,如下所示:正確答案的評(píng)語:
Very good!
Excellent!
Nice work!
Keep up the good work!
錯(cuò)誤答案的評(píng)語:
No. Please try again.
Wrong.
Try once more.
Don't give up!
No. Keep trying.
利用隨機(jī)數(shù)生成器在1~4之間選擇一個(gè)數(shù),用它為每個(gè)答案選擇相應(yīng)的評(píng)語。使用switch語句發(fā)出響應(yīng)。
先復(fù)習(xí)一下rand()函數(shù)的用法:
rand()函數(shù)用法:(轉(zhuǎn)載)
1、rand()不需要參數(shù),它會(huì)返回一個(gè)從0到最大隨機(jī)數(shù)的任意整數(shù),最大隨機(jī)數(shù)的大小通常是固定的一個(gè)大整數(shù)。
2、如果你要產(chǎn)生0~99這100個(gè)整數(shù)中的一個(gè)隨機(jī)整數(shù),可以表達(dá)為:int num = rand() % 100;
這樣,num的值就是一個(gè)0~99中的一個(gè)隨機(jī)數(shù)了。
3、如果要產(chǎn)生1~100,則是這樣:int num = rand() % 100 + 1;
4、總結(jié)來說,可以表示為:int num = rand() % n +a;
其中的a是起始值,n-1+a是終止值,n是整數(shù)的范圍。
5、一般性:rand() % (b-a+1)+ a ; 就表示 a~b 之間的一個(gè)隨機(jī)整數(shù)。
6、若要產(chǎn)生0-1之間的小數(shù),則可以先取得0-10的整數(shù),然后均除以10即可得到“隨機(jī)到十分位”的10個(gè)隨機(jī)小數(shù)。
若要得到“隨機(jī)到百分位”的隨機(jī)小數(shù),則需要先得到0~100的10個(gè)整數(shù),然后均除以100,其它情況依 此類推。
/* rand()函數(shù)用法:(轉(zhuǎn)載) 1、rand()不需要參數(shù),它會(huì)返回一個(gè)從0到最大隨機(jī)數(shù)的任意整數(shù),最大隨機(jī)數(shù)的大小通常是固定的一個(gè)大整數(shù)。 2、如果你要產(chǎn)生0~99這100個(gè)整數(shù)中的一個(gè)隨機(jī)整數(shù),可以表達(dá)為:int num = rand() % 100; 這樣,num的值就是一個(gè)0~99中的一個(gè)隨機(jī)數(shù)了。 3、如果要產(chǎn)生1~100,則是這樣:int num = rand() % 100 + 1; 4、總結(jié)來說,可以表示為:int num = rand() % n +a; 其中的a是起始值,n-1+a是終止值,n是整數(shù)的范圍。 5、一般性:rand() % (b-a+1)+ a ; 就表示 a~b 之間的一個(gè)隨機(jī)整數(shù)。 6、若要產(chǎn)生0-1之間的小數(shù),則可以先取得0-10的整數(shù),然后均除以10即可得到“隨機(jī)到十分位”的10個(gè)隨機(jī)小數(shù)。 若要得到“隨機(jī)到百分位”的隨機(jī)小數(shù),則需要先得到0~100的10個(gè)整數(shù),然后均除以100,其它情況依 此類推。 */ #include<iostream> #include<cmath> #include <stdlib.h> using namespace std; int main() { int x,y,a; //x和y是兩個(gè)隨機(jī)生成的數(shù),a為學(xué)生輸入的答案 int sum=0; //sum是兩個(gè)數(shù)相乘的結(jié)果 int count=0;//count為計(jì)數(shù)器 int right=0;//記錄對(duì)的題數(shù) float s; //計(jì)算正確率 do { count++; x=rand()%10;//隨機(jī)數(shù) y=rand()%10; sum=x*y; cout << x << " * " << y << " = " << endl; cout << "Please enter the answer :" << endl; cin >> a; if(a==sum) { right++; switch(rand()%4) { case 0: cout << "Very good!" << endl << endl;break; case 1: cout << "Excellent!" << endl << endl;break; case 2: cout << "Nice work!" << endl << endl;break; case 3: cout << "Keep up the good work!" << endl << endl;break; } } else { switch(rand()%4) { case 0: cout << "No. Please try again." << endl << endl;break; case 1: cout << "Wrong. Try once more." << endl << endl;break; case 2: cout << "Don't give up!" << endl << endl;break; case 3: cout << "No. Keep trying." << endl << endl;break; } } }while(count<10); s=right*1.0/count;//計(jì)算正確率 if(s<0.75) { cout <<"Please ask your instructor foe extra help" << endl; } return 0; }
上面的程序還是不夠完善,下面增強(qiáng)前面的程序功能。
a)修改程序,允許用戶輸入能力等級(jí)。等級(jí)1表示在問題中只能使用一位數(shù),等級(jí)2表示最大只能使用2位數(shù),等等。
b)修改程序,增加算術(shù)問題的類型,允許用戶選擇他或者她希望學(xué)習(xí)的算術(shù)問題的類型。選項(xiàng)1表示只是加法問題,2表示只是減法問題,3表示只是乘法問題,4表示只是除法問題。
#include<iostream> #include<cmath> #include <stdlib.h> using namespace std; int main() { int x,y,a; //x和y是兩個(gè)隨機(jī)生成的數(shù),a為學(xué)生輸入的答案 int sum=0; //sum是兩個(gè)數(shù)相乘的結(jié)果 int count=0;//count為計(jì)數(shù)器 int right=0;//記錄對(duì)的題數(shù) float s; //計(jì)算正確率 int note=0;//記錄能力等級(jí) int f=0;//記錄用戶所希望學(xué)的問題 cout << "Please enter your ability level, 1 or 2" << endl; cin >> note; cout << endl; cout << "************" << endl; cout << "*1:加法問題*" << endl; cout << "*2:減法問題*" << endl; cout << "*3:乘法問題*" << endl; cout << "*4:除法問題*" << endl; cout << "************" << endl; cout << "Please enter the type of arithmetic problem you want to learn" << endl; cin >> f; do { count++; if(note==1) { x=rand()%10;//隨機(jī)數(shù) y=rand()%10; } else { x=rand()%20;//隨機(jī)數(shù) y=rand()%20; } if(f==1) { sum=x+y; cout << x << " + " << y << " = " << endl; } else if(f==2) { sum=x-y; cout << x << " - " << y << " = " << endl; } else if(f==3) { sum=x*y; cout << x << " * " << y << " = " << endl; } else if(f==4) { sum=x/y; cout << x << " / " << y << " = " << endl; } cout << "Please enter the answer :" << endl; cin >> a; if(a==sum) { right++; switch(rand()%4) { case 0: cout << "Very good! " << endl << endl;break; case 1: cout << "Excellent! " << endl << endl;break; case 2: cout << "Nice work! " << endl << endl;break; case 3: cout << "Keep up the good work!" << endl << endl;break; } } else { switch(rand()%4) { case 0: cout << "No. Please try again." << endl << endl;break; case 1: cout << "Wrong. Try once more." << endl << endl;break; case 2: cout << "Don't give up! " << endl << endl;break; case 3: cout << "No. Keep trying. " << endl << endl;break; } } }while(count<10); s=right*1.0/count;//計(jì)算正確率 if(s<0.75) { cout <<"Please ask your instructor foe extra help !!!" << endl; } return 0; }
到此這篇關(guān)于利用C++實(shí)現(xiàn)計(jì)算機(jī)輔助教學(xué)系統(tǒng)的文章就介紹到這了,更多相關(guān)C++計(jì)算機(jī)輔助教學(xué)系統(tǒng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C/C++實(shí)現(xiàn)快速排序算法的思路及原理解析
這篇文章主要介紹了C/C++實(shí)現(xiàn)快速排序算法的思路及原理解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01C語言中用棧+隊(duì)列實(shí)現(xiàn)隊(duì)列中的元素逆置
這篇文章主要介紹了C語言中用利用棧和隊(duì)列實(shí)現(xiàn)隊(duì)列中的元素逆置的相關(guān)資料,對(duì)正在學(xué)習(xí)的小伙伴有一定的參考價(jià)值,需要的可以參考一下,希望對(duì)你有所幫助2022-02-02C語言異或校驗(yàn)算法的項(xiàng)目實(shí)現(xiàn)
異或校驗(yàn)算法(XOR校驗(yàn))是一種簡(jiǎn)單的校驗(yàn)算法,用于檢測(cè)數(shù)據(jù)在傳輸或存儲(chǔ)過程中是否發(fā)生了錯(cuò)誤,本文主要介紹了C語言異或校驗(yàn)算法的項(xiàng)目實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08C++?qsort函數(shù)排序與冒泡模擬實(shí)現(xiàn)流程詳解
qsort是一個(gè)庫函數(shù),基于快速排序算法實(shí)現(xiàn)的一個(gè)排序的函數(shù),下面這篇文章主要給大家介紹了關(guān)于C語言qsort()函數(shù)使用的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10Linux C/C++實(shí)現(xiàn)DNS客戶端請(qǐng)求域名IP的示例代碼
DNS全稱:Domain Name System,域名解析系統(tǒng),是互聯(lián)網(wǎng)的一項(xiàng)服務(wù),本文主要介紹了C/C++如何實(shí)現(xiàn)DNS客戶端請(qǐng)求域名IP,感興趣的可以了解下2024-03-03C++內(nèi)存四區(qū)之代碼區(qū)、全局區(qū)、棧區(qū)和堆區(qū)
C++編譯器會(huì)把代碼直接分為四個(gè)小區(qū),弄懂這四小區(qū)對(duì)我們理解內(nèi)存有所幫助,所以下面這篇文章主要給大家介紹了關(guān)于C++內(nèi)存四區(qū)之代碼區(qū)、全局區(qū)、棧區(qū)和堆區(qū)的相關(guān)資料,需要的朋友可以參考下2021-07-07詳解C++編程中用數(shù)組名作函數(shù)參數(shù)的方法
這篇文章主要介紹了詳解C++編程中用數(shù)組名作函數(shù)參數(shù)的方法,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09