c++ 作業求解

題目

隨機產生二數值(0~99)及隨機產生(+-*/)組成一計算式.及輸入答案 並判斷是否正確 正確顯示 very good 字樣然後問下一題 錯誤印出 no pliease try again 然後巨續回答 同一題目 直到達隊為止 完成五題印出 the programmed learning end 程式結束!!

目前我做得程式

#include <iostream>

#include <cstdio>

using namespace std;

int main()

{

int a,b,c,ans;

srand(time(NULL));

a=rand()%100;

b=rand()%100;

c=rand()%4;

if(c==0)

{

cout<<a<<"+"<<b<<"=?";

cin >>ans;

if(ans==a+b)

cout<<"very good"<<endl;

else

cout<<"NO!!Please try again"<<endl;

}

if(c==1)

{

cout<<a<<"-"<<b<<"=?";

cin >>ans;

if(ans==a-b)

cout<<"very good"<<endl;

else

cout<<"NO!!Please try again"<<endl;

}

if(c==2)

{

cout<<a<<"*"<<b<<"=?";

cin >>ans;

if(ans==a*b)

cout<<"very good"<<endl;

else

cout<<"NO!!Please try again"<<endl;

}

if(c==3)

{

cout<<a<<"/"<<b<<"=?";

cin >>ans;

if(ans==a/b)

cout<<"very good"<<endl;

else

cout<<"NO!!Please try again"<<endl;

}

system("pause");

return 0;

}

3 個解答

評分
  • 5 年前
    最佳解答

    初學者要練習多利用迴圈 ( for, while ), switch 等

    可以縮短程式碼並使程式容易閱讀

    另外變數也可以取稍微容易分辨的名字

    我不知道題目是不是只有一個運算子

    不過這應該是基礎練習, 也不至於要轉 postfix 之類的

    排版不好的話可以到這:

    http://ideone.com/VKhxNK

    #include <cstdio>

    #include <cstdlib>

    #include <ctime>

    int main(){

    srand(time(NULL));

    int a, op, b, rightAns, userAns, isRight, rightAnsCount=0;

    char opc;

    // a operator b = ans

    while(rightAnsCount<5){

    a=rand()%100;

    op=rand()%4;

    b=rand()%100;

    switch(op){

    case 0: opc='+'; rightAns=a+b; break;

    case 1: opc='-'; rightAns=a-b; break;

    case 2: opc='*'; rightAns=a*b; break;

    case 3: opc='/'; rightAns=a/b; break;

    }

    printf("Question: %d %c %d = ?\n",a,opc,b);

    isRight=0;

    while(!isRight){

    scanf("%d",&userAns);

    if(userAns==rightAns){

    puts("Very good");

    isRight=1;

    }else{

    puts("NO!! Please try again");

    }

    }

    rightAnsCount++;

    }

    puts("The programmed learning end");

    system("PAUSE");

    return 0;

    }

    參考資料: ME
    • 登入以對解答發表意見
  • 5 年前

    我想問題應該是

    1.做錯之後並沒有繼續回答同一題

    2.無法回答五題

    • 登入以對解答發表意見
  • 卸貨
    Lv 5
    5 年前

    兩個問題:

    1. 我從頭看到尾,沒看到你描述你的問題在哪裡?你是想讓我們自己看你的程式碼然後告訴你哪裡有問題嗎?

    2. 你會寫函式嗎?你會的話我才要教你,不然做起來會很複雜。

    • 登入以對解答發表意見
還有問題?馬上發問,尋求解答。