使用者工具

網站工具


c:2026fall:hw7

Turnin作業7

  • Turnin Code: c.hw7
  • Due Date: 2026/10/27 23:59 Hard Deadline

繳交方式說明

同學在經歷前幾次作業的練習後,對於建立資料夾、撰寫程式、編譯,以及使用 turnin 指令上傳的流程應已相當熟悉。

因此,從作業6開始,將省略繳交步驟示範。請同學在自行確認8個程式題皆編譯無誤且執行結果正確後,再進行上傳。

若有其他的繳交規定或方式,將會另行公告。

如需回顧之前的終端機操作與繳交指令,請參考:c.hw5繳交說明

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

p1 閏年判斷(is_leap_year.c)

判斷一個年份是否是閏年,我們可以透過一個口訣判斷:“四年一閏,逢百不閏,四百又閏”。

  • 四年一閏:每隔四年會有一年是閏年,閏年能被 4 整除。例如:0004、0320、2012。
  • 逢百不閏:如果一個年份能被 100 整除,則該年不是閏年。例如:1700、1900 不是閏年。
  • 四百又閏:但如果該年份同時能被 400 整除,則該年是閏年。例如:1600、2000 是閏年。

設計一個C語言的程式 is_leap_year.c,讓使用者輸入一個正整數的年份,並輸出該年分是否是閏年。其執行結果可參考以下的畫面:

[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴a▴year:▴1911↵
1911▴is▴not▴a▴leap▴Year↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴a▴year:▴2024↵
2024▴is▴a▴leap▴Year↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴a▴year:▴100↵
100▴is▴not▴a▴leap▴Year↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴a▴year:▴400↵
400▴is▴a▴leap▴Year↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴a▴year:▴0↵
Input▴cannot▴be▴negative▴or▴zero↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴a▴year:▴-1↵
Input▴cannot▴be▴negative▴or▴zero↵
[7:17▴user@ws▴in▴c.hw7]$▴


p2 成績等級(grade.c)

在學校的成績評分系統中,經常會將百分制分數轉換為字母等級。轉換規則如下:

  • A 級:分數$\ge90分$
  • B 級:分數$\ge80分$且$\lt90分$
  • C 級:分數$\ge70分$且$\lt80分$
  • D 級:分數$\ge60分$且$\lt70分$
  • F 級(不及格):分數$\lt60分$
  • 錯誤輸入:分數若$\gt100$或$\lt0$,應提示輸入錯誤。

設計一個C語言的程式 grade.c,讓使用者輸入一個整數分數,並輸出對應的成績等級。其執行結果可參考以下的畫面:

[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴your▴grade:▴59↵
Your▴grade▴is▴F↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴your▴grade:▴85↵
Your▴grade▴is▴B↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Please▴input▴your▴grade:▴101↵
Invalid▴grade!▴Please▴input▴between▴0▴and▴100↵
[7:17▴user@ws▴in▴c.hw7]$▴


p3 何種三角形(triangle.c)

設計一個C語言的程式 triangle.c,讓使用者輸入三角形的三個邊長(皆為整數),判斷三個正整數所圍成的三角形是哪種三角形。

其中,程式需能斷出辨別出三種情況。假設三角形三個邊長分別為a,b,c(假設c為最長邊長),可使用以下公式進行判斷:

  • 直角三角形(Right Triangle):$a^2+b^2 = c^2$
  • 銳角三角形(Acute Triangle):$a^2+b^2 > c^2$
  • 鈍角三角形(Obtuse Triangle):$a^2+b^2 < c^2$

若使用者輸入的三個邊長無法構成三角形(即 $a+b <= c$)時,輸出訊息“That's not a triangle”提示使用者

本題的執行結果可參考以下的內容:

[7:17▴user@ws▴in▴hw7]$▴./a.out↵
Enter▴3▴sides▴of▴a▴triangle:▴3,6,8↵
It's▴an▴obtuse▴triangle!↵
[7:17▴user@ws▴in▴hw7]$▴./a.out↵
Enter▴3▴sides▴of▴a▴triangle:▴3,4,5↵
It's▴a▴right▴triangle!↵
[7:17▴user@ws▴in▴hw7]$▴./a.out↵
Enter▴3▴sides▴of▴a▴triangle:▴7,7,4↵
It's▴an▴acute▴triangle!↵
[7:17▴user@ws▴in▴hw7]$▴./a.out↵
Enter▴3▴sides▴of▴a▴triangle:▴25,12,5↵
That's▴not▴a▴triangle!↵
[7:17▴user@ws▴in▴hw7]$▴


p4 IP驗證器(ip_verify.c)

IPv4 是由4段0-255的整數所組成,例如:國立屏東大學官網的IP網址為 “120.118.118.222”。

假設目前屏東大學的IP網段為120.118.(0~255).(0~255),請同學設計一個C語言的程式 ip_verify.c,讓使用者輸入一段IP,並且判斷該IP是否正確地由4段0-255的整數所組成,同時能夠判斷此IP位址是否位於國立屏東大學的網段內。

本題的執行結果可參考以下的內容:

[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴an▴IP▴address:▴8.8.8.8↵
Address▴[8.8.8.8]▴is▴valid.↵
The▴IP▴is▴not▴in▴NPTU▴campus.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴an▴IP▴address:▴120.118.118.222↵
Address▴[120.118.118.222]▴is▴valid.↵
The▴IP▴is▴in▴NPTU▴campus.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴an▴IP▴address:▴-1.0.0.0↵
Address▴[-1.0.0.0]▴is▴invalid.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴an▴IP▴address:▴120.118.10.233↵
Address▴[120.118.10.233]▴is▴valid.↵
The▴IP▴is▴in▴NPTU▴campus.↵
[7:17▴user@ws▴in▴c.hw7]$▴


p5 座標象限判斷(quadrant.c)

在平面直角座標系中,任何一個點都可以用一對整數座標 (x, y) 來表示。根據 x 與 y 的正負值,我們可以判斷該點位於哪個象限、座標軸上或是原點:

第一象限 (1st Quadrant) $x\gt0$ 且 $y\gt0$
第二象限 (2nd Quadrant) $x\lt0$ 且 $y\gt0$
第三象限 (3rd Quadrant) $x\lt0$ 且 $y\lt0$
第四象限 (4th Quadrant) $x\gt0$ 且 $y\lt0$
X 軸 (X-axis) $x\ne0$ 且 $y=0$
Y 軸 (Y-axis) $x=0$ 且 $y\ne0$
原點 (Origin) $x=0$ 且 $y=0$

設計一個C語言的程式 quadrant.c,讓使用者輸入一組座標 x,y(兩個整數之間以逗號分隔),並判斷且輸出該座標點的位置。

本題的執行結果可參考以下的內容:

[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴coordinates▴(x,y):▴0,-1↵
The▴point▴(0,-1)▴is▴on▴the▴Y-axis.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴coordinates▴(x,y):▴1,0↵
The▴point▴(1,0)▴is▴on▴the▴X-axis.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴coordinates▴(x,y):▴1,1↵
The▴point▴(1,1)▴is▴in▴1st▴Quadrant.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴coordinates▴(x,y):▴-1,1↵
The▴point▴(-1,1)▴is▴in▴2nd▴Quadrant.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴coordinates▴(x,y):▴-1,-1↵
The▴point▴(-1,-1)▴is▴in▴3rd▴Quadrant.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴coordinates▴(x,y):▴1,-1↵
The▴point▴(1,-1)▴is▴in▴4th▴Quadrant.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Enter▴coordinates▴(x,y):▴0,0↵
The▴point▴(0,0)▴is▴at▴the▴origin.↵
[7:17▴user@ws▴in▴c.hw7]$▴


p6 行動電話通話費率(phone_fee.c)

某電信公司的行動電話通話費有以下三種計費方式:

  1. 方案1. 0月租費,每月費用以實際通話時間算,每分鐘8元。
  2. 方案2. 月租費500元,包含每個月免費通話時間100分鐘(含);若通過時間超過100分鐘,除了收取月租費500元外,超過100分鐘的部份,每分鐘另外加收3元。
  3. 方案3. 月租費800元,每個月不限通話時間(吃到飽方案)。

請設計一個程式,用以計算電話費。使用者必須輸入其所使用的方案(1-3),並輸入該月份的通話時間(以分鐘為單位),計算該月的通話費後加以輸出。

本題的執行結果可參考以下的內容:

[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Method:▴1↵
How▴long▴(in▴minutes):▴50↵
Total:▴\$400↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Method:▴2↵
How▴long▴(in▴minutes):▴350↵
Total:▴\$1250↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Method:▴3↵
How▴long▴(in▴minutes):▴350↵
Total:▴\$800↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
Method:▴4↵
Invalid▴method!↵
[7:17▴user@ws▴in▴c.hw7]$▴


p7 飛船燃料(fuel.c)

三體人的艦隊已經從距離地球 4 光年的半人馬座 Alpha 星出發前往地球。假設他們的飛船最多裝載了 3700 公噸的高能燃料,足夠支撐前往地球的行程。隨著航行的進展,燃料逐漸消耗。如果燃料剩餘低於 10%,艦隊必須儘快補充燃料,否則將面臨失去動力來源的危險。

以下是燃料剩餘的等級以及飛船儀表板上要顯示的文字:

燃料剩餘百分比 儀表板上要顯示的文字
75%以上 Fuel is sufficient, no need to worry.
50%~74% More than 50% of fuel remains, you can continue the journey with peace of mind.
25%~49% Less than half of the fuel remains, pay attention to endurance.
10%~24% Less than 25% of fuel remains, it's recommended to start looking for refueling points.
1%~9% Less than 10% of fuel remains, please find fuel as soon as possible!
0% Fuel is exhausted, please refuel immediately!

請為三體人設計一個C語言的程式 fuel.c,讓三體人輸入當前燃料的公噸數,並輸出其燃料剩餘百分比以及相對應的儀表板顯示文字。燃料剩餘百分比之計算請四捨五入到整數位。如果三體人輸入的數字大於所能裝載燃料的容量或是小於0,則輸出“ERROR!”。

本題的執行結果可參考以下的內容:

[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
How▴much▴is▴the▴fuel▴left(unit: ton):▴2660↵
Fuel▴remains:▴72%↵
More▴than▴50%▴of▴fuel▴remains,▴you▴can▴continue▴the▴journey▴with▴peace▴of▴mind.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
How▴much▴is▴the▴fuel▴left(unit: ton):▴1234↵
Fuel▴remains:▴33%↵
Less▴than▴half▴of▴the▴fuel▴remains,▴pay▴attention▴to▴endurance.↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
How▴much▴is▴the▴fuel▴left(unit: ton):▴0↵
Fuel▴remains:▴0%↵
Fuel▴is▴exhausted,▴please▴refuel▴immediately!↵
[7:17▴user@ws▴in▴c.hw7]$▴./a.out↵
How▴much▴is▴the▴fuel▴left(unit: ton):▴3701↵
ERROR!↵
[7:17▴user@ws▴in▴c.hw7]$▴

  • 若有使用浮點數運算的需求,請使用 double 形態。

p8 屏大接駁車票價計算(shuttle_bus.c)

屏東大學提供不同校區間與屏東車站的接駁車服務,共有以下六種票種:

  • A:民生校區←→屏商校區 13元
  • B:民生校區←→屏師校區 14元
  • C:屏商校區←→屏師校區 15元
  • D:屏東車站←→屏商校區 22元
  • E:屏東車站←→屏師校區 18元
  • F:屏東車站←→民生校區 16元

學生可以一次購買不超過30張車票,並可享有以下優惠:

  1. 身心障礙者享6折優惠。
  2. 大一新生可享85折優惠。
  3. 不分年級所有學生一次購買10張可享9折優惠;一次購買30張可享有70折優惠。
  • 票價計算先依不同票種之票價乘以張數後,再進行折扣計算。
  • 各項優惠不得合併計算,僅能擇優使用其中一項優惠(採計最低價者)。
  • 若計算後之金額有小數,則一律無條件進位到整數。

請設計一個C語言程式 shuttle_bus.c,讓使用者輸入以下内容:

  1. 票種(大寫英文字母 A、B、C、D、E、F)
  2. 張數(為 1-30 的整數)
  3. 就讀年級(為 1-4 的整數)
  4. 是否為身心障礙者(身心障礙者請輸入Y,非身心障礙者請輸入N)

若輸入的內容超出上述的範圍則輸出“ERROR!”。

本題的執行結果可參考以下的內容:

[7:17▴user@ws▴in▴hw7]$▴./a.out↵
Ticket▴type:▴F↵
Ticket▴quantity:▴30↵
Grade:▴1↵
Disabled:▴N↵
You▴need▴to▴pay▴\$336▴for▴the▴ticket(s)▴you▴selected.↵
[7:17▴user@ws▴in▴hw7]$▴./a.out↵
Ticket▴type:▴A↵
Ticket▴quantity:▴20↵
Grade:▴1↵
Disabled:▴N↵
You▴need▴to▴pay▴\$221▴for▴the▴ticket(s)▴you▴selected.↵
[7:17▴user@ws▴in▴hw7]$▴./a.out↵
Ticket▴type:▴C↵
Ticket▴quantity:▴30↵
Grade:▴9↵
Disabled:▴Y↵
ERROR!↵
[7:17▴user@ws▴in▴hw7]$▴

c/2026fall/hw7.txt · 上一次變更: 2026/10/20 11:50 由 zhengxuan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki