目錄表
C Turnin作業3
國立屏東大學 資訊工程系 程式設計(一)
Turnin作業3
- chapter4
- Turnin Code: c.hw3
- Due Date: 2025/10/21 23:59 Hard Deadline
繳交方式說明
本次Turnin作業包含5個程式題,建議可以為它們建立一個資料夾,並將此次作業所有要上傳的檔案放置於該資料夾後,再使用 turnin
指令上傳作業。例如下面的操作在同學的家目錄裡建立了一個名為hw3的資料夾,並且切換到該資料夾後,針對第1題所要求的BMI.c進行程式編撰:
[user@ws ~]$ mkdir hw3 [user@ws ~]$ cd hw3 [user@ws hw3]$ joe BMI.c
等到我們完成BMI.c的撰寫後,請自行加以編譯與執行程式,確認正確後使用 turnin▴c.hw3▴BMI.c↵
指令將加以上傳:
[user@ws c.hw3]$ turnin c.hw3 BMI.c Turning in: BMI.c -- ok All done. [user@ws c.hw3]$
當然,你也可以等到本次作業要求的所有題目都在hw3資料夾裡完成後,再使用 turnin▴c.hw3▴.↵
指令一次將所有在目前資料夾中的所有檔案都加以上傳。假設你已經在hw3資料夾裡撰寫完所有題目,並且每個題目的程式檔案皆已編譯並確認執行結果正確後,我們可以使用以下指令將多餘的(不需要繳交的)檔案加以刪除後,一次將所有檔案繳交:
[user@ws c.hw3]$ ls BMI.c HeronFormula.c Pythagorean.c Speed.c Verification.c a.out [user@ws c.hw3]$ rm a.out [user@ws c.hw3]$ ls BMI.c HeronFormula.c Pythagorean.c Speed.c Verification.c [user@ws c.hw3]$ turnin c.hw3 . Turning in: ./Verification.c -- ok ./Pythagorean.c -- ok ./BMI.c -- ok ./HeronFormula.c -- ok ./Speed.c -- ok All done. [user@ws c.hw3]$
如果繳交後想要查看已繳交的檔案及相關資訊,可以輸入turnin▴-ls▴c.hw3↵
指令,例如:
[user@ws c.hw3]$ turnin -ls c.hw3 .: total 20 -rw-rw----. 1 turninman turnin 287 Oct 15 01:14 BMI.c -rw-rw----. 1 turninman turnin 472 Oct 15 01:14 HeronFormula.c -rw-rw----. 1 turninman turnin 587 Oct 15 01:14 Pythagorean.c -rw-rw----. 1 turninman turnin 900 Oct 15 01:14 Speed.c -rw-rw----. 1 turninman turnin 343 Oct 15 01:14 Verification.c [user@ws c.hw3]$
註:本文使用▴及↵代表空白字元與Enter換行字元,並且將使用者輸入的部份使用灰階方式
顯示。另外,出現在程式執行結果中的符號皆為半形。
P1 BMI計算器(BMI.c)
設計一個C語言的程式 BMI.c ,讓使用者輸入體重(weight,單位為公斤)與身高(height,單位為公尺),然後計算並輸出其對應的BMI值。BMI的計算可參考以下公式: $$ BMI = \frac{weight}{height^2} $$
【注意:本題不考慮輸入的身高小於等於0的情況!另外,本題若有使用浮點數的需求,請一律使用 Double 型態。】
本題的執行結果可參考以下的內容:
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴weight(KG):▴70.6↵
Please▴input▴the▴height(M):▴1.52↵
BMI=▴30.557479↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴weight(KG):▴50.42↵
Please▴input▴the▴height(M):▴1.5↵
BMI=▴22.408889↵
[3:23 user@ws hw]
P2 開車送豆腐的速率計算器(Speed.c)
小明在疼元豆腐店工作,負責在接到訂單後,為客戶快速地配送豆腐,請寫一個C語言程式Speed.c幫小明計算每趟配送的速率(Speed)。此程式首先取得使用者所輸入的此趟配送的距離(單位為公里)與配送所花費時間(單位為分鐘),經計算後輸出此趟配送的速率。關於速率的計算可參考以下公式:
$$ \text{速率} = \frac{\text{距離}}{\text{花費時間}} $$
【注意:本題不需要考慮所輸入的距離與時間小於等於0的情況!另外,本題若有浮點數的使用需求,請一律使用double型態】
上述公式可計算出小明此趟配送每分鐘前進了多少公里的距離,意即KM/minute。但由於豆腐店的外送薪資計算是以每小時前進多少公尺為速率的單位(meters/hour,請四捨五入保留至小數點後第二位),所以請你幫小明完成此換算後再將結果加以輸出:
本題的執行結果可參考以下的內容:
[3:23 user@ws hw] ./a.out↵
Distance(KM):▴10.345↵
Time(minute):▴120.123↵
The▴speed▴is▴approximately▴equal▴to▴5167.20▴meters▴per▴hour.↵
[3:23 user@ws hw] ./a.out↵
Distance(KM):▴15.123↵
Time(minute):▴140.345↵
The▴speed▴is▴approximately▴equal▴to▴6465.35▴meters▴per▴hour.↵
[3:23 user@ws hw]
P3 計算三角形斜邊長(Pythagorean.c)
令$a$與$b$為一個三角形的兩個邊長,其斜邊(hypotenuse)則為$c$,它們必定會滿足以下公式:
$$ c^2 = a^2+b^2 $$
請設計一個C語言的程式Pythagorean.c,讓使用者輸入直角三角形的兩個邊長(皆為大於0的正整數),計算對應的斜邊長(hypotenuse)後加以輸出。請將輸出的結果無條件捨棄到小數後第二位。
【注意:本題不需要考慮所輸入的數值小於等於0的情況!另外,本題若有浮點數的使用需求,請一律使用double型態】
本題的執行結果可參考以下的內容:
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴two▴legs▴of▴a▴right▴triangle(a▴b):▴3▴4↵
The▴length▴of▴the▴hypotenuse▴of▴the▴right▴triangle▴is▴5.0.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴two▴legs▴of▴a▴right▴triangle(a▴b):▴6▴8↵
The▴length▴of▴the▴hypotenuse▴of▴the▴right▴triangle▴is▴10.0.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴two▴legs▴of▴a▴right▴triangle(a▴b):▴2▴4↵
The▴length▴of▴the▴hypotenuse▴of▴the▴right▴triangle▴is▴4.47.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴two▴legs▴of▴a▴right▴triangle(a▴b):▴4▴7↵
The▴length▴of▴the▴hypotenuse▴of▴the▴right▴triangle▴is▴8.6.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴two▴legs▴of▴a▴right▴triangle(a▴b):▴57▴49↵
The▴length▴of▴the▴hypotenuse▴of▴the▴right▴triangle▴is▴75.16.↵
[3:23 user@ws hw]
【提示:假設存在一個變數$x$,同學們可以使用定義在 “math.h” 中的 “sqrt($x$)“ 或是 “pow($x$,0.5)“ 的方式取得開根號的值。注意:如果使用了 “math.h” 的函式,在編譯的時候記得加上 ”-lm” 參數,如:“gcc Pythagorean.c -lm”。】
P4 海龍公式(HeronFormula.c)
假設三角形的三個邊長分別為 $a$、$b$ 與 $c$,海龍公式(Heron's formula)可用以計算三角形面積如下:
\[ S = \frac{a + b + c}{2} \]
\[ 面積 = \sqrt{S(S-a)(S-b)(S-c)} \]
,其中$S$為半周長(Semiperimeter)。
請設計一個 C 語言程式 HeronFormula.c,讓使用者輸入一個三角形的三個邊長(皆爲大於0的正整數),將面積四捨五入到整數位後加以輸出。 【提示:本題若有浮點數運算需求,一律使用double 型態。】
本題的執行結果可參考以下的內容:
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴the▴three▴sides▴of▴a▴triangle:▴3▴4▴5↵
Area▴=▴6.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴the▴three▴sides▴of▴a▴triangle:▴7▴24▴25↵
Area▴=▴84.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴the▴three▴sides▴of▴a▴triangle:▴2▴6▴8↵
Area▴=▴0.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴the▴three▴sides▴of▴a▴triangle:▴2▴3▴4↵
Area▴=▴3.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴the▴three▴sides▴of▴a▴triangle:▴4▴5▴6↵
Area▴=▴10.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴lengths▴of▴the▴three▴sides▴of▴a▴triangle:▴10▴11▴12↵
Area▴=▴52.↵
[3:23 user@ws hw]
【提示:關於海龍公式需要計算平方根的部分,同學們可以使用定義在 “math.h” 中的 “sqrt($x$)“ 或是 “pow($x$,0.5)“ 的方式取得變數$x$開根號的值。注意:如果使用了 “math.h” 的函式,在編譯的時候記得加上 ”-lm” 參數,如:“gcc HeronFormula.c -lm”。】
P5 驗證碼計算(Verification.c)
請設計一個C語言程式Verification.c,讓使用者輸入一個由5位數字組成的代碼(可以由0開頭),並依據以下項要求完成其驗證碼之計算並加以輸出。注意,在以下要求中,5位數之代碼由左到右依序被稱為第一位數、第二位數、…、第五位數。
- 將第一位數與第五位數相加
- 將第二位數及第四位數相乘後取其結果之個位數,再加1
- 將第1項的運算結果除以第2項的運算結果(若運算結果為浮點數,則將小數部份無條件捨棄)
- 將第三位數加上第3項的運算結果後,將其結果加以輸出
本題的執行結果可參考以下的內容:
[3:23 user@ws hw] ./a.out↵
Please▴input▴an▴ID:▴12345↵
The▴verification▴code▴of▴12345▴is▴3.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴an▴ID:▴98765↵
The▴verification▴code▴of▴98765▴is▴8.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴an▴ID:▴00359↵
The▴verification▴code▴of▴00359▴is▴12.↵
[3:23 user@ws hw]