1. 程式人生 > >作業四 簡單四則運算

作業四 簡單四則運算

技術分享 epo 利用 src 避免 隨機 mat inter 一個

業要求來源: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


作業四 簡單四則運算