使用者工具

網站工具


c:2024fall-hw-three

C Turnin作業3

國立屏東大學 資訊工程系 程式設計(一)

Turnin作業3

  • Turnin Code: c.hw3
  • Due Date: 11/05 23:59 Hard Deadline
  • 涵蓋範圍:ch5-3-5 ~ ch 6-2

作業說明

每次Turnin作業會包含多個程式題目(p1、p2、…、pN),每題將提供其題目、檔案命名規定、功能要求以及參考的執行結果。建議同學可以為每次的Turnin作業建立一個資料夾以便於管理,例如本次的作業可以使用mkdir hw3 指令來建立一個名為hw3的資料夾,並在該資料夾裡編寫此次作業的程式檔案。另外要注意的是,每一題都必須依據題目要求為程式檔案命名,例如此次turnin作業的p1,其檔案名稱要求命名為 IsInside.c,請務必注意大小寫一致,任何錯誤的檔案命名都將不予計分。

注意:從此次作業開始,如題目有加註星號(*),該題分數將加倍計算

繳交方式說明

請注意每次turnin作業都必須在截止時間前完成繳交,逾時不候且不得補交。以此次作業為例,其turnin code為c.hw3,當你完成p1的程式碼撰寫,並經編譯執行確認無誤後,可以使用下列指令完成繳交(請特別注意是否在正確的資料夾裡操作):

[7:17 user@ws in hw1] turnin▴c.hw3▴Inside.c↵

後續還可以使用同樣的方式,將p2、p3、…、p10的程式檔案加以繳交。當然,你也可以等到所有小題都作答完成後,再整批地將資料夾下的所有作業上傳:

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

註:本文使用▴及↵代表空白字元與Enter換行字元,並且將使用者輸入的部份使用灰階方式顯示。


p1 範圍之內(Inside.c,此處首字母為大寫的I(ㄞ))

設計一個C語言的程式 Inside.c,讓使用者輸入一個整數的平面座標$(x,y)$,判斷該座標是否在一個高與寬分別為220與400,且中心座標位於$(0,0)$的矩形範圍之內,其執行結果可參考以下的畫面:

[7:17 user@ws in p1] ./a.out↵
Please▴input▴a▴coordinate(x,y):▴200,110↵
On▴the▴boundary↵
[7:17 user@ws in p1] ./a.out↵
Please▴input▴a▴coordinate(x,y):▴117,-110↵
On▴the▴boundary↵
[7:17 user@ws in p1] ./a.out↵
Please▴input▴a▴coordinate(x,y):▴220,400↵
Outside↵
[7:17 user@ws in p1] ./a.out↵
Please▴input▴a▴coordinate(x,y):▴200,70↵
On▴the▴boundary↵
[7:17 user@ws in p1] ./a.out↵
Please▴input▴a▴coordinate(x,y):▴-200,201↵
Outside↵
[7:17 user@ws in p1]

p2 判斷是否構成三角形(IsTriangle.c,此處首字母為大寫的I(ㄞ))

設計一個C語言的程式 IsTriangle.c,讓使用者輸入三個正整數,判斷三個正整數是否能構成一個三角形(任兩邊之和要大於第三邊)其執行結果可參考以下的畫面:

[7:17 user@ws in p2] ./a.out↵
Please▴input▴a▴triangle's▴3▴sides(a,b,c):▴3,4,5↵
It's▴a▴triangle!↵
[7:17 user@ws in p2] ./a.out↵
Please▴input▴a▴triangle's▴3▴sides(a,b,c):▴5,3,4↵
It's▴a▴triangle!↵
[7:17 user@ws in p2] ./a.out↵
Please▴input▴a▴triangle's▴3▴sides(a,b,c):▴1,2,3↵
It's▴not▴a▴triangle↵
[7:17 user@ws in p2]

p3 判斷三角形是哪種三角形(WhichTriangle.c)

設計一個C語言的程式 WhichTriangle.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$),就輸出訊息 “Not a Triangle” 以提示使用者

其執行結果可參考以下的畫面:

[7:17 user@ws in p3] ./a.out↵
Please▴input▴a▴triangle's▴3▴sides(a,b,c):▴3,6,8↵
Obtuse▴Triangle!↵
[7:17 user@ws in p3] ./a.out↵
Please▴input▴a▴triangle's▴3▴sides(a,b,c):▴3,4,5↵
Right▴Triangle!↵
[7:17 user@ws in p3] ./a.out↵
Please▴input▴a▴triangle's▴3▴sides(a,b,c):▴7,7,4↵
Acute▴Triangle!↵
[7:17 user@ws in p3] ./a.out↵
Please▴input▴a▴triangle's▴3▴sides(a,b,c):▴25,12,5↵
Not▴a▴Triangle↵
[7:17 user@ws in p3]

p4 閏年判斷(IsLeapYear.c,此處首字母為大寫的I(ㄞ))

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

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

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

[7:17 user@ws in p4] ./a.out↵
Please▴input▴a▴year:▴1988↵
Leap▴Year↵
[7:17 user@ws in p4] ./a.out↵
Please▴input▴a▴year:▴4↵
Leap▴Year↵
[7:17 user@ws in p4] ./a.out↵
Please▴input▴a▴year:▴100↵
Not▴a▴Leap▴Year↵
[7:17 user@ws in p4] ./a.out↵
Please▴input▴a▴year:▴400↵
Leap▴Year↵
[7:17 user@ws in p4] ./a.out↵
Please▴input▴a▴year:▴0↵
ERROR!↵
[7:17 user@ws in p4] ./a.out↵
Please▴input▴a▴year:▴-1↵
ERROR!↵
[7:17 user@ws in p4]

p5 IP驗證器(IPAddrValidator.c,此處首字母為大寫的I(ㄞ))

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

設計一個C語言的程式 IPAddrValidator.c,讓使用者輸入一段IP,並且判斷該IP是否正確地由4段0-255的整數所組成。執行結果可參考以下的畫面:

[7:17 user@ws in p5] ./a.out↵
Please▴input▴an▴IP▴address:▴120.118.118.222↵
The▴IP▴address▴120.118.118.222▴is▴valid.↵
[7:17 user@ws in p5] ./a.out↵
Please▴input▴an▴IP▴address:▴255.255.255.255↵
The▴IP▴address▴255.255.255.255▴is▴valid.↵
[7:17 user@ws in p5] ./a.out↵
Please▴input▴an▴IP▴address:▴-1.0.0.0↵
The▴IP▴address▴-1.0.0.0▴is▴invalid.↵
[7:17 user@ws in p5] ./a.out↵
Please▴input▴an▴IP▴address:▴256.256.256.256↵
The▴IP▴address▴256.256.256.256▴is▴invalid.↵
[7:17 user@ws in p5]

p6 飛船燃料(Fuel.c)

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

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

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

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

其執行結果可參考以下的畫面:

[7:17 user@ws in p6] ./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 p6] ./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 p6] ./a.out↵
How▴much▴is▴the▴fuel▴left(unit: ton):▴3701↵
ERROR!↵
[7:17 user@ws in p6]

p7* 身分證與戶籍地(IDAndHouseholdReg.c,此處首字母為大寫的I(ㄞ))

假設中華民國身分證字號中有其中幾碼是有特別的含義,從左到右依序定義第一碼直到最右邊的第十碼,其中:

  • 第一碼代表申報戶口所在的縣市(如下表所示)。
  • 第二碼的值:1代表男性,2代表女性
  • 第三碼:
    1. 0-5:台灣出生的本國國民(Taiwan-born national)
    2. 6:原為外國人之入籍國民(Naturalized former foreign national)
    3. 7:原無國籍國民(Former stateless national)
    4. 8:原為香港或澳門居民的入籍國民(Naturalized from Hong Kong/Macau)
    5. 9:原為大陸居民的入籍國民(Naturalized from mainland China)
代號 縣市 代號 縣市 代號 縣市 代號 縣市
A 臺北市 Taipei City G 宜蘭縣 Yilan County N 彰化縣 Changhua County V 臺東縣 Taitung County
B 臺中市 Taichung City H 桃園市 Taoyuan City O 新竹市 Hsinchu City W 金門縣 Kinmen County
C 基隆市 Keelung City I 嘉義市 Chiayi City P 雲林縣 Yunlin County X 澎湖縣 Penghu County
D 臺南市 Tainan City J 新竹縣 Hsinchu County Q 嘉義縣 Chiayi County Z 連江縣 Lienchiang County
E 高雄市 Kaohsiung City K 苗栗縣 Miaoli County T 屏東縣 Pingtung County
F 新北市 New Taipei City M 南投縣 Nantou County U 花蓮縣 Hualien County

設計一個C語言的程式 IDAndHouseholdReg.c,讓使用者輸入其身分證字號前三碼,並且輸出該身分證中字母所表示的戶籍地、性別以及其身分類型。 若使用者輸入的縣市代號超出範圍,或是代表性別的數字超出範圍,則在該欄位輸出 “Input error!↵”,其執行結果可參考以下的畫面:

[7:17 user@ws in p7] ./a.out↵
Please▴enter▴the▴first▴three▴characters▴of▴your▴ID▴number:▴E12↵
The▴place▴of▴your▴household▴registration:▴Kaohsiung▴City↵
Your▴gender:▴Male↵
Your▴identity▴type:▴Taiwan-born▴national↵
[7:17 user@ws in p7] ./a.out↵
Please▴enter▴the▴first▴three▴characters▴of▴your▴ID▴number:▴A29↵
The▴place▴of▴your▴household▴registration:▴Taipei▴City↵
Your▴gender:▴Female↵
Your▴identity▴type:▴Naturalized▴from▴mainland▴China↵
[7:17 user@ws in p7] ./a.out↵
Please▴enter▴the▴first▴three▴characters▴of▴your▴ID▴number:▴F32↵
The▴place▴of▴your▴household▴registration:▴New▴Taipei▴City↵
Your▴gender:▴Input▴error!↵
Your▴identity▴type:▴Taiwan-born▴national↵
[7:17 user@ws in p7] ./a.out↵
Please▴enter▴the▴first▴three▴characters▴of▴your▴ID▴number:▴aSn↵
The▴place▴of▴your▴household▴registration:▴Input▴error!↵
Your▴gender:▴Input▴error!↵
Your▴identity▴type:▴Input▴error!↵
[7:17 user@ws in p7]

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

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

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

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

  1. 身心障礙者享5折優惠。
  2. 大一新生可享95折優惠。
  3. 不分年級所有學生一次購買10張可享9折優惠;一次購買30張可享有75折優惠。

注意:票價計算先依不同票種之票價乘以張數後,再進行折扣計算。若計算後之金額有小數,則一律無條件進位到整數。各項優惠不得合併計算,僅能擇優使用其中一項優惠 (採計最低價者)

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

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

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

執行結果可參考以下的畫面:

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

c/2024fall-hw-three.txt · 上一次變更: 2024/10/29 17:55 由 dengyi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki