Visual Studio C++程式設計幫忙解答 (急!)

以下總共兩題相似題型,因時間很急促無法做多餘的修改,高手請寫完原始程式碼後使用 Visual Studio 2005/2008 C++ 程式跑過一遍,順利無錯誤後分享,一題也好兩題最佳,最快者小弟我將會無私奉上GP20點給最辛苦的您!!!

第一題:

以亂數產生50個三位數,並將所有奇數寫入 Odd.txt 中、所有偶數寫入 Even.txt中、所有質數寫入 Prime.txt 中。(所有文字檔,格式自訂)

第二題:

以亂數產生兩個介於 [1,100] 間的數字,及四則運算其中之一,產生算式題目請使用者回答,並判定答案正確與否? (除法答案誤差在0.1內者,算正確)

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    1.

    bool prime(int);

    int main()

    {

    srand(time(0)); //將time(0)丟入srand隨機因子,以達成隨機效果

    int list[50];

    cout << "50個數字為: \n";

    for(int i=0;i<50;i++)

    {

    int number=rand()%1000; //必須放在裡面重複宣告,才會更新數字,%1000讓值永遠低於1000

    list[i]=number;

    cout << list[i] << " ";

    if(i%10==0 && i>0) //這是排版

    cout << endl;

    }

    ofstream output1("Even.txt",ios::out);

    ofstream output2("Odd.txt",ios::out);

    for(int i=0;i<50;i++)

    {

    if(list[i]%2==0) //若為偶數,丟到Even.txt

    output1 << list[i] << "\n";

    else

    output2 << list[i] << "\n"; //若為奇數,丟到odd.txt

    }

    output1.close();

    output2.close();

    ofstream output3("Prime.txt",ios::out);

    for(int i=0;i<50;i++)

    {

    if(prime(list[i])) //檢查,是質數就輸出

    output3 << list[i] << "\n";

    }

    output3.close();

    cout << "\n\n需要的資料已儲存";

    }

    bool prime(int number)

    {

    int i; //用傳進來的number去除,不能整除就是質數

    for(i=2;i<=number;i++)

    if(number%i==0) //若能整除就跳出

    break;

    if(i==number) //若從頭到尾都沒整除,撐到最後了(i=number)

    return true; //它就是質數,回傳真

    return false; //剩下的就回報假,不需加else,因為一個函式只要遇到一個return就會終止

    }

    2.

    int main()

    {

    srand(time(0));

    int choose=rand()%4; //讓choose在0~3不斷變動

    double number1=rand()%100+1,number2=rand()%100+1; //%100讓它控制在0~99,+1即1~100

    double input,answer;

    bool mod=false;

    char operate[4]={'+','-','*','/'}; //運算子

    cout << "題目是: ";

    cout << number1 << operate[choose] << number2 << endl;

    cout << "請輸入答案: ";

    cin >> input;

    if(choose==0)

    answer=number1+number2;

    if(choose==1)

    answer=number1-number2;

    if(choose==2)

    answer=number1*number2;

    if(choose==3)

    {

    answer=number1/number2; //檢查是不是正負0.1之內

    if(input<=answer+0.1 && input>=answer-0.1) //不過回答時仍要參考第二位數

    mod=true; //0.23,輸入0.1,錯

    }

    if(input==answer || mod)

    cout << "\n恭喜答對!!";

    else

    {

    if(choose==3)

    cout << "\n答錯了!!答案是 " << fixed << setprecision(2) << answer;

    else

    cout << "\n答錯了!!答案是 " << answer;

    }

    Source(s): 我自己
  • 月羽
    Lv 5
    1 decade ago

    時間緊湊?期末考作業喔...

Still have questions? Get your answers by asking now.