利用C++實現(xiàn)計算機輔助教學(xué)系統(tǒng)
我們都知道計算機在教育中起的作用越來越大。
下面編寫一個程序,幫助小學(xué)生學(xué)習(xí)乘法。利用rand函數(shù)產(chǎn)生兩個一位的正整數(shù)。接著應(yīng)該顯示諸如6乘7等于多少的問題?學(xué)生然后輸入答案。
程序會檢查學(xué)生的答案。
計算機助教學(xué)環(huán)境中出現(xiàn)的一個問題是學(xué)生容易疲勞。這是可以消除的,通過變換計算機的對話來保持學(xué)生的注意力。要求對于每個正確的答案和不正確的答案,應(yīng)該打印出不同的評語,如下所示:正確答案的評語:
Very good!
Excellent!
Nice work!
Keep up the good work!
錯誤答案的評語:
No. Please try again.
Wrong.
Try once more.
Don't give up!
No. Keep trying.
利用隨機數(shù)生成器在1~4之間選擇一個數(shù),用它為每個答案選擇相應(yīng)的評語。使用switch語句發(fā)出響應(yīng)。
先復(fù)習(xí)一下rand()函數(shù)的用法:
rand()函數(shù)用法:(轉(zhuǎn)載)
1、rand()不需要參數(shù),它會返回一個從0到最大隨機數(shù)的任意整數(shù),最大隨機數(shù)的大小通常是固定的一個大整數(shù)。
2、如果你要產(chǎn)生0~99這100個整數(shù)中的一個隨機整數(shù),可以表達(dá)為:int num = rand() % 100;
這樣,num的值就是一個0~99中的一個隨機數(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 之間的一個隨機整數(shù)。
6、若要產(chǎn)生0-1之間的小數(shù),則可以先取得0-10的整數(shù),然后均除以10即可得到“隨機到十分位”的10個隨機小數(shù)。
若要得到“隨機到百分位”的隨機小數(shù),則需要先得到0~100的10個整數(shù),然后均除以100,其它情況依 此類推。
/*
rand()函數(shù)用法:(轉(zhuǎn)載)
1、rand()不需要參數(shù),它會返回一個從0到最大隨機數(shù)的任意整數(shù),最大隨機數(shù)的大小通常是固定的一個大整數(shù)。
2、如果你要產(chǎn)生0~99這100個整數(shù)中的一個隨機整數(shù),可以表達(dá)為:int num = rand() % 100;
這樣,num的值就是一個0~99中的一個隨機數(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 之間的一個隨機整數(shù)。
6、若要產(chǎn)生0-1之間的小數(shù),則可以先取得0-10的整數(shù),然后均除以10即可得到“隨機到十分位”的10個隨機小數(shù)。
若要得到“隨機到百分位”的隨機小數(shù),則需要先得到0~100的10個整數(shù),然后均除以100,其它情況依 此類推。
*/
#include<iostream>
#include<cmath>
#include <stdlib.h>
using namespace std;
int main()
{
int x,y,a; //x和y是兩個隨機生成的數(shù),a為學(xué)生輸入的答案
int sum=0; //sum是兩個數(shù)相乘的結(jié)果
int count=0;//count為計數(shù)器
int right=0;//記錄對的題數(shù)
float s; //計算正確率
do
{
count++;
x=rand()%10;//隨機數(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;//計算正確率
if(s<0.75)
{
cout <<"Please ask your instructor foe extra help" << endl;
}
return 0;
}上面的程序還是不夠完善,下面增強前面的程序功能。
a)修改程序,允許用戶輸入能力等級。等級1表示在問題中只能使用一位數(shù),等級2表示最大只能使用2位數(shù),等等。
b)修改程序,增加算術(shù)問題的類型,允許用戶選擇他或者她希望學(xué)習(xí)的算術(shù)問題的類型。選項1表示只是加法問題,2表示只是減法問題,3表示只是乘法問題,4表示只是除法問題。
#include<iostream>
#include<cmath>
#include <stdlib.h>
using namespace std;
int main()
{
int x,y,a; //x和y是兩個隨機生成的數(shù),a為學(xué)生輸入的答案
int sum=0; //sum是兩個數(shù)相乘的結(jié)果
int count=0;//count為計數(shù)器
int right=0;//記錄對的題數(shù)
float s; //計算正確率
int note=0;//記錄能力等級
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;//隨機數(shù)
y=rand()%10;
}
else
{
x=rand()%20;//隨機數(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;//計算正確率
if(s<0.75)
{
cout <<"Please ask your instructor foe extra help !!!" << endl;
}
return 0;
}到此這篇關(guān)于利用C++實現(xiàn)計算機輔助教學(xué)系統(tǒng)的文章就介紹到這了,更多相關(guān)C++計算機輔助教學(xué)系統(tǒng)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言實現(xiàn)順序表的基本操作指南(注釋很詳細(xì))
線性表是最簡單的數(shù)據(jù)結(jié)構(gòu),而順序表又是最簡單的線性表,其基本思想是用一段地址連續(xù)的儲存單元依次存儲線性表的數(shù)據(jù)元素,下面這篇文章主要給大家介紹了關(guān)于C語言實現(xiàn)順序表的基本操作,需要的朋友可以參考下2021-10-10
visual studio 2019工具里添加開發(fā)中命令提示符的方法
這篇文章主要介紹了visual studio 2019工具里添加開發(fā)中命令提示符的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Qt數(shù)據(jù)庫應(yīng)用之實現(xiàn)csv文件轉(zhuǎn)xls
這篇文章主要為大家詳細(xì)介紹了如何利用Qt實現(xiàn)csv文件轉(zhuǎn)xls功能,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定參考價值,需要的可以了解一下2022-06-06
詳解C語言中sizeof如何在自定義函數(shù)中正常工作
在main函數(shù)中,sizeof是可以正常工作的,但是在自定義函數(shù)中就不可以了。所以本文將為大家詳細(xì)講解一下如何解決這一問題,感興趣的可以了解一下2022-05-05

