c語言的第四次作業


(一)改錯題

輸出三角形的面積和周長,輸入三角形的三條邊a、b、c,如果能構成一個三角形,輸出面積area和周長perimeter(保留2位小數);否則,輸出“These sides do not correspond to a valid triangle”。

輸入輸出樣例1:
  Enter 3 sides of the triangle: 5 5 3
  area = 7.15; perimeter = 13.00
輸入輸出樣例2:
  Enter 3 sides of the triangle: 1 4 1
  These sides do not correspond to a valid triangle

源程序(有錯誤的程序)

#include <stdio.h>
#include <math.h>
int main(void)
{
    double a,b,c;
    double area,perimeter,s;

    printf("Enter 3 sides of the triangle: ");
    scanf( "%lf%lf%lf",&a,&b,&c );

    if( a + b > c || b + c > a || a + c > b) 
        s = ( a + b + c ) / 2;
        area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c );
        perimeter = a + b + c;
        printf("area = %.2f; perimeter = %.2f\n",area,perimeter);

    else
        printf("These sides do not correspond to a valid triangle\n");

    return 0;        
}

(1)錯誤信息:

錯誤原因:
少了半個括號。函數后面要用括號括起來的。
改正方法:
在計算面積的最后一行加上半個后括號。

(2)錯誤信息:

錯誤原因:
else沒有找到對應的if。
改正方法:
在if和else下的代碼中都加上大括號。

(3)錯誤信息:

錯誤原因:
輸入1 4 1 時,不構成三角形,但是卻輸出結果啦,不符合題目要求。在if判斷時候出現錯誤。
改正方法:
把if判斷的后面的或者換成並且的關系。“&&”

(4)正確的程序

(二)學習總結

1.在編程解決問題的過程中,我們會用到多個if語句,if...else if... 語句以及switch語句,查閱資料,總結一下這三種情況的區別何在,並分別舉例加以說明。
1>例如順序結構(2)作業第四題
高速公路超速處罰
按照規定,在高速公路上行使的機動車,超出本車道限速的10%則處200元罰款;若超出50%,就要吊銷駕駛證。請編寫程序根據車速和限速自動判別對該機動車的處理。
輸入格式:
輸入在一行中給出2個正整數,分別對應車速和限速,其間以空格分隔。
輸出格式:
在一行中輸出處理意見:若屬於正常行駛,則輸出“OK”;若應處罰款,則輸出“Exceed x%. Ticket 200”;若應吊銷駕駛證,則輸出“Exceed x%. License Revoked”。其中x是超速的百分比,精確到整數。
輸入樣例1:
65 60
輸出樣例1:
OK
輸入樣例2:
110 100
輸出樣例2:
Exceed 10%. Ticket 200
輸入樣例3:
200 120
輸出樣例3:
Exceed 67%. License Revoked

2>流程圖

(2)if....語句是都要運行,他們是並列運行的。前后沒有聯系 ,也沒有影響。
1>例如順序結構(2)作業第二題
比較大小
本題要求將輸入的任意3個整數從小到大輸出。
輸入格式:
輸入在一行中給出3個整數,其間以空格分隔。
輸出格式:
在一行中將3個整數從小到大輸出,其間以“->”相連。
輸入樣例:
4 2 8
輸出樣例:
2->4->8

2>流程圖

(3)switch語句可以判斷更多條件,在多條件判斷時,運用switch語句更簡練。有時候累加計算必須用switch.
1>例如順序結構(2)作業第三題
計算天數
本題要求編寫程序計算某年某月某日是該年中的第幾天。
輸入格式:
輸入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)給出日期。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。閏年的2月有29天。
輸出格式:
在一行輸出日期是該年中的第幾天。
輸入樣例1:
2009/03/02
輸出樣例1:
61
輸入樣例2:
2000/03/02
輸出樣例2:
62

2>流程圖

2.對其他你認為需要進行總結的內容進行總結。
(1)要合理的運用if...;if...else..;switch..這三個語句。
(2)在switch語句中一般都不要忘記break。
(3)case 后要有空格,最后要用冒號,下面再寫語句。
(4)再if條件判斷時,等於的字符型要用單引號引起來。
(5)再程序中運用函數時一定要先再頭文件聲明。
(6)分清int 和 double 類型。一定要看清楚,有時候會需要強制性轉換。

(三)實驗總結

1.比較大小
(1)題目
本題要求將輸入的任意3個整數從小到大輸出。

(2)流程圖

(3)源代碼

(4)實驗分析
問題:if..和if..else的區別錯誤。
原因:if...的幾個語句都是並列的,所以這個題不能使用if...else 。
解決辦法:三個都是用if語句。

(5)本題PTA提交列表

2.高速公路超速處罰
(1)題目
按照規定,在高速公路上行使的機動車,超出本車道限速的10%則處200元罰款;若超出50%,就要吊銷駕駛證。請編寫程序根據車速和限速自動判別對該機動車的處理。

(2)流程圖

(3)源代碼

(4)實驗分析
問題1:百分號的輸入方式。
原因:輸入了一個百分號,所以會出現結果不顯示百分號。
解決辦法:應該同時輸入兩個百分號的。
問題2:在if條件判斷的時候出現錯誤。
原因:判斷百分比的條件時,直接在if后直接計算帶判斷。
解決辦法:應在使用if條件語句時,先進行百分比的計算,然后在判斷。不容易出現邏輯上計算錯誤。

(5)本題PTA提交列表

3.計算油費
(1)題目
現在90號汽油6.95元/升、93號汽油7.44元/升、97號汽油7.93元/升。為吸引顧客,某自動加油站推出了“自助服務”和“協助服務”兩個服務等級,分別可得到5%和3%的折扣。
本題要求編寫程序,根據輸入顧客的加油量a,汽油品種b(90、93或97)和服務類型c(m - 自助,e - 協助),計算並輸出應付款。

(2)流程圖

(3)源代碼

(4)實驗分析
問題:在判斷char類型的寫法上出現問題。
原因:char類型判斷時要加上單引號,不能直接寫字符類型。
解決辦法:在if條件判斷時用英文單引號括起來字符類型。

(5)本題PTA提交列表

4.12-24小時制
(1)題目
編寫一個程序,要求用戶輸入24小時制的時間,然后顯示12小時制的時間。

(2)流程圖

(3)源代碼

(4)實驗分析
問題1:一天只有24小時,在輸入的時候,下面要進行判斷的。
原因:在判斷時判斷的不夠全面。
解決辦法:再加一個判斷等於24小時的條件。
問題2:輸入多於60的問題。
原因:60分鍾為一小時,多於六十,要前進一小時的。
解決辦法:再加一個判斷條件,判斷是否分鍾的輸入大於60。

(5)本題PTA提交列表

(四)博客互評
(1)http://www.cnblogs.com/lrxlrz/p/7763680.html
(2)http://www.cnblogs.com/he111923/p/7772093.html
(3)http://www.cnblogs.com/LYFRRS/p/7765102.html


免責聲明!

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



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