(一)改錯題
計算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
源程序(有錯誤的程序)
錯誤信息:
錯誤原因:if語句后不加;
改正方法:去掉if語句后的;
錯誤信息:
錯誤原因:沒有加()和;
改正方法:在語句后加()和;
錯誤信息:
錯誤原因:else語句后要加;
改正方法:在else語句后加;
錯誤信息:
錯誤原因:變量之間用逗號隔開,且引號中的句子與變量之間用,隔開
改正方法:在變量之間和語句后加,
(二)學習總結
1.if(a)if(b) x=x+1;else y=y+1; 的確切含義是什么?這個else應該和哪個if配對?如何明確表達這種配對方法?將該段代碼按照規范化的格式進行書寫。
確切含義是·輸入a,b都執行x=x+1這條語句,否則執行y=y+1.這個else和就近的配對也就是第二個輸入b的這個。因為a,b是並且的關系所以說a,b應該用&&連接代碼應改為:
if(a&&b)
{
x = x + 1;
}
else
{
y = y + 1;
}
2.C語言的表達式 (-10< x <10)能夠表達x在區間(-10,10)嗎?為什么?如果不能,正確的表達式應該怎么寫?
不能,因為在C語言中都是<一個級別的,所以是是依次從左向右進行,x大於-10,那么前面的語句是對的,則輸出的是1,1,一定是小於10的,所以是個恆成立的問題。如果x小於等於-10,那么輸出的是0,0,也是一個恆小於10的。綜上所述,這條語句不管怎么都是恆成立的無法判斷。 正確的表達式為 (x>-10&&x<10)
3.C語言中輸入數據時,如果遇到非法字符,則認為輸入結束。運行程序(1),輸入123a,看看輸出結果是什么?你能解釋是為什么嗎?,
程序(1)#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
運行結果:
原因:因為a是int類型的,應該是整數,所以不會讀入a,而b沒有輸入,輸出的b為隨機數
scanf()函數的返回值是成功讀入數據的個數,如果沒有讀取任何數據,則返回0。運行程序(2),分別輸入123 45和123a,看看輸出結果是什么?為什么?
程序(2)
原因:因為返回值是成功讀取變量的個數,所以當輸入“123 45”的時候,因為兩個數都是整形,可以讀出兩個數據,所以n=2;當輸入“123a”的時候因為“a”是字符,為非法數據,不能賦值,所以只將“123”賦值給了a,程序只讀出一個數據,所以n=1
修改程序(1),當輸入非法數據時,輸出“Input error!".樣例如下:
4.對其他你認為需要進行總結的內容進行總結。
需掌握的:①關系運算符和關系表達式②如何判斷兩實數相等③常用數學函數的使用④邏輯算符和邏輯表達式⑤邏輯運算的短路特性⑥if...else語句和if語句的嵌套⑦條件運算符
需注意的細節:①if()里的等於號應該是兩個不是一個②要注意是字符數據的輸入還是實數或整形的輸入③使用數學函數時一定要有頭文件包含命令“#include
測試數據及結果
(三)實驗總結
1.題目:回文數
判斷一個5位數是不是回文數。例如12321是一個回文數,即它的個位與萬位相同,十位與千位相同。
(1)流程圖
(2)源代碼
(3)測試數據及運行結果
2.計算火車運行時間
4.階梯電價
為了提倡居民節約用電,某省電力公司執行“階梯電價”,安裝一戶一表的居民用戶電價分為兩個“階梯”:月用電量50千瓦時(含50千瓦時)以內的,電價為0.53元/千瓦時;超過50千瓦時的,超出部分的用電量,電價上調0.05元/千瓦時。請編寫程序計算電費。
(1)流程圖
本題要求根據火車的出發時間和達到時間,編寫程序計算整個旅途所用的時間。
(1)流程圖
(2)源代碼
(3)測試數據及運行結果
3.. 三天打魚兩天曬網
中國有句俗語叫“三天打魚兩天曬網”。假設某人從某天起,開始“三天打魚兩天曬網”,問這個人在以后的第N天中是“打魚”還是“曬網”?
(1)流程圖
(2)源代碼
(3)測試數據及運行結果
4.階梯電價
為了提倡居民節約用電,某省電力公司執行“階梯電價”,安裝一戶一表的居民用戶電價分為兩個“階梯”:月用電量50千瓦時(含50千瓦時)以內的,電價為0.53元/千瓦時;超過50千瓦時的,超出部分的用電量,電價上調0.05元/千瓦時。請編寫程序計算電費。
(1)流程圖
(2)源代碼
(3)測試數據及運行結果
(四)PTA提交列表