1. 程式人生 > >C語言程序設計第三次作業

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

規範化 提交 區間 ring 輸出 兩個 刪除 span 個數

(一)改錯題

計算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

源程序(有錯誤的程序) #include <stdio.h> int main(void) {

        double x,y;
        printf("Enter x: \n"); 
        scanf("=%f", x);
        if(x = 10);
        { 
            y = 1 / x
        }
        else (x != 10)
        {
           y = x;
        }
        printf("f(%.2f) = %.lf\n" x y); 
        return 0; 
     }
錯誤信息1:技術分享
技術分享
錯誤原因1:語句以分號結束
改正方法1:在語句後加上分號
錯誤信息2:技術分享技術分享
錯誤原因2:else後不能有條件
改正方法2:將其刪除
錯誤信息3:技術分享技術分享
錯誤原因3:printf語句錯誤,少了兩個逗號分隔
改正方法3:在""後與xy之間加上逗號分隔
錯誤信息4:技術分享技術分享
錯誤原因4:if語句()內為判斷語句而不是賦值語句,且不加分號
改正方法4:用判斷語句x==10,且將分號去掉
錯誤信息5:技術分享技術分享

錯誤原因5:輸出格式錯誤
改正方法5:將\n去掉
錯誤信息6:技術分享
錯誤原因6:輸出格式錯誤
改正方法6:將%.2f改為%.1f,%.lf改為%.1f
錯誤信息7:技術分享
錯誤原因7:scanf輸出時取x得地址,且應為%lf型
改正方法7:在x前加&,“”內為%lf
程序運行成功!
技術分享

(二)學習總結
1.if(a)if(b) x=x+1;else y=y+1; 的確切含義是什麽?這個else應該和哪個if配對?如何明確表達這種配對方法?將該段代碼按照規範化的格式進行書寫。
含義是判斷為a且為b的時候執行語句x=x+1,否則執行y=y+1,這個else與離它最近的if配對,正確的配對方式如下:
if(a&&b)
{
x = x + 1;
}
else
{
y = y + 1;
}
2.C語言的表達式 (-10< x <10)能夠表達x在區間(-10,10)嗎?為什麽?如果不能,正確的表達式應該怎麽寫?
不能,因為邏輯運算符的合並性是從左至右的,若輸入的數大於10是為真,滿足x>-10,此時x被賦值為1,且滿足x<10,因而正確,故不能表達在區間(-10,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;
}
輸出結果為技術分享

原因是ab均為整型數,而a為非法字符,故認為輸入結束

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

int main()
{   
    int  a, b,n;
    n = scanf("%d %d", &a, &b);
    printf("n = %d\n", n);
    return 0;
}
輸出結果為技術分享技術分享
原因是第一中輸入為整型符合定義的int型,故錄入,而123a中a為非法字符,故只能錄取一個,當錄取到a是結束
修改程序:
技術分享
總結:if()內要用判斷語句而不是賦值語句!
double型的輸入為%lf!!
(三)實驗總結
3.(1)題目
判斷一個5位數是不是回文數。例如12321是一個回文數,即它的個位與萬位相同,十位與千位相同。
(2)流程圖
技術分享
(3)源代碼 :
技術分享


(4)測試數據及運行結果
技術分享技術分享

(5)實驗分析
熟悉分支結構的正確形式
5.(1)問題
計算火車運行時間本題要求根據火車的出發時間和達到時間,編寫程序計算整個旅途所用的時間。
(2)流程圖
技術分享

(3)源代碼

技術分享

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

技術分享

(5)實驗分析

註意輸出格式,要用%02d!

7.(1)題目
三天打魚兩天曬網,中國有句俗語叫“三天打魚兩天曬網”。假設某人從某天起,開始“三天打魚兩天曬網”,問這個人在以後的第N天中是“打魚”還是“曬網”?

(2)流程圖

技術分享

(3)源代碼

技術分享

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

技術分享技術分享

(5)實驗分析

考慮問題要全面,細心!

9.(1)題目
階梯電價,為了提倡居民節約用電,某省電力公司執行“階梯電價”,安裝一戶一表的居民用戶電價分為兩個“階梯”:月用電量50千瓦時(含50千瓦時)以內的,電價為0.53元/千瓦時;超過50千瓦時的,超出部分的用電量,電價上調0.05元/千瓦時。請編寫程序計算電費

(2)流程圖

技術分享

(3)源代碼

技術分享

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

技術分享技術分享

(5)實驗分析

輸出格式為%.2f且此處使用分支結構if,if else,else。

四.PTA提交列表

技術分享 技術分享

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