自動出題程式(10以內的數字的四則運算)

不被看好的青春叫成長發表於2015-03-02

程式碼如下:

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    int num1,num2,op,result1,result2;    //num1,num2:運算元;op:運算子;result1,result2:結果
    do
    {
    srand(time(NULL));
    num1=rand()*10/(RAND_MAX+1);
    num2=rand()*10/(RAND_MAX+1); //生成運算數
    op=rand()*4/(RAND_MAX+1);    //生成運算子 0-- +,1-- -,2-- *,3-- /

    switch (op)
    {
    case 0:
        cout<<num1<<"+"<<num2<<"=?  ";
        cin>>result1;
        if (num1+num2 == result1)
            cout<<"you are right"<<endl;
        else
            cout<<"you are wrong"<<endl;
        break;
    case 1:
        cout<<num1<<"-"<<num2<<"=?  ";
        cin>>result1;
        if (num1-num2 == result1)
            cout<<"you are right"<<endl;
        else
            cout<<"you are wrong"<<endl;
        break;
    case 2:
        cout<<num1<<"*"<<num2<<"=?  ";
        cin>>result1;
        if (num1*num2 == result1)
            cout<<"you are right"<<endl;
        else
            cout<<"you are wrong"<<endl;
        break;
    case 3:
        cout<<num1<<"/"<<num2<<"=?  ";
        cin>>result1;
        cout<<"餘數為=?  ";
        cin>>result2;
        if ((num1/num2 == result1)&&(num1%num2==result2))
            cout<<"you are right"<<endl;
        else
            cout<<"you are wrong"<<endl;
        break;
    }
    }while(1);
    return 0;

}

庫cstdlib中含有隨機數生成函式。程式的迴圈內的第一條語句srand(time(NULL))的作用是設定隨機數的種子,隨機數的生成需要種子,不同的種子可以生成不同1隨機數序列。如果使用者不設定隨機數的種子,系統會指定一個。系統為每個程式、每次執行指定的隨機數的種子都是相同的,即在程式中,每次執行出的題目都是相同的。但同時,如果程式設計師設定的種子是一個固定值,那麼程式每次執行的到的隨機數序列還是相同的。如果讓程式每次執行時選擇的種子不一樣呢?在一個計算機系統中,時間總是在變。因此把系統時間設為種子是一個很好的想法。time(NULL)就是取當前的系統時間。為了使用時鐘,需要包含標頭檔案ctime。                                               ————翁惠玉老師 《C++程式設計思想與方法》 

相關文章