C語言I博客作業07
作業頭
| 這個作業屬於那個課程 | C語言程序設計 |
|---|---|
| 這個作業要求在哪里 | https://edu.cnblogs.com/campus/zswxy/SE2020-3/homework/11586 |
| 我在這個課程的目標是 | <靈活運用while語句,復習,簡化代碼> |
| 這個作業在那個具體方面幫助我實現目標 | <題目需要靈活變通,應多方考慮,訓練思維能力> |
| 參考文獻 | <C語言程序設計> |
本周作業
PTA實驗作業
代碼互評
學習總結
1.PTA實驗作業(20分/題)

1.1 購物(二) (25分)
用戶購買了若干個商品(商品數不超過10),現在,他告訴你每件商品的價格,你計算出這些商品的平均價格。
1.1.1數據處理
數據表達:設置浮點型變量a,s分別輸入商品價格和計算總價,設置整形變量i初始化為0令其計數;
數據處理:Begin Input a; i←0; if(a<0)then{Output 0.00; End} while(a>=0&&i<10) do {s=←s+a;i++} x←s/i; Output x End
1.1.2實驗代碼截圖

1.1.3 造測試數據
| 輸入 | 輸出 | 說明 |
|---|---|---|
| -1 | 0.00 | 商品數量為0 |
| 1 -1 | 1.00 | 商品數量為1 |
| 890.78 2769.8 12300 3532.2 -1 | 4873.19 | 商品數量為4 |
| 1 2 3 4 5 6 7 8 9 10 -1 | 5.50 | 商品數量為10 |
1.1.4 PTA提交列表及說明

提交列表說明:
編譯錯誤:scanf誤寫成scanf_s,編譯器無法識別;
解決方法:去掉_s
部分正確:未考慮到商品數量為零,直接輸入-1的情況;
解決方法:在進行while循環前進行判斷,若輸入為負數,則輸出0.00,結束程序
1.2 猜數字游戲
猜數字游戲是令游戲機隨機產生一個100以內的正整數,用戶輸入一個數對其進行猜測,需要你編寫程序自動對其與隨機產生的被猜數進行比較,並提示大了(“Too big”),還是小了(“Too small”),相等表示猜到了。如果猜到,則結束程序。程序還要求統計猜的次數,如果1次猜出該數,提示“Bingo!”;如果3次以內猜到該數,則提示“Lucky You!”;如果超過3次但是在N(>3)次以內(包括第N次)猜到該數,則提示“Good Guess!”;如果超過N次都沒有猜到,則提示“Game Over”,並結束程序。如果在到達N次之前,用戶輸入了一個負數,也輸出“Game Over”,並結束程序。
1.2.1 數據處理
數據表達:設置整形變量x,a,i,n,其中a用來儲存設置的隨機數,n為設置的最大輸入次數,i為計數器,x為輸入的測試值;
數據處理:Begin Input a n; i←0; while (i <= n)do {Input x if (x > a)then {Output Too big; i++;} else if (x < a && x >= 0) then{Output Too small; i++;} else if (x < 0) {Out put Game Over; End;} else if (x == a) {i++; if (i == 1) then{Output Bingo!; return 0;} else if (i > 1 && i <= 3) then{Output Lucky You!; return 0;} else if(i > 3 && i <= n) then{Output Good Guess; return 0;}}} Output Game Over; End
1.2.2 實驗代碼截圖

1.2.3 造測試數據
| 輸入 | 輸出 | 說明 |
|---|---|---|
| 58 4 70 50 56 58 60 -2 | Too big Too small Too small Good Guess! | 第四次正確 |
| 58 4 -1 | Game Over | 直接退出 |
| 58 4 1 | Bingo! | 一次正確 |
| 58 4 70 | Too big | 比答案大 |
1.2.4 PTA提交列表及說明

部分正確:輸出內容錯誤,遺漏一種情況;
解決方法:更正輸出內容,補上遺漏的情況
2.代碼互評(5分)
找2份同學代碼,和自己代碼比較,建議互評代碼盡量找代碼風格差異較大。


自己代碼截圖

1:第一位同學只用了while循環,一步解決了問題,比我的代碼簡短很多;
2:第二位和我一樣用了while循環和if判斷,用法不盡相同,但卻異曲同工
3.學習總結(15分)
3.1 學習進度條(5分)
| 周/日期 | 這周所花的時間(h) | 有效代碼行 | 學到的知識點簡介 | 目前比較迷惑的問題 |
|---|---|---|---|---|
| 3/2-3/8 | 4(課堂)+4(課后)=8(h) | 約156行 | for循環 | 同樣的代碼在visual studio軟件與pta網站上輸出答案不同(疑惑) |
| 4/9-4/15 | 4+4.5=8.5 | 約227行 | 定義和調用函數 | 編譯器gcc與clang的區別與使用 |
| 5/16-5/22 | 4+4=8 | 約223行 | 條件語句,嵌套結構 | 嵌套的方法,字符的儲存 |
| 6/23-6/29 | 4+6=10 | 428 | 選擇語句,判斷語句 | 如何把代碼寫的簡單,短小精悍 |
| 7/30-7/6 | 4+4=8 | 256 | while循環,do-while循環 | 應訓練縝密思維,多方考慮 |
3.2 累積代碼行和博客字數(5分)

3.3 學習內容總結和感悟(5分)
3.3.1 學習內容總結

3.3.2 學習體會
這一周學習了while語句,因為學習過for循環所以學起來比較輕松,這次pta作業的問題重點在詳細考慮問題,減少錯漏,以及代碼的簡化。
士不可以不弘毅
任重而道遠
