(一)改錯題
計算f(x)的值:輸入實數x,計算並輸出下列分段函數f(x)的值,輸出時保留1位小數。
(錯誤一)
錯誤原因及改正:第九行語句結尾缺少半角分號,添加分號即可改正
(錯誤二)
錯誤原因及改正:第七行if語句末尾加了分號,導致else語句沒有配對的if,刪去if語句后的分號即可
(錯誤三)
錯誤原因及改正:else語句后面不能加條件,刪除即可
(錯誤四)
錯誤原因及改正:printf語句中格式化輸出語句與變量之間缺少逗號,增加即可
(錯誤五)
錯誤原因及改正:scanf語句中,百分號前等號多余,刪除
(錯誤六)
錯誤原因及改正:scanf語句中,未添加取地址符
(錯誤七)
錯誤原因及改正:if語句中,等於的表示需要同時用兩個等號
(錯誤八)
錯誤原因及改正:printf語句中,保留小數表達錯誤,改為%.1f
(二)學習總結
1.if(a)if(b) x=x+1;else y=y+1; 的確切含義是什么?這個else應該和哪個if配對?如何明確表達這種配對方法?將該段代碼按照規范化的格式進行書寫。
本題所給的這段代碼"if(a)if(b) x=x+1;else y=y+1"的含義是:在同時滿足a和b的情況下,才會執行x=x+1語句,否則就會執行y=y+1語句。為且條件,符號用&&表示;根據if else的就近配對原則,代碼段里的else是和后一個if配對;用規范的格式表示這段代碼,如下圖:
2.C語言的表達式 (-10< x <10)能夠表達x在區間(-10,10)嗎?為什么?如果不能,正確的表達式應該怎么寫?
C語言的表達式 (-10< x <10)不能夠表達x在區間(-10,10),因為在C語言里面,邏輯運算符的運行順序是從左至右的順序,而 (-10< x <10)這種形式,-10會與輸入的數據比較,輸出正確與否,即0或1。正確的表達式如下:
(x >-10 && x < 10);
3.C語言中輸入數據時,如果遇到非法字符,則認為輸入結束。運行程序(1),輸入123a,看看輸出結果是什么?你能解釋是為什么嗎?
程序(一)
#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
答:輸入123a,運行結果,如圖:
輸入a,沒有定義字符型所以系統默認遇到非法字符,則認為輸入結束。於是a=輸出123,而b隨意給一值=1.
在a后繼續輸入數字 如圖
scanf()函數的返回值是成功讀入數據的個數,如果沒有讀取任何數據,則返回0。運行程序(2),分別輸入123 45和123a,看看輸出結果是什么?為什么?
程序(二)
#include <stdio.h>
int main()
{
int a, b,n;
n = scanf("%d %d", &a, &b);
printf("n = %d\n", n);
return 0;
}
分別輸入123 45和123a 運行結果如圖:
再輸入123a的時候,因為含有a這一非法數據,系統默認終止輸入,所以無論后面輸入多少數據,都不會讀入,即無效
修改程序(1),當輸入非法數據時,輸出“Input error!".樣例如下:
修改的程序如下:
#include <stdio.h>
int main()
{
int a, b,n;
scanf("%d %d", &a, &b);
if(a == 2)
{
printf("a = %d, b = %d\n", a, b);
}
else
{
printf("Input error!");
}
return 0;
}
4.對其他你認為需要進行總結的內容進行總結。
首先,第一點,運用if和else語句的時候,一定要考慮配對問題,一定要對應好,否則編譯就會出現錯誤,多個if和else的程序中if和else的對應很容易出錯,還有就是if和else的就近原則,else是和離它最近的if對應的。還要記得編寫程序的時候if語句不是一個完整的語句,所以后面不能加分號,同樣else語句后面不能夠加括號,而else if可以加括號。所以,細節方面的一定要記清楚,可能一點小小的錯誤,就會導致整個程序無法進行。還有就是我們編寫的時候要懂得變通,一條路行不通的時候,就應該停下來想一想自己是不是錯了,重新換一條路子。
(三)實驗總結
1.計算函數值
(1)題目
要求計算下列分段函數f(x)的值:
(2)流程圖
(3)源代碼
(4)測試數據及運行結果
(5)實驗分析
問題及解決辦法:本題寫作順利,設置程序框圖也未遇到問題。
2.算數問題
(1)題目
算術入門之加減乘除,對於輸入的兩個整數,按照要求輸出其和差積商。
(2)流程圖
(3)源代碼
(4)測試數據及運行結果
(5)實驗分析
問題及解決辦法:因為對ab定義的為整形變量,所以除法計算時結果出現錯誤,將整型變量強制轉換為double型,解決了問題。
3.輸出三角形面積和周長
(1)題目
本題要求編寫程序,根據輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。注意:在一個三角形中, 任意兩邊之和大於第三邊。三角形面積計算公式:area=√s(s−a)(s−b)(s−c),其中s=(a+b+c)/2。
(2)流程圖
(3)源代碼
(4)測試數據及運行結果
(5)實驗分析
問題及解決辦法:輸出結果不對,因為本題涉及很多除法及開方運算,所以會出現很多浮點數,將整形定義為double型解決了問題
4.出租車計價
(1)題目
本題要求根據某城市普通出租車收費標准編寫程序進行車費計算。具體標准如下:
起步里程為3公里,起步費10元;
超起步里程后10公里內,每公里2元;
超過10公里以上的部分加收50%的回空補貼費,即每公里3元;
營運過程中,因路阻及乘客要求臨時停車的,按每5分鍾2元計收(不足5分鍾則不收費)。
(2)流程圖
(3)源代碼
(4)測試數據及運行結果
(5)實驗分析
問題及解決辦法:時間收費與里程收費的結合遇到問題,和同學討論后解決
(四) pta提交列表