使用者工具

網站工具


c:2026fall:hw3

Turnin作業3

  • Turnin Code: c.hw3
  • Due Date: 2026/09/22 23:59 Hard Deadline

繳交方式說明

本次Turnin作業包含兩個程式題,請將它撰寫完成、編譯無誤後,使用turnin指令上傳作業。以下的示範 假設 同學在ws的家目錄裡已有一個專門用於繳交作業的 homework 資料夾,請在其中建立一個名為 hw3 的子資料夾,然後在homework/hw3裡進行本次作業的撰寫。

[7:17 user@ws in somewhere]$▴cd▴~↵
[7:17 user@ws in ~]$▴cd▴homework↵
[7:17 user@ws in homework]$▴mkdir▴hw3↵
[7:17 user@ws in ~]$▴cd▴hw3↵
[7:17 user@ws in hw3]$▴joe▴size_of_floatings.c↵ <--撰寫 size_of_floatings.c 程式
[7:17 user@ws in hw3]$▴joe▴num_convert.c↵ <--撰寫 num_convert.c 程式
[7:17 user@ws in hw3]$▴joe▴floating.c↵ <--撰寫 floating.c 程式
[7:17 user@ws in hw3]$▴joe▴ascii.c↵ <--撰寫 ascii.c 程式
[7:17 user@ws in hw3]$▴joe▴ascii_2.c↵ <--撰寫 ascii_2.c 程式
[7:17 user@ws in hw3]$▴joe▴get_integer.c↵ <--撰寫 get_integer.c 程式
[7:17 user@ws in hw3]$▴joe▴bmi.c↵ <--撰寫 bmi.c 程式
[7:17 user@ws in hw3]$▴joe▴rounded.c↵ <--撰寫 rounded.c 程式
[7:17 user@ws in hw3]$▴joe▴square_meter_2_ping.c↵ <--撰寫 square_meter_2_ping.c 程式
[7:17 user@ws in hw3]$▴joe▴ntd_2_jpy.c↵ <--撰寫 ntd_2_jpy.c 程式

本次作業撰寫完成後,請先使用以下指令對.c進行編譯與執行:

[7:17 user@ws in hw3]$▴cc▴size_of_floatings.c↵
[7:17 user@ws in hw3]$▴./a.out↵

待編譯與執行結果皆確認無誤後,請使用 turnin 指令上傳作業。請參考以下指令:

[7:17 user@ws in hw3]$▴turnin▴c.hw3▴size_of_floatings.c↵

至於第二題的num_convert.c,也同樣使用類似指令完成編譯與執行:

[7:17 user@ws in hw3]$▴cc▴num_convert.c↵
[7:17 user@ws in hw3]$▴./a.out↵

同樣地,待編譯與執行結果皆確認無誤後,再次使用 turnin 指令上傳作業。請參考以下指令:

[7:17 user@ws in hw3]$▴turnin▴c.hw3▴num_convert.c↵

你也可以使用以下指令,一次將homework/h3裡的所有c程式上傳:

[7:17 user@ws in hw3]$▴turnin▴c.hw3▴*.c↵

如果一切順利,你應該可以使用以下指令確認已上傳的內容:

[7:17 user@ws in hw3]$▴turnin▴-ls▴c.hw3↵
.:
total 40
-rw-rw----. 1 turninman turnin 263 Sep 14 13:15 size_of_floatings.c
-rw-rw----. 1 turninman turnin 593 Sep 14 13:15 ntd_2_jpy.c
-rw-rw----. 1 turninman turnin 379 Sep 14 13:15 num_convert.c
-rw-rw----. 1 turninman turnin 212 Sep 14 13:15 floating.c
-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
-rw-rw----. 1 turninman turnin 259 Sep 14 13:15 square_meter_2_ping.c
[7:17 user@ws in hw3]$▴

註:本文使用▴及↵代表空白字元與Enter換行字元,並且將使用者輸入的部份使用灰階方式顯示。另外,出現在程式執行結果中的符號皆為半形。


p1 浮點數型別之記憶體大小(size_of_floatings.c)

請設計一個C語言的程式size_of_floatings.c,將float、double與long double等浮點數型態所佔用的記憶體空間(單位為位元組)輸出,其執行結果可參考以下的畫面:

[7:17 user@ws in hw3]$▴./a.out↵
long▴double:▴memory▴space▴=▴16▴bytes.↵
double:▴memory▴space▴=▴8▴bytes.↵
float:▴memory▴space▴=▴4▴bytes.↵
[7:17 user@ws in hw3]$▴

p2 數字系統轉換(num_convert.c)

請設計一個C語言的程式num_convert.c,要求使用者輸入一個八進制與一個十進制的整數,並將這兩個整數轉換為十六進制後輸出,其執行結果可參考以下的畫面:

[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴an▴integer▴in▴octal:▴77↵
Octal(77)▴=▴Hexadecimal(3f).↵

Please▴input▴an▴integer:▴101↵
Decimal(101)▴=▴Hexadecimal(65).↵
[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴an▴integer▴in▴octal:▴30↵
Octal(30)▴=▴Hexadecimal(18).↵

Please▴input▴an▴integer:▴1000↵
Decimal(1000)▴=▴Hexadecimal(3e8).↵
[7:17 user@ws in hw3]$▴

p3 浮點數與科學記號(floating.c)

請設計一個C語言的程式floating.c,要求使用者輸入一個浮點數(宣告為float型態), 並將該浮點數改以科學記號表示法(scientific notation)輸出,其執行結果可參考以下的畫面:

[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴a▴floating number:▴21.5166↵
The scientific▴notation▴of▴21.516600▴is▴2.151660e+01.↵
[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴a▴floating number:▴1.1234↵
The scientific▴notation▴of▴1.123400▴is▴1.123400e+00.↵
[7:17 user@ws in hw3]$▴

p4 字元轉換(ascii.c)

請設計一個C語言的程式ascii.c,要求使用者輸入一個字元,並將該字元所對應的ASCII數值以十進制的整數輸出,其執行結果可參考以下的畫面:

[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴a▴character:▴C↵
C's▴ASCII▴code▴=▴67.↵
[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴a▴character:▴a↵
a's▴ASCII▴code▴=▴97.↵
[7:17 user@ws in hw3]$▴

p5 ASCII位移(ascii_2.c)

請設計一個C語言的程式ascii_2.c,要求使用者輸入一個偏移量(整數)與一個字元(大小寫英文皆可),並將偏移前與偏移後的字元與對應的ASCII數值以十進制的整數輸出,其執行結果可參考以下的畫面:

注意: 本題偏移量不會輸入負值。且假設所輸入字元為N(或n),加上偏移量後之輸出不會超過Z(或z)。

[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴a▴character:▴A↵
Please▴input▴a▴integer:▴3↵
A(65)▴+▴3▴=▴D(68).↵
[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴a▴character:▴n▴↵
Please▴input▴a▴integer:▴12↵
n(110)▴+▴12▴=▴z(122).↵
[7:17 user@ws in hw3]$▴

p6 輸入整數(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 hw3]$▴./a.out↵
Please▴input▴an▴integer:▴534____
Your▴input▴number▴is▴534.↵
[7:17 user@ws in hw3]$▴

p7 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▴hw3]\$▴./a.out↵
Please▴input▴the▴weight(KG):▴70↵
Please▴input▴the▴height(CM):▴174↵
BMI▴=▴23.120624↵
[7:17▴user@ws▴in▴hw3]\$▴./a.out↵
Please▴input▴the▴weight(KG):▴61↵
Please▴input▴the▴height(CM):▴173↵
BMI▴=▴20.381570↵
[7:17▴user@ws▴in▴hw3]\$▴./a.out↵
Please▴input▴the▴weight(KG):▴80↵
Please▴input▴the▴height(CM):▴165↵
BMI▴=▴29.384757↵
[7:17▴user@ws▴in▴hw3]\$▴

p8 四捨五入(rounded.c)

請設計一個C語言程式rounded.c,接受使用者所輸入的一個浮點數,並四捨五入到整數部份後輸出,其執行結果可參考如下:

【提示:C語言的浮點數轉型為整數時,小數點後的數值將會被無條件捨去,而非進行四捨五入。】

[7:17 user@ws in hw3]$▴./a.out↵
Floating▴point▴number:▴13.14↵
rounded▴value▴:▴13↵
[7:17 user@ws in hw3]$ ./a.out↵
Floating▴point▴number:▴38.5832↵
rounded▴value▴:▴39↵
[7:17 user@ws in hw3]$▴./a.out↵
Floating▴point▴number:▴10↵
rounded▴value▴:▴10↵
[7:17 user@ws in hw3]$▴

註: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(這就是「五入」的效果)。

p9 土地單位轉換(square_meter_2_ping.c)

請設計一個C語言程式square_meter_2_ping.c,讓使用者以平方公尺為單位輸入一筆土地面積(可包含小數),將其轉換為對應的坪數(台灣慣用的面積單位)後輸出。注意,此題請以 double型態 的浮點數進行計算,並以 1平方公尺 = 0.3025坪 進行計算。本題的執行結果可參考以下的畫面:

[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴an▴area▴in▴square▴meters:▴100↵
100.000000(square▴meters)▴=▴30.250000(ping).↵
[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴an▴area▴in▴square▴meters:▴65.942↵
65.942000(square▴meters)▴=▴19.947455(ping).↵
[7:17 user@ws in hw3]$▴

p10 台幣兌換日幣(ntd_2_jpy.c)

假設某銀行在處理台幣兌換日幣時,會先將台幣依匯率轉換為日幣總額,接著收取日幣總額的千分之95作為「基本手續費」。此外,每兌換1元台幣,銀行還會提供0.2元日幣的「折抵金」。最終的「實際手續費」為「基本手續費」扣除「折抵金」。

請設計一個C語言程式ntd_2_jpy.c,讓使用者輸入欲兌換的台幣金額(整數),計算並輸出被扣除的「實際手續費」以及最終可換取的日幣金額。此題如需要使用浮點數,請一律使用double型態,並以1元台幣=4.82元日幣進行計算。本題的執行結果可參考以下的畫面:

注意:此程式最終輸出的兩個金額必須為整數,有小數部份則一律無條件捨去。

[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴the▴NTD▴amount:▴5500↵
Deducted▴fee▴is▴1418▴JPY.↵
You▴can▴get▴25091▴JPY.↵
[7:17 user@ws in hw3]$▴./a.out↵
Please▴input▴the▴NTD▴amount:▴12345↵
Deducted▴fee▴is▴3183▴JPY.↵
You▴can▴get▴56319▴JPY.↵
[7:17 user@ws in hw3]$▴

c/2026fall/hw3.txt · 上一次變更: 2026/09/16 01:09 由 zhengxuan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki