C Turnin作業3
國立屏東大學 資訊工程系 程式設計(一)
每次Turnin作業會包含多個程式題目(p1、p2、…、pN),每題將提供其題目、檔案命名規定、功能要求以及參考的執行結果。建議同學可以為每次的Turnin作業建立一個資料夾以便於管理,例如本次的作業可以使用mkdir hw3
指令來建立一個名為hw3的資料夾,並在該資料夾裡編寫此次作業的程式檔案。另外要注意的是,每一題都必須依據題目要求為程式檔案命名,例如此次turnin作業的p1,其檔案名稱要求命名為 Inside.c,請務必注意大小寫一致,任何錯誤的檔案命名都將不予計分。
注意:從此次作業開始,如題目有加註星號(*),該題分數將加倍計算。
請注意每次turnin作業都必須在截止時間前完成繳交,逾時不候且不得補交。以此次作業為例,其turnin code為c.hw3,當你完成p1的程式碼撰寫,並經編譯執行確認無誤後,可以使用下列指令完成繳交(請特別注意是否在正確的資料夾裡操作):
[7:17 user@ws in hw3] turnin▴c.hw3▴Inside.c↵
後續還可以使用同樣的方式,將p2、p3、…、p10的程式檔案加以繳交。當然,你也可以等到所有小題都作答完成後,再整批地將資料夾下的所有作業上傳:
[7:17 user@ws in hw3] turnin▴c.hw3▴.↵
註:本文使用▴及↵代表空白字元與Enter換行字元,並且將使用者輸入的部份使用灰階方式
顯示。
設計一個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] ./a.out↵
Please▴input▴a▴coordinate(x,y):▴0,0↵
Inside↵
[7:17 user@ws in p1]
設計一個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]
設計一個C語言的程式 WhichTriangle.c,讓使用者輸入三角形的三個邊長(皆為整數),判斷三個正整數所圍成的三角形是哪種三角形。
其中,程式需能斷出辨別出三種情況。假設三角形三個邊長分別為a,b,c,且c為最長的邊,可使用以下公式進行判斷:
若使用者輸入的三個邊長無法構成三角形($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]
判斷一個年份是否是閏年,我們可以透過一個口訣判斷:“四年一閏,逢百不閏,四百又閏”。
設計一個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]
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]
三體人的艦隊已經從距離地球 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]
假設中華民國身分證字號中有其中幾碼是有特別的含義,從左到右依序定義第一碼直到最右邊的第十碼,其中:
代號 | 縣市 | 代號 | 縣市 | 代號 | 縣市 | 代號 | 縣市 |
---|---|---|---|---|---|---|---|
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]
屏東大學提供不同校區間與屏東車站的接駁車服務,共有以下六種票種:
學生可以一次購買不超過30張車票,並可享有以下優惠:
注意:票價計算先依不同票種之票價乘以張數後,再進行折扣計算。若計算後之金額有小數,則一律無條件進位到整數。各項優惠不得合併計算,僅能擇優使用其中一項優惠 (採計最低價者)
請設計一個C語言程式 ShuttleBus.c,讓使用者輸入以下内容:
若輸入的內容超出上述的範圍則輸出“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]