作業四 簡單四則運算
業要求來源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
github地址:https://github.com/heathenchen/text
一、題目要求:
像《構建之法》的人物阿超那樣,寫一個能自動生成小學四則運算題目的命令行 “軟件”。具體要求:任何編程語言都可以,命令行程序接受一個數字輸入,然後輸出相應數目的四則運算題目和答案。例如輸入數字是 30, 那就輸出 30 道題目和答案。 運算式子必須至少有兩個運算符,運算數字是在 100 之內的正整數,答案不能是負數。 如:23 - 3 * 4 = 11
擴展要求:
1) 要求能出和真分數 (二分之一, 十二分之五,等)相關的練習題。
2) 並且要求能處理用戶的輸入,並判斷對錯,打分統計。 要求能處理用戶輸入的真分數, 如 1/2, 5/12 等。
二,設計思路:
工具:visual c++
語言:C語言
思路:創建3個隨機數和兩個隨機的運算符(在包含兩個運算符的情況下)。比較用戶輸入的答案和計算出的答案是否相同,用兩個變量去記錄它答對or答錯。用pf函數(用於顯示函數信息)來輸出相關信息
三 主要代碼
operation(int x,int y,char s){ float answer; switch(s){ case ‘+‘: {answer=(float)x+(float)y;break;} case ‘-‘: { answer=(float)x-(float)y;break;} case ‘*‘:{ answer=(float)x*(float)y;break;} case ‘/‘:{ answer=(float)x/(float)y;break;} } return answer; } x=rand()%100+1; //產生隨機數 y=rand()%100+1; z=rand()%100+1; s=Operator(); //利用函數產生隨機運算符 s1=Operator(); if(s==‘-‘||s==‘/‘){ while(x<y){ x=rand()%100+1; //若前後出現後者大於前者則重新產生隨機數避免出現負數 y=rand()%100+1; } }
printf("\n %d :%d%c%d%c%d=",i+1,x,s,y,s1,z);
scanf("%f",&result);
answer=operation(x,y,s);
if(s1==‘-‘||s1==‘/‘){
while(answer<z||answer<z){
z=rand()%100+1;
}
}
pf(answer,result,s1,z);
四 結果顯示
五 主要問題
對於C語言已經生疏,對c語言函數的生命周期和作用於忘記了很多,要通過相關資料才能記得。一開始測試的時候,無論開始多少次,其產生的隨機數的結果都是一樣的,通過查閱相關資料,發現了是沒有把偽隨機數變為真隨機數,通過函數srand( (unsigned)time( NULL ) );用系統時間來初始化,即使用 time函數來獲得系統時間,它的返回值為從 00:00:00 GMT, January 1, 1970 到現在所持續的秒數,然後將time_t型數據轉化為(unsigned)型再傳給srand函數,即: srand((unsigned) time(&t));。代碼命名方面想通過標準的方式去命名代碼,但很多英文單詞通過翻譯表達不了這個變量/常量它所表答的意思,所以還是用了x,y,z等,小數化為分數,我查閱了但沒有找到相關資料,希望能夠提供相關的資料或demo給我。開始前腦中過了一遍,覺得邏輯方面很簡單,但實施起來缺又很多問題,有不少工序也沒有做,下面表中時間為0的。
六 時間表(單位為min)
PSP 2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 計劃 | 5 | 20 |
Estimate | 估計這個任務要多少時間 | 120 | |
Development | 開發 | 70 | 80 |
Analysis | 需求分析(包括學習新技術) | 5 | 15 |
Design Spec | 生成設計文檔 | 0 | 0 |
Design Review | 設計復審 | 0 | 0 |
Coding Standard | 代碼規範 | 5 | 15 |
Design | 具體設計 | 40 | 30 |
·Coding | 具體編譯 | 40 | 50 |
Code Review | 代碼復審 | 0 | 0 |
Test | 測試(自我測試,修改代碼,提交修改) | 20 | 15 |
Reporting | 報告 | 20 | 15 |
測試報告 | 0 | 0 | |
計算工作量 | 5 | 5 | |
並提出過程計劃 | 0 | 0 |
作業四 簡單四則運算