C語言程序設計第三次作業


C語言程序設計第三次作業

(一).改錯題

1.計算f(x)的值:輸入實數x,計算並輸出下列分段函數f(x)的值,輸出時保留1位小數。

     輸入輸出樣例1:

   Enterr x: 10.0
   f(10.0) = 0.1
輸入輸出樣例2:
   Enter x: 234
   f(234.0) = 234.0,源程序如圖:

對源程序進行編譯

發現錯誤,在第9行的式子后面少了" ; ",格式錯誤,
經改正,將“ ; ”填上,繼續進行編譯:

發現錯誤在第11行中else后面不應該加條件,格式錯誤,
經改正,將(想!=10),去掉,進行編譯:

發現錯誤,源程序在if后面加上了“ ; ”,導致else沒有和其配對的if,格式錯誤,
經改正,將“ ;”去掉,進行編譯:

發現錯誤,在第15行中缺少了標點“ ,”,格式錯誤,
經改正,將“ ,”填上,運行編譯:

沒有錯誤,運行得:

發現得到的答案與應得答案不符,經檢查發現源程序中第15行中的“%.1f”寫成了“%.lf”,
經改正,編譯運行:

發現輸入值為10時正確,但當其不為10時錯誤,在第6行中“%f應該為“%lf”,第7行中的條件x=10應表示為x==10;

經改正后編譯運行正確

(二)學習總結

1.

上圖的確切含義是什么?這個else應該和哪個if配對?如何明確表達這種配對方法?

含義:判斷條件是否為a和b,是則x=x+1,否則執行y=y+1;這個else應該和第2個if配對;if應該和與它上面相近的else配對。

            正確的表達應為:

2..C語言的表達式 (-10< x <10)能夠表達x在區間(-10,10)嗎?為什么?如果不能,正確的表達式應該怎么寫?

不能表達,因為在計算機的2進制中只有1和0,如按照(-10<x<10)進行計算,無論輸入什么值,都會顯示在這個區間內,並按照該條件下面的語句進行;正確的書寫應該為(x>-10&&x<10).

3.C語言中輸入數據時,如果遇到非法字符,則認為輸入結束。運行程序(1),輸入123a,看看輸出結果是什么?你能解釋是為什么嗎?,

程序(1)

運行結果為:

因為在定義是只是定義了整型變量a,b,並沒有定義字符變量,而在輸入時卻出現了字符。導致出現非法字符,程序還會默認輸入完成而停止,使出現了b=1,如果想要輸出字符a的話源程序應該為:

此時再進行輸入,可以輸出“b=a”,如圖:

scanf()函數的返回值是成功讀入數據的個數,如果沒有讀取任何數據,則返回0。運行程序(2),分別輸入123 45和123a,看看輸出結果是什么?為什么?

程序(2)

運行結果為:

由題可知該函數的返回值是成功讀入數據的個數。源程序中定義的a,b均為整型,scanf中的輸入符號也為整型的,所以123 45 時,返回值為2; 而當輸入值變為123a是出現了非法字符,導致程序無法正常讀取數據,輸出的返回值變為1.

(3)修改程序(1),當輸入非法數據時,輸出“Input error!"

(4)對其他你認為需要進行總結的內容進行總結。

對於這章中的知識,我認為還需要記住運算符號的正確使用,如等號在C語言中的使用,當出現一個“=”是表示將等號右邊的值付給左邊的變量,而且左邊的不可以為式子,當要表示兩個量相等時應該輸入“==”,還應該注意各個計算符號之間的運算先后順序;還有就是我自己經常會犯的錯誤,再輸入是缺少符號" & ",如果忘記輸入的話程序雖然不會被檢查出錯誤,但當輸出時是無法輸出的,一定不要忘記該加上的符號。

三.實驗總結

1.計算分段函數

(1)題目:輸入在一行中給出實數x,在一行中按“f(x) = result”的格式輸出,其中x與result都保留兩位小數。

(2)流程圖:

(3)源代碼:

(4)測試數據,及運行結果:

結果和預期相符。
#######(5)實驗分析
該題的難度並不大,只是應該注意x與resurt均為double類型的變量,不可以定義成int類型的,還有要注意else后面不可以加任何條件。

2.算術入門之加減乘除

(1)題目:在一行內輸入兩個不超過100的非負整數a和b,中間以一個空格間隔,且保證b不為0。並且:如果a能夠被b整除,那么a/b應輸出為整數格式,否則a/b輸出為帶兩位小數的格式。

(2)流程圖:

(3)源代碼:

(4)測試數據,及運行結果:

結果和預期相符。
#######(5)實驗分析
本題中應注意的還是要求的輸出格式問題,還有前面提到的如果a能夠被b整除,那么a/b應輸出為整數格式,否則a/b輸出為帶兩位小數的格式。注意整除問題,考慮問題要全面。

3.輸出三角形面積和周長

(1)題目:本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。

(2)流程圖:

(3)源代碼:

(4)測試數據,及運行結果:

結果和預期相符。
#######(5)實驗分析
本題輸出是要求保留兩位小數,所以應該將面積,周長定義為double類型,同時在輸出是應該為“%.2f”,保證無論結果是否為小數都會按題中的要求輸出。還有就是本題中用到了“sqrt”,所以應該加上#include <math.h>,表示使用數學運算字符。

(4)出租車計價

(1)題目:

(2)流程圖:

(3)源代碼:

(4)測試數據,及運行結果:

結果和預期相符。

#######(5)實驗分析。
本題解決前應該先理清楚相應的關系,先按照數學方法進行簡單的計算,弄清楚該用什么樣的式子去算,在編寫成C語言,注意題目中要求的保留小數位數,四舍五入等約束條件,還有“=”與“==”的區別運用。題中的“營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)”不會受到行使里程的限制,應注意。

四.PTA提交列表


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM