目錄表
Turnin作業4
- Turnin Code: c.hw4
- Due Date: 2026/09/29 23:59 Hard Deadline
繳交方式說明
本次Turnin作業包含五個程式題,請將它撰寫完成、編譯無誤後,使用turnin指令上傳作業。以下的示範 假設 同學在ws的家目錄裡已有一個專門用於繳交作業的 homework 資料夾,請在其中建立一個名為 hw4 的子資料夾,然後在homework/hw4裡進行本次作業的撰寫。
[7:17▴user@ws▴in▴somewhere]\$▴cd▴~↵
[7:17▴user@ws▴in▴~]\$▴cd▴homework↵
[7:17▴user@ws▴in▴homework]\$▴mkdir▴hw4↵
[7:17▴user@ws▴in▴~]\$▴cd▴hw4↵
[7:17▴user@ws▴in▴hw4]\$▴joe▴ascii.c↵ <--撰寫 ascii.c 程式
[7:17▴user@ws▴in▴hw4]\$▴joe▴ascii_2.c↵ <--撰寫 ascii_2.c 程式
[7:17▴user@ws▴in▴hw4]\$▴joe▴get_integer.c↵ <--撰寫 get_integer.c 程式
[7:17▴user@ws▴in▴hw4]\$▴joe▴bmi.c↵ <--撰寫 bmi.c 程式
[7:17▴user@ws▴in▴hw4]\$▴joe▴rounded.c↵ <--撰寫 rounded.c 程式
本次作業撰寫完成後,請先使用以下指令對.c進行編譯與執行:
[7:17▴user@ws▴in▴hw4]\$▴cc▴ascii.c↵
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
待編譯與執行結果皆確認無誤後,請使用 turnin 指令上傳作業。請參考以下指令:
[7:17▴user@ws▴in▴hw4]\$▴turnin▴c.hw4▴ascii.c↵
至於第二題的ascii_2.c,也同樣使用類似指令完成編譯與執行:
[7:17▴user@ws▴in▴hw4]\$▴cc▴ascii_2.c↵
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
同樣地,待編譯與執行結果皆確認無誤後,再次使用 turnin 指令上傳作業。請參考以下指令:
[7:17▴user@ws▴in▴hw4]\$▴turnin▴c.hw4▴ascii_2.c↵
你也可以使用以下指令,一次將homework/hw4裡的所有c程式上傳:
[7:17▴user@ws▴in▴hw4]$▴turnin▴c.hw4▴*.c↵
如果一切順利,你應該可以使用以下指令確認已上傳的內容:
[7:17▴user@ws▴in▴hw4]\$▴turnin▴-ls▴c.hw4↵
.:
total 40
-rw-rw----. 1 turninman turnin 209 Sep 14 13:15 ascii.c
-rw-rw----. 1 turninman turnin 333 Sep 14 13:15 ascii_2.c
-rw-rw----. 1 turninman turnin 239 Sep 14 13:15 get_integer.c
-rw-rw----. 1 turninman turnin 493 Sep 14 13:15 bmi.c
-rw-rw----. 1 turninman turnin 190 Sep 14 13:15 rounded.c
[7:17▴user@ws▴in▴hw4]\$▴
註:本文使用▴及↵代表空白字元與Enter換行字元,並且將使用者輸入的部份使用灰階方式顯示。另外,出現在程式執行結果中的符號皆為半形。
p1 字元轉換(ascii.c)
請設計一個C語言的程式ascii.c,要求使用者輸入一個字元,並將該字元所對應的ASCII數值以十進制的整數輸出,其執行結果可參考以下的畫面:
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Please▴input▴a▴character:▴C↵
C's▴ASCII▴code▴=▴67.↵
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Please▴input▴a▴character:▴a↵
a's▴ASCII▴code▴=▴97.↵
[7:17▴user@ws▴in▴hw4]\$▴
p2 ASCII位移(ascii_2.c)
請設計一個C語言的程式ascii_2.c,要求使用者輸入一個偏移量(整數)與一個字元(大小寫英文皆可),並將偏移前與偏移後的字元與對應的ASCII數值以十進制的整數輸出,其執行結果可參考以下的畫面:
注意: 本題偏移量不會輸入負值。且假設所輸入字元為N(或n),加上偏移量後之輸出不會超過Z(或z)。
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Please▴input▴a▴character:▴A↵
Please▴input▴a▴integer:▴3↵
A(65)▴+▴3▴=▴D(68).↵
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Please▴input▴a▴character:▴n↵
Please▴input▴a▴integer:▴12↵
n(110)▴+▴12▴=▴z(122).↵
[7:17▴user@ws▴in▴hw4]\$▴
p3 輸入整數(get_integer.c)
請設計一個C語言的程式get_integer.c,要求使用者輸入一個整數後將其輸出。此程式必須提供提示字串(prompt string)以提醒使用者進行輸入,該提示字串必須為以下內容:
“Please▴input▴an▴integer:▴_ _ _ _ _ _ _\b\b\b\b\b\b\b”↵
其執行結果可參考以下的畫面:
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Please▴input▴an▴integer:▴534____↵
Your▴input▴number▴is▴534.↵
[7:17▴user@ws▴in▴hw4]\$▴
p4 BMI計算器(bmi.c)
設計一個C語言的程式bmi.c,讓使用者輸入兩個整數,分別為體重(weight,單位為公斤)與身高(height,單位為公分),然後計算並輸出其對應的BMI值。BMI的計算可參考以下公式: $$ BMI = \frac{weight}{(height/100)^2} $$
【注意:本題不考慮輸入的身高小於等於0的情況!另外,本題若有使用浮點數的需求,請一律使用 double 型態。如果要求$x^2$,可由 x*x 得之。】
本題的執行結果可參考以下的畫面:
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Please▴input▴the▴weight(KG):▴70↵
Please▴input▴the▴height(CM):▴174↵
BMI▴=▴23.120624↵
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Please▴input▴the▴weight(KG):▴61↵
Please▴input▴the▴height(CM):▴173↵
BMI▴=▴20.381570↵
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Please▴input▴the▴weight(KG):▴80↵
Please▴input▴the▴height(CM):▴165↵
BMI▴=▴29.384757↵
[7:17▴user@ws▴in▴hw4]\$▴
p5 四捨五入(rounded.c)
請設計一個C語言程式rounded.c,接受使用者所輸入的一個浮點數,並四捨五入到整數部份後輸出,其執行結果可參考如下:
【提示:C語言的浮點數轉型為整數時,小數點後的數值將會被無條件捨去,而非進行四捨五入。】
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Floating▴point▴number:▴13.14↵
rounded▴value▴:▴13↵
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Floating▴point▴number:▴38.5832↵
rounded▴value▴:▴39↵
[7:17▴user@ws▴in▴hw4]\$▴./a.out↵
Floating▴point▴number:▴10↵
rounded▴value▴:▴10↵
[7:17▴user@ws▴in▴hw4]\$▴
註:C語言的浮點數轉型為整數時,小數點後的數值將會被無條件捨去,而非進行四捨五入。例如我們將一個float變數fval=3.54強制轉型為int整數後(也就是「(int)fval」),其數值將會是3,而不是進位為4。以下是可以將浮點數進行四捨五入的方法,供同學們參考:
基於浮點數轉換為整數時小數值會被無條件捨去的事實,我們可以將要轉換的浮點數值加上0.5後,強制進行型態轉換以達成四捨五入的目的。例如「(int)(fval+0.5)」,若fval原本的小數值小於0.5,那麼就算加上0.5後其整數部份數值仍維持不變;但若fval原本的小數值大於等於0.5,加上0.5的結果將會使其整數值也增加1(這就是「五入」的效果)。
