1. 程式人生 > >個人專案-小學四則運算初版

個人專案-小學四則運算初版

作業要求來源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186

github地址:https://github.com/sizhanhe/-

一、題目要求

像《構建之法》的人物阿超那樣,寫一個能自動生成小學四則運算題目的命令列 “軟體”。具體要求:任何程式語言都可以,命令列程式接受一個數字輸入,然後輸出相應數目的四則運算題目和答案。例如輸入數字是 30, 那就輸出 30 道題目和答案。 運算式子必須至少有兩個運算子,運算數字是在 100 之內的正整數,答案不能是負數。 如:23 - 3 * 4 = 11

擴充套件要求:

1) 要求能出和真分數 (二分之一, 十二分之五,等)相關的練習題。

2) 並且要求能處理使用者的輸入,並判斷對錯,打分統計。 要求能處理使用者輸入的真分數, 如 1/2, 5/12 等。


二、設計思路

程式語言:c語言

工具:

設計思路:主函式讓使用者輸入要練習的題目數量;而後隨機產生隨機數和隨即運算子併產生運算式;判別使用者輸入的結果是否與正確答案一致,提示輸入值是否正確,答題繼續。答題完畢後,統計錯對情況給出判別資料。

類。

四、主要程式碼

    srand((unsigned int)time(NULL));
    for(i=1;i<=n;i++){
        lab1:

        //隨機生成三個數
        oneNum = rand()%100;
        twoNum = rand()%100;
        threeNum = rand()%100;

        //隨機生成運算子
        firstSymbol = rand()%4;
        secondSymbol = rand()%4;

        //判斷運算子優先順序
        if(firstSymbol < secondSymbol ){
            sum = operation(twoNum,threeNum,secondSymbol);
            sum = operation(oneNum,sum,firstSymbol);
        }else{
            sum = operation(oneNum,twoNum,secondSymbol);
            sum = operation(sum,threeNum,firstSymbol);
        }

        //看結果是否為負數,負數重新生成
        if(sum <= 0) goto lab1;

        //打印出題目
        printf("%d %c %d %c %d = ",oneNum,Symbol(firstSymbol),twoNum,Symbol(secondSymbol),threeNum,sum);

        //比對答案是否正確
        scanf("%f",&answer);
        if((int)(100*sum+0.5)/100 == (int)(100*answer+0.5)/100){
            printf("回答正確!!!\n");
            right++;
        }else{
            printf("回答錯誤!!!正確答案是%.2f\n",((100*sum+0.5)/100));
        }
    }

/*
函式名:opreation
函式功能:進行+、-、*、/運算
引數:a,b運算數,symbol運算子號
返回值:運算結果 sum
*/
float operation(int a,int b,int symbol){
    float sum;

    if(symbol == 0) sum = a+b;
    else if(symbol == 1) sum = a-b;
    else if(symbol == 2) sum = a*b;
    else sum = (float)a/(float)b;

    return (sum);
}

/*
函式名:Symbol
功能:將隨機數轉換為對應得運算子號
引數:numSymbol
返回值:symbol
*/
char Symbol(int numSymbol){
    char symbol;
    if(numSymbol == 0) symbol = '+';
    else if (numSymbol == 1) symbol = '-';
    else if (numSymbol == 2) symbol = '*';
    else symbol = '/';
    return symbol;
}

  


 五、執行結果

 


 六、個人軟體過程耗時估計與統計表

 

PSP2.1 Personal Software Process Stages Time Senior Student Time
Planning 計劃 5 15
 Estimate 估計這個任務需要多少時間 10 12
Development 開發 25 30
Analysis 需求分析 (包括學習新技術) 2 50
Design Spec 生成設計文件 4 5
Design Review 設計複審 3 3
Coding Standard 程式碼規範 1 1
 Design 具體設計 10 12
 Coding 具體編碼 10 50
Code Review 程式碼複審 2 2
Test 測試(自我測試,修改程式碼,提交修改) 1 1
Reporting 報告 3 3
  測試報告 1 1
  計算工作量 2 3
  並提出過程改進計劃 1 1