1. 程式人生 > >第三次作業:個人項目-小學四則運算

第三次作業:個人項目-小學四則運算

部分 () 字符數 n) ima borde 技術分享 left review

博客園:https://www.cnblogs.com/zpfs/

github倉庫:https://github.com/rg-zpf/rg-software

第一部分:要求

具體要求:任何編程語言都可以,命令行程序接受一個數字輸入,然後輸出相應數目的四則運算題目和答案。例如輸入數字是 30, 那就輸出 30 道題目和答案。 運算式子必須至少有兩個運算符,運算數字是在 100 之內的正整數,答案不能是負數。 如:23 - 3 * 4 = 11。

第二部分:設計

1.需求設計

①隨機產生題目

②題目中至少有二個以上的運算符

③提示用戶輸入題目數量

④判斷答案對錯,統計分數

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

2.功能設計

①根據用戶輸入題目數,循環n次,代表n道題目

②判斷對錯,答案與誤差之間相差0.1,如果大於0.1,則為錯誤

③答案不能出現負數,小於0,則跳轉重新出題

④count記錄答案正確數,便於統計分數

第三部分:代碼實現

①首先產生數字為100以內的四則運算,按照用戶輸入題目數n去循環輸出

②因為有一道題目中有兩個運算符,所以要判斷計算優先級問題。我的做法是把兩個運算符存入到一個字符數組中,如果第一個運算符ku[0]是“*”或“/”,那就直接運算,第二個雲算法只要判斷是什麽就也可以直接運算了;如果第一個運算符ku[0]不是“*”或“/”,就要判斷第二個運算符ku[1]是否為“*”或“/”,如果是,就先計算後面兩個數,然後在將後面計算結果與前面相加或者相減(因為前面肯定不是“*”或“/”,所以只有是“+”或“-”);如果不是,則式子中只有“+”和“-”的運算,只要判斷符號就可以順序計算了。

③答案與用戶結果之間的誤差為0.1,並要記錄正確結果數目count,再用(float)count/n*100輸出分數。

部分代碼:

Scanner input = new Scanner(System.in);
float result = input.nextFloat();
if(Math.abs(result-sum)<0.1){
System.out.println("恭喜你,計算正確,答案是:"+sum);
count=count+1;
}else{
System.out.println("很遺憾,計算錯誤,答案是:"+sum);
}

註:具體代碼,請到github上查看。

結果測試:

技術分享圖片

第四部分:存在問題

①不能夠產生分數

②代碼可優化

個人軟件過程耗時估計與統計表:

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

第三次作業:個人項目-小學四則運算