一.實驗題目,設計思路,實現方法
1.實驗題目
7-7 計算火車運行時間 ( 15 分 )
本題要求根據火車的出發時間和達到時間,編寫程序計算整個旅途所用的時間。
輸入格式:
輸入在一行中給出2個4位正整數,其間以空格分隔,分別表示火車的出發時間和到達時間。每個時間的格式為2位小時數(00-23)和2位分鍾數(00-59),假設出發和到達在同一天內。
輸出格式:
在一行輸出該旅途所用的時間,格式為“hh:mm”,其中hh為2位小時數、mm為2位分鍾數。
4-6 輸出華氏-攝氏溫度轉換表 ( 15 分 )
輸入2個正整數lower
和upper
(lower
≤upper
≤100),請輸出一張取值范圍為[lower
,upper
]、且每次增加2華氏度的華氏-攝氏溫度轉換表。
溫度轉換的計算公式:C=5×(F−32)/9,其中:C表示攝氏溫度,F表示華氏溫度。
輸入格式:
在一行中輸入2個整數,分別表示lower
和upper
的值,中間用空格分開。
輸出格式:
第一行輸出:"fahr celsius"
接着每行輸出一個華氏溫度fahr(整型)與一個攝氏溫度celsius(占據6個字符寬度,靠右對齊,保留1位小數)。
若輸入的范圍不合法,則輸出"Invalid."。
4-2-6 到底是不是太胖了 ( 10 分 )
據說一個人的標准體重應該是其身高(單位:厘米)減去100、再乘以0.9所得到的公斤數。真實體重與標准體重誤差在10%以內都是完美身材(即 | 真實體重 − 標准體重 | < 標准體重×10%)。已知市斤是公斤的兩倍。現給定一群人的身高和實際體重,請你告訴他們是否太胖或太瘦了。
輸入格式:
輸入第一行給出一個正整數N
(≤ 20)。隨后N
行,每行給出兩個整數,分別是一個人的身高H
(120 < H < 200;單位:厘米)和真實體重W
(50 < W ≤ 300;單位:市斤),其間以空格分隔。
輸出格式:
為每個人輸出一行結論:如果是完美身材,輸出You are wan mei!
;如果太胖了,輸出You are tai pang le!
;否則輸出You are tai shou le!
。
2.設計思路:
7-7 計算火車運行時間
因輸入是兩個四位整數,則先把小時和分鍾分離開。小時數用到達的直接減去出發的。若到達時間的分鍾數大於出發的,用到達的分鍾數直接減去出發的;若到達時間的分鍾數小於出發的,需要向小時的借位,即到達的分鍾數加上60再減去出發的分鍾數,此時小時數需減去1。此題還須考慮邊界條件,即分鍾數相等和時鍾數相等的特殊情況。
4-6 輸出華氏-攝氏溫度轉換表
先判定數據的合法性,若lower>upper或lower>100,則直接輸出Invalid。主要是用循環語句每次增加2華氏度再輸出相應的攝氏度。最后注意輸出的格式正確。
4-2-6 到底是不是太胖了
讀入N行數,算出標准體重,再用真實體重-標准體重的絕對值與標准體重作比較,從而判斷太胖、太瘦或完美。
3.實現方法:
7-7 計算火車運行時間
用%和/把時鍾數和分鍾數分離。再用if語句判斷。
4-6 輸出華氏-攝氏溫度轉換表
用if語句和運算符&&判斷數據的合法性,再在if語句中嵌入循環for語句實現每次增加2華氏度。
4-2-6 到底是不是太胖了
用for循環達到讀入N行數。用絕對值函數fabs()計算真實體重與標准體重的絕對值。
二.源程序
7-7
計算火車運行時間
h1=t1/100;h2=t2/100;
m1=t1%100;m2=t2%100;
if(m1<m2)
{
printf("%02d:%02d",h2-h1,m2-m1);
}
if(m1>m2)
{
printf("%02d:%02d",h2-h1-1,m2+60-m1);
}
if(h1==h2 && m1==m2)
{
printf("00:00");
}
if(m1==m2 && h1!=h2)
{
printf("%02d:00",h2-h1);
}
4-6
輸出華氏-攝氏溫度轉換表
if(lower<=upper && upper<=100 &&lower<=100)
{
printf("fahr celsius\n");
for(F=lower;F<=upper;F+=2)
{
C=5.0*(F-32)/9.0;
printf("%d%6.1lf\n",F,C);
}
}
else
printf("Invalid.");
4-2-6 到底是不是太胖了
#include<math.h>
for(i=1;i<=N;i++)
{
scanf("%lf%lf",&a,&b);
c=(a-100)*1.8;
if(fabs(b-c)<c*0.1)
{
printf("You are wan mei!\n");
}
if(fabs(b-c)>=c*0.1 && b>c)
{
printf("You are tai pang le!\n");
}
if(fabs(b-c)>=c*0.1 && b<c)
{
printf("You are tai shou le!\n");
}
}
三.遇到的問題及解決方法,心得體會
這幾題沒有太大難度,主要是一些細節的問題,平時要多留心。
在4-6 輸出華氏-攝氏溫度轉換表中稍注意輸出格式控制(占據6個字符寬度,靠右對齊,保留1位小數)。
scanf()函數輸入數據時經常忘記前面的&。調用數學函數諸如fabs,sqrt,pow時要加頭文件#include<math.h>。
C語言中要表達lower不能像數學的那樣,而要分開--lower<=upper&&upper<=100。