同學在經歷前幾次作業的練習後,對於建立資料夾、撰寫程式、編譯,以及使用 turnin 指令上傳的流程應已相當熟悉。
因此,從作業6開始,將省略繳交步驟示範。請同學在自行確認12個程式題皆編譯無誤且執行結果正確後,再進行上傳。
若有其他的繳交規定或方式,將會另行公告。
如需回顧之前的終端機操作與繳交指令,請參考:c.hw5繳交說明
灰階方式顯示。花生電影院提供不同年齡層的觀眾更優惠的觀影價格,制定了依年齡區分的票價制度。觀眾購買電影票時,系統會依照輸入的年齡,自動判斷應該購買哪一種票券,並計算應付金額。
電影院提供以下四種票價:
| 年齡範圍 | 票種 | 票價 |
| 0~5 歲 | Free Ticket | 0 元 |
| 6~12 歲 | Child Ticket | 150 元 |
| 13~64 歲 | Regular Ticket | 300 元 |
| 65 歲以上 | Senior Ticket | 180 元 |
設計一個 C 語言程式 movie_ticket.c,讓使用者輸入觀眾的年齡,並根據上述規則輸出適用的票種與票價。 若使用者輸入的年齡小於 0 時,輸出訊息 “Invalid age!” 提示使用者。
請參考以下的執行結果:
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴input▴your▴age:▴4↵
Ticket▴type:▴Free▴Ticket↵
Ticket▴price:▴\$0↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴input▴your▴age:▴16↵
Ticket▴type:▴Regular▴Ticket↵
Ticket▴price:▴\$300↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴input▴your▴age:▴90↵
Ticket▴type:▴Senior▴Ticket↵
Ticket▴price:▴\$180↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴input▴your▴age:▴-1↵
Invalid▴age!↵
[7:17▴user@ws▴in▴hw8]$▴
花生停車場採用依照停車時間計算費用的收費制度。停車場除了提供短時間免費停車之外,也針對長時間停車的顧客設定單次收費上限,避免停車費用過高。
花生停車場收費方式如下:
| 停車時間 | 收費方式 |
| 30 分鐘以內(含) | 免費停車 |
| 超過 30 分鐘 | 每小時 40 元 |
| 單次停車費用上限 | 300 元 |
停車費以小時為單位計算,不足一小時仍以一小時計費。例如,停車 45 分鐘需要支付 40 元,停車 90 分鐘需要支付 80 元。
請設計一個 C 語言程式 parking_fee.c,讓使用者輸入停車時間(分鐘),程式根據上述規則計算應付的停車費。 若使用者輸入的停車時間小於 0 分鐘時,輸出訊息 “Invalid parking time!” 提示使用者。
請參考以下的執行結果:
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Parking▴time▴(minutes):▴20↵
Parking▴time:▴20▴minutes↵
Parking▴fee:▴\$0↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Parking▴time▴(minutes):▴45↵
Parking▴time:▴45▴minutes↵
Parking▴fee:▴\$40↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Parking▴time▴(minutes):▴60↵
Parking▴time:▴60▴minutes↵
Parking▴fee:▴\$40↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Parking▴time▴(minutes):▴61↵
Parking▴time:▴61▴minutes↵
Parking▴fee:▴\$80↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Parking▴time▴(minutes):▴500↵
Parking▴time:▴500▴minutes↵
Parking▴fee:▴\$300↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Parking▴time▴(minutes):▴-1↵
Invalid▴parking▴time!↵
[7:17▴user@ws▴in▴hw8]$▴
花生文具店販售各種學生常用的文具用品,包含鉛筆、筆記本及資料夾。為了鼓勵學生一次購買多樣文具,店家推出滿額折扣活動,購買金額越高,就能享有越多優惠。
花生文具店提供以下三種商品:
| 商品名稱 | 單價 |
| Pencil(鉛筆) | 10 元 |
| Notebook(筆記本) | 35 元 |
| Folder(資料夾) | 25 元 |
使用者可以輸入每種商品的購買數量,程式必須先計算所有商品的原始總金額,再根據原始總金額判斷是否符合折扣條件。
店家提供以下折扣活動:
| 原始總金額 | 優惠方式 |
| 未滿 200 元 | 不打折 |
| 200~499 元 | 折價 20 元 |
| 500 元以上 | 折價 80 元 |
請設計一個 C 語言程式 stationery.c,讓使用者輸入三種商品的購買數量,計算原始總金額與折扣後的應付金額。 若使用者輸入的任一商品數量小於 0 時,輸出訊息 Invalid quantity! 提示使用者。
請參考以下的執行結果:
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Pencil▴quantity:▴3↵
Notebook▴quantity:▴4↵
Folder▴quantity:▴5↵
Original▴price:▴\$295↵
Discount:▴\$20↵
Total▴price:▴\$275↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Pencil▴quantity:▴1↵
Notebook▴quantity:▴2↵
Folder▴quantity:▴3↵
Original▴price:▴\$155↵
Discount:▴\$0↵
Total▴price:▴\$155↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Pencil▴quantity:▴10↵
Notebook▴quantity:▴11↵
Folder▴quantity:▴12↵
Original▴price:▴\$785↵
Discount:▴\$80↵
Total▴price:▴\$705↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Pencil▴quantity:▴-1↵
Notebook▴quantity:▴0↵
Folder▴quantity:▴6↵
Invalid▴quantity!↵
[7:17▴user@ws▴in▴hw8]$▴
質數的定義是只能被1以及該數本身整除的自然數,且必須大於1。
請設計一個C語言程式is_prime_number.c,讓使用者輸入一個正整數,檢查該整數是否為質數。如果使用者所輸入的不是正整數,則請輸出“Error!”。本題的執行結果可以參考如下:
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Enter▴a▴number:▴1↵
1▴is▴not▴a▴prime▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Enter▴a▴number:▴2↵
2▴is▴a▴prime▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Enter▴a▴number:▴38↵
38▴is▴not▴a▴prime▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Enter▴a▴number:▴0↵
Error!↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Enter▴a▴number:▴17↵
17▴is▴a▴prime▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Enter▴a▴number:▴-10↵
Error!↵
[7:17▴user@ws▴in▴hw8]$▴
設計一個 C 語言程式 date_to_english.c,讓使用者輸入一個日期(格式為 MM/DD/YYYY),並輸出該日期的英文格式,例如:“October 21st, 2025”。
請注意日期中的 日(Day) 需根據英文序數詞規則輸出:
注意:
若輸入的月份、日期或年份不合理,請輸出 “Input error!” 並終止程式。
此題的執行結果可參考如下:
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴enter▴a▴date▴(MM/DD/YYYY):▴12/21/2026↵
December▴21st,▴2026↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴enter▴a▴date▴(MM/DD/YYYY):▴8/3/1923↵
August▴3rd,▴1923↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴enter▴a▴date▴(MM/DD/YYYY):▴8/22/123↵
August▴22nd,▴123↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴enter▴a▴date▴(MM/DD/YYYY):▴01/01/0001↵
January▴1st,▴1↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴enter▴a▴date▴(MM/DD/YYYY):▴00/11/1952↵
Input▴error!↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴enter▴a▴date▴(MM/DD/YYYY):▴2/0/2033↵
Input▴error!↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Please▴enter▴a▴date▴(MM/DD/YYYY):▴02/30/2026↵
Input▴error!↵
[7:17▴user@ws▴in▴hw8]$▴
請設計一個C語言程式cm_all.c,讓使用者輸入兩個整數a與b,找出所有介於1(含)至1000(含)間所有可以被a以及b整除的數字。
若沒有任何符合的數字,則請輸出“None”,若是使用者所輸入的是小於等於0的整數,則請輸出“Error”。
此題的執行結果可參考如下:
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
a▴and▴b=?▴160▴40↵
160↵
320↵
480↵
640↵
800↵
960↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
a▴and▴b=?▴380▴38↵
380↵
760↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
a▴and▴b=?▴333▴777↵
None↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
a▴and▴b=?▴0▴200↵
Error↵
[7:17▴user@ws▴in▴hw8]$▴
若一個整數所有「真因數」的總和等於其本身的數值,則稱為「完美數(Perfect Number)」。
例如:6 的真因數有 1、2、3,且 1 + 2 + 3 = 6,因此 6 是一個完美數。
注意:真因數是指除自身以外的因數,例如6的真因數不包含6本身
請設計一個 C 語言程式 perfect_number.c,讓使用者輸入一個正整數$n$,並判斷該正整數是否為完美數。
如果使用者輸入的數值$\lt$1(即 $n \le 0$),則輸出錯誤訊息 “Error!”。
此題的執行結果可參考如下:
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
n=?▴6↵
6▴is▴a▴perfect▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
n=?▴5↵
5▴is▴not▴a▴perfect▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
n=?▴28↵
28▴is▴a▴perfect▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
n=?▴8128↵
8128▴is▴a▴perfect▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
n=?▴10000↵
10000▴is▴not▴a▴perfect▴number.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
n=?▴0↵
Error!↵
[7:17▴user@ws▴in▴hw8]$▴
請使用C語言設計一個阿金的故事產生器(story_maker.c),讓我們輸入「在哪裡?」、「做什麼?」等兩個選擇,然後由程式輸出產生一個簡短小故事。具體來說,我們首先必須輸入一個代表地點的字元,其中以「S」代表學校、「R」代表餐廳,「G」代表花園;最後再輸入代表「做什麼」的字元,其中「R」代表看書、「S」代表睡覺、「W」代表上班。請取得使用者的輸入後,產生一段簡單的故事描述。為便利起見,我們將輸入的字元彙整如下:
| 代號 | 地點名稱 |
|---|---|
| S / s | the school |
| R / r | the restaurant |
| G / g | the garden |
| 其他英文字元 | an unknown place |
| 代號 | 活動名稱 |
|---|---|
| R / r | reading |
| S / s | sleeping |
| W / w | working |
| 其他英文字元 | doing an unknown activity |
以上的輸入字元,大小寫都視為正確。但輸入超出以上範圍(英文字母A~Z)的字元時,必須顯示「Error!」。請參考以下的程式執行結果:
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
ww↵
Mr.▴Money▴is▴working▴in▴an▴unknown▴place.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Rs↵
Mr.▴Money▴is▴sleeping▴in▴the▴restaurant.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Rw↵
Mr.▴Money▴is▴working▴in▴the▴restaurant.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
Zr↵
Mr.▴Money▴is▴reading▴in▴an▴unknown▴place.↵
[7:17▴user@ws▴in▴hw8]$▴./a.out↵
$#↵
Error!↵
[7:17▴user@ws▴in▴hw8]$▴