C語言程序設計第三次作業
(一)改錯題
- 計算f(x)的值:輸入實數x,計算並輸出下列分段函數f(x)的值,輸出時保留1位小數。
1.源程序:
2.錯誤及改正。
- 錯誤信息1:
- 錯誤原因:中括號內內容未加分號。
- 改正方法:在x后加分號。
- 錯誤信息2:
- 錯誤原因:if語句后的括號后不應該有分號。
- 改正方法:將括號后分號去掉。
- 錯誤信息3:
- 錯誤原因:else后不應加括號。
- 改正方法:將括號及以內內容去掉。
- 錯誤信息4:
- 錯誤原因: x,y前沒有逗號。
- 改正方法:在下x,y前加上逗號。
- 錯誤信息5:同錯誤信息4反映情況一。
- 錯誤原因:經檢查xy之間仍舊差一個逗號。
- 改正方法:xy之間加一個逗號。
- 錯誤信息6:經檢查,輸入語句中未加入地址符&。
- 錯誤原因:x未取地址符。
- 改正方法:在x前加一個&。
- 錯誤信息7:經繼續檢查,發現輸入語句存在問題。
- 錯誤原因:輸入語句中“%f”不能直接輸入,應改為“%lf”。
- 改正方法: 將%f改為%lf。
3.改正后正確程序。
(二)
1.if(a)if(b) x=x+1;else y=y+1; 的確切含義是什么?這個else應該和哪個if配對?如何明確表達這種配對方法?將該段代碼按照規范化的格式進行書寫。
- 1.如果輸入的語句符合括號內的條件就執行x=x+1;否則就執行y=y+1
- 2.與第二個配對
- 3.在else后加{}
- 改正后的代碼:
2.C語言的表達式 (-10< x <10)能夠表達x在區間(-10,10)嗎?為什么?如果不能,正確的表達式應該怎么寫?
- 1.不能。
- 2.這樣的話先會比較-10和x的大小,然后再比較后者,這樣不會輸出正確結果。
- 3.只能用x>-10 && x<10;來表示。
3.C語言中輸入數據時,如果遇到非法字符,如果遇到非法字符,則認為輸入結束。運行程序(1),輸入123a,看看輸出結果是什么?你能解釋是為什么嗎?
- 1.輸出結果:
- 2.原因:非法字符無法輸出,所以就輸出了一個隨機數。
(2)(2)scanf()函數的返回值是成功讀入數據的個數,如果沒有讀取任何數據,則返回0。運行程序(2),分別輸入123 45和123a,看看輸出結果是什么?為什么?
- 1.輸出結果:123 45
- 123a
- 總結:因為返回值是成功讀取變量的個數,所以當輸入“123 45”的時候,可以讀出兩個數據,故n=2;當輸入123a的時候因為a為非法數據,不能賦值,所以只將123賦值給了a,所以n=1。
- 新程序:
- 內容總結:在這段學習中,我學會了數學符號的使用方法,在我們以后進行的復雜編程中會起到很大作用;還有就是一定要注意整形,實型的區別,還有就是if,else語句的用法,注意相關的格式。
(三)實驗總結
題目2.本題目要求計算下列分段函數f(x)的值
2.流程圖
3.源程序
4.運行結果
- 第一次:輸入10
- 結果:
- 結果符合預期
- 第二次:輸入-0.5
- 結果:
5:出現的問題
- 問題1:運用了數學符號sqrt,但出現以下情況。
- 解決辦法:經檢查發現未加上數學專用字符#include <math.h>
題目4.對於輸入的兩個整數,按照要求輸出其和差積商
2.流程圖:
3.源程序:
4.運行結果
- 第一次:輸入6 3
- 結果:
- 第二次:輸入8 4
- 結果:
5.出現的問題
- 問題:在做除法時第一次未考慮除不盡的情況。
- 解決辦法:增添if語句,然后向同學請教了和,差,積,商的英文用法。
題目6:本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。
1.流程圖:
2.源程序:
3.運行結果
- 輸入5 5 3:
- 輸入1 4 1:
4.出現的問題
- 問題1:輸出錯誤,經檢查,未加入數學字符#include <math.h>
- 改正方法:加入上述字符。
- 運行符合預期。
題目8:本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。
1.流程圖:
2.源程序:
3:輸出結果
- 輸入2 6 2
- 輸出結果:
4.出現的問題
- 問題1:輸出值全為整數
- 原因:未考慮使用double
- 解決辦法:在km,money中使用double語句。
(五)PTA提交列表