第四次作業:小學四則運算“軟體”之初版
阿新 • • 發佈:2018-11-12
作業要求來自於https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
GitHub遠端倉庫的地址:https://github.com/201606120084
一、題目要求:
像《構建之法》的人物阿超那樣,寫一個能自動生成小學四則運算題目的命令列 “軟體”。
具體要求:任何程式語言都可以,命令列程式接受一個數字輸入,然後輸出相應數目的四則運算題目和答案。例如輸入數字是 30, 那就輸出 30 道題目和答案。 運算式子必須至少有兩個運算子,運算數字是在 100 之內的正整數,答案不能是負數。 如:
23 - 3 * 4 = 11
擴充套件要求:
1) 要求能出和真分數 (二分之一, 十二分之五,等)相關的練習題。
2) 並且要求能處理使用者的輸入,並判斷對錯,打分統計。 要求能處理使用者輸入的真分數, 如 1/2, 5/12 等。
初步擬定要實現的功能後,估計一下自己需要花多長時間。程式設計過程中記錄自己實際用了多長時間。
然後和同學們比較一下各自程式的功能、實現方法的異同等等。
寫部落格紀錄自己實現的過程和思路。
二、個人軟體過程耗時估計與統計表
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 計劃 | 30min | 90min |
· Estimate | 估計這個任務需要多少時間 | 3h | 50h |
Development | 開發 | 1h | 2h |
· Analysis | 需求分析 (包括學習新技術) | 10min |
12min |
· Design Spec | 生成設計文件 | 0min | 0min |
· Design Review | 設計複審 | 5min | 4min |
· Coding Standard | 程式碼規範 | 3min | 4min |
· Design | 具體設計 | 20min | 34min |
· Coding | 具體編碼 | 1h | 3h |
· Code Review | 程式碼複審 | 5min | 3min |
· Test | 測試(自我測試,修改程式碼,提交修改) | 30min | 40min |
Reporting | 報告 | 10min | 15min |
· | 測試報告 | 0min | 0min |
· | 計算工作量 | 2min | 2min |
· | 並提出過程改進計劃 | 2min | 2min |
三、部分程式程式碼
char yunsuanfu() //隨機生成運算子函式 { int e; e=rand()%4+1; switch(e){ case 1:return '+'; case 2:return '-'; case 3:return '/'; case 4:return '*'; } }
a=rand()%100+1; //隨機生成數字1-100 b=rand()%100+1; //隨機生成數字1-100 c=rand()%100+1; //隨機生成數字1-100
char e =yunsuanfu(); part1(int a,int b,char e){ float result; switch(e){ case '+': {result=a+b;break;} case '-': { result=a-b;break;} case '*':{ aresult=a*b;break;} case '/':{ result=a/b;break;} } return result; } part2(float result,int c,char e){ float finally; switch(e){ case '+': {finally=result+c;break;} case '-': { finally=result-c;break;} case '*':{ finally=result*c;break;} case '/':{ finally=result/c;break;} } return finally; }
四、設計與結果
五、設計過程分析
這次實驗我是用C++這個軟體來完成的,這個軟體是我大一剛接觸計算機專業用的第一個程式設計軟體,通過這次實驗複習了很多之前忘記了的舊知識,
也學到了一些新的知識,一開始不懂+ - * / 計算的優先順序演算法,後面通過自己百度還有問同學就弄明白了這個演算法,對浮點數(float)的應用還不是很熟練,
一開始對計算的邏輯關係梳理地還不是很清晰,對約分(四捨五入演算法)還不是很懂。