使用者工具

網站工具


You are not allowed to perform this action
cpp:2025spring:hw1

國立屏東大學 資訊工程系 物件導向程式設計

Turnin 作業 1

  • Turnin Code: cpp.hw1
  • Due Date: 3/2 Friday 23:59:00 (midnight) Hard Deadline
  • 本次作業繳交期限為 3 月 2 日週一晚上 11 點 59 分 0 秒!

繳交方式說明

本次 Turnin 作業包含多個程式題,建議先為本次 turnin 要繳交的內容建立一個外層資料夾(例如:hw1),切換到該資料夾後再為每一題建立一個內層資料夾(每一題的資料夾名稱已寫於題目前方,例如第一題的資料夾名稱為「p1」,第二題的為「p2」,餘以此類推),進入到內層資料夾才依照題目要求進行編撰。

同學們可參考如下命令列操作:

<ssh 登入系計中後> 
[user@ws ~]$ mkdir hw1       # 在家目錄建立了一個名為「hw1」的資料夾
[user@ws ~]$ cd hw1          # 進入「hw1」資料夾
[user@ws hw1]$ mkdir p1      # 切換到「p1」資料夾
[user@ws p1]$ joe hello.cpp  # 使用 JOE 編輯器對檔名為 hello.cpp 的檔案進行編輯

等到我們完成 p1 的撰寫後,請自行加以編譯與執行程式,確認正確無誤後回到外層資料夾使用 turnin▴cpp.hw1▴p1↵ 指令完成上傳第一題:

[user@ws p1]$ cd ..              # 回到上一層資料夾
[user@ws hw1]$ turnin cpp.hw1 p1 # 使用 turnin 指令提交 p1 的程式碼
Turning in:
 p1/hello.cpp -- ok
All done.
[user@ws hw1]$ 

當然,你也可以等到本次作業要求的所有題目都在 hw1 資料夾裡完成後,一次將所有在目前資料夾中的所有檔案都加以上傳。

假設你已經在 hw1 資料夾裡完成所有題目,同時確認檔案的繳交格式正確,並且每個題目的程式檔案皆成功編譯並確認執行結果正確後,我們可以使用以下指令將多餘的(不需要繳交的)檔案加以刪除後,一次將所有檔案繳交:

[user@ws hw1]$ ls                # 檢視當前資料夾下有哪些內容
p1  p2
[user@ws hw1]$ rm -f */a.out     # 移除所有子資料夾中的 a.out 檔案
[user@ws hw1]$ turnin cpp.hw1 .  # 使用 turnin 指令繳交該資料夾下的所有內容
Turning in:
 ./p1/hello.cpp -- ok
 ./p2/hi.cpp -- ok
All done.
[user@ws cpp.hw1]$ 

如果繳交後想要查看已繳交的檔案及相關資訊,可以輸入 turnin▴-ls▴cpp.hw1↵ 指令,例如:

[user@ws ~]$ turnin -ls cpp.hw1
.:
total 8
drwxrwx---. 2 turninman turnin 4096 Feb 23 20:05 p1
drwxrwx---. 2 turninman turnin 4096 Feb 23 20:23 p2
 
./p1:
total 0
-rw-rw----. 1 turninman turnin 0 Feb 23 20:05 hello.cpp
 
./p2:
total 0
-rw-rw----. 1 turninman turnin 0 Feb 23 20:23 hi.cpp
[user@ws ~]$ 

本文使用「▴」及「↵」代表「空白字元」與「Enter 換行字元」,並且將使用者輸入的部份使用灰階方式顯示。 另外,題目的執行結果中,如果出現「(」、「)」、「:」、「;」、「.」與「,」等符號,皆為英文半形!

本學期作業繳交需要為每一題建立一個資料夾(資料夾名稱為該題題目前方之代號,第一題為「p1」,第二題為「p2」,餘以此類推),繳交方式可參考上述內容,任何未依照正確繳交格式的檔案將以 0 分計。


p1 計算矩形面積

請設計一個C++語言的程式rectangleArea.cpp,讓使用者輸入矩形的長與寬,計算該矩形的面積後將結果加以輸出。注意,矩形面積的計算公式為「長 × 寬」。此題的執行結果可參考如下:

[3:23 user@ws hw] ./a.out↵
請輸入矩形的長(公分):▴8.5↵
請輸入矩形的寬(公分):▴12.5↵
此矩形的面積為106.25平方公分↵
[3:23 user@ws hw] ./a.out↵
請輸入矩形的長(公分):▴32.9↵
請輸入矩形的寬(公分):▴16.3↵
此矩形的面積為536.27平方公分↵
[3:23 user@ws hw]

註:本題如有使用浮點數的需求,請使用float做為相關變數的資料型態。

p2 四捨五入至整數位

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

[9:19 user@ws hw] ./a.out↵
Floating▴point▴number:▴13.14↵
The▴rounded▴value▴is▴13.↵
[9:19 user@ws hw] ./a.out↵
Floating▴point▴number:▴38.5832↵
The▴rounded▴value▴is▴39.↵
[9:19 user@ws hw] ./a.out↵
Floating▴point▴number:▴8↵
The▴rounded▴value▴is▴8.↵
[9:19 user@ws hw]

註:本題如有使用浮點數的需求,請使用float做為相關變數的資料型態。

p3 溫度轉換

請設計一個C++語言的程式c2f.cpp,讓使用者輸入一個攝氏溫度,計算並輸出對應的華氏溫度(溫度轉換公式為: 華氏 = 攝氏*(9/5)+32),本題的執行結果可參考如下:

[9:19 user@ws hw] ./a.out↵
Celsius:▴42.5↵
Celsius▴42.5=Fahrenheit▴108.5.↵
[9:19 user@ws hw] ./a.out↵
Celsius:▴100↵
Celsius▴100=Fahrenheit▴212.↵
[9:19 user@ws hw] ./a.out↵
Celsius:▴32.342↵
Celsius▴32.342=Fahrenheit▴90.2156.↵
[9:19 user@ws hw]

註:本題如有使用浮點數的需求,請使用double做為相關變數的資料型態。

p4 成績計算

請設計一個C++語言的程式score.cpp,接受使用者所輸入的作業成績、期中考成績與期末考成績,計算其學期成績後加以輸出。學期成績計算公式為「作業成績 × 0.3 + 期中考成績 × 0.3 + 期末考成績 × 0.4」。本題的執行結果可參考如下:

[9:19 user@ws hw] ./a.out↵
請輸入以下資料:↵
作業成績:▴80↵
期中考成績:▴75.5↵
期末考成績:▴88.5↵
您的學期成績為82.05分↵
[9:19 user@ws hw] ./a.out↵
請輸入以下資料:↵
作業成績:▴100↵
期中考成績:▴89↵
期末考成績:▴92↵
您的學期成績為93.5分↵
[9:19 user@ws hw]

註:本題如有使用浮點數的需求,請使用float做為相關變數的資料型態。

p5 配速計算

請設計一個C++語言的程式pace.cpp,讓跑者可以輸入路跑的里程距離以及所花費的時間,計算並輸出其配速後輸出。本題的執行結果可參考如下:

[9:19 user@ws hw] ./a.out↵
請輸入距離(公里):▴10.5↵
請輸入時間:↵
分:▴67↵
秒:▴36↵
您的配速為每公里6分26秒↵
[9:19 user@ws hw] ./a.out↵
請輸入距離(公里):▴21.2↵
請輸入時間:↵
分:▴118↵
秒:▴32↵
您的配速為每公里5分35秒↵
[9:19 user@ws hw]

請注意配速的計算結果是跑者此趟每公里所花費的時間。

註:本題如有使用浮點數的需求,請使用double做為相關變數的資料型態。

這題使用者所輸入的距離應該會使用double型態的變數來保存,接著取得的時間的分與秒都是整數。由於配速的計算結果是跑者此趟每公里所花費的時間,因此應該使用 「配速=時間/距離」來計算;其中在時間的部份,你必須先考慮採用分鐘或秒鐘為單位,然後再除以距離,不論採用何種方式,所得到的「配速」應該會是浮點數。剩下的問題是,最後還必須將「配速」這個浮點數再轉換為以幾分幾秒的方式呈現,在這個最後的步驟裡,分鐘的部份應該是整數,但秒數則有可能會是浮點數,此時請「無條件捨棄秒數後的小數」即可得到本題的答案。

p6 BMR計算

基礎代謝率 (Basal Metabolic Rate, BMR) 是指人一天所消耗的最低熱量(意即整天什麼事都不做也會消耗的熱量),美國運動醫學學會 (American College of Sports Medicine, ACSM) 針對男性提供了以下的計算公式:

男性的 BMR =(13.7 × 體重)+(5 × 身高)−(6.8 × 年齡)+ 66

女性的 BMR =(9.6 × 體重)+(1.8 × 身高)−(4.7 × 年齡)+ 655

其中體重與身高的單位為公斤與公分。請設計一個可計算男性與女性BMR值的C++語言程式(檔名為bmr.cpp),讓使用者輸入其體重、身高與年齡,並幫他計算其基礎代謝率 (BMR) 後加以輸出。此程式的執行結果如下:

[9:19 user@ws hw] ./a.out↵
請輸入以下資料:↵
體重(公斤):▴50.5↵
身高(公分):▴162↵
年齡:▴38↵
基於以上資料所計算之BMR值如下:↵
男性:1309.45大卡↵
女性:1252.8大卡 ↵
[9:19 user@ws hw] ./a.out↵
請輸入以下資料:↵
體重(公斤):▴72.5↵
身高(公分):▴168↵
年齡:▴50↵
基於以上資料所計算之BMR值如下:↵
男性:1559.25大卡↵
女性:1418.4大卡↵
[9:19 user@ws hw]

註:本題如有使用浮點數的需求,請使用float做為相關變數的資料型態。

p7 找出某個字母後的第i個字母

請設計一個C++語言的程式findNthLetter.cpp。讓使用者先輸入一個小寫的英文字母c,以及一個整數i,請找出從字母c開始往後的第i的英文字母為何?請注意英文字母的順序是a、b、c、…、y到z,若是尋找字母時已超過最後一個英文字母(也就是z),則從字母a開始接續;換句話說,英文字母的順序是a、b、c、…、y到z的循環。此程式的執行結果可參考如下:

[9:19 user@ws hw] ./a.out↵
從哪個字母開始?▴a↵
要尋找a後面的第幾個字母?▴3↵
在字母a後面的第3個字母為d↵
[9:19 user@ws hw] ./a.out↵
從哪個字母開始?▴y↵
要尋找y後面的第幾個字母?▴4↵
在字母y後面的第4個字母為c↵
[9:19 user@ws hw] ./a.out↵
從哪個字母開始?▴x↵
要尋找x後面的第幾個字母?▴12↵
在字母x後面的第12個字母為j↵
[9:19 user@ws hw]

p8 驗證碼計算

請設計一個C++語言程式verify.cpp,讓COCORO公司的員工輸入一個由5位數字組成的代碼(可以由0開頭),並依據以下要求完成其驗證碼之計算並加以輸出(注意,在以下要求中,5位數之代碼由右到左依序被稱為第一位數d1、第二位數d2、…、第五位數d5):

  1. 將第一位數及第二位數相加後乘以第三位數(d1+d2)*d3
  2. 將第四及第五位數的數值相加(d4+d5)並乘以第五位數
  3. 將第1項的運算結果減去第2項的運算結果
  4. 將第3項的運算結果取絕對值
  5. 將第4項的運算結果的十位數做為驗證碼,並將其結果加以輸出

此題的執行結果可參考如下:

[9:19 user@ws hw] ./a.out↵
Please▴input▴ID:▴54321↵
The▴verification▴code▴of▴54321▴is▴3.↵
[9:19 user@ws hw] ./a.out↵
Please▴input▴ID:▴12345↵
The▴verification▴code▴of▴12345▴is▴2.↵
[9:19 user@ws hw] ./a.out↵
Please▴input▴ID:▴00000↵
The▴verification▴code▴of▴00000▴is▴0.↵
[9:19 user@ws hw]

p9 RGB顏色運算

RGB是電腦系統所使用的一種表示顏色的方法,使用三個介於0到255的整數數值來分別表示構成特定顏色的紅(Red)、綠(Green)、藍(Blue)三原色。請設計一個C++語言的程式colorXOR.cpp,讓使用者輸入一個顏色的R、G、B數值,並將其和灰色(R、G、B數值皆為128)進行XOR的運算後輸出結果顏色的R、B、G數值。注意,兩個顏色的XOR運算,就是將其R、G、B三原色的數值分別進行XOR運算。此程式的執行結果如下:

[3:23 user@ws hw] ./a.out↵
R=?▴200↵
G=?▴100↵
B=?▴50↵
Color(200,▴100,▴50)▴XOR▴Color(128,▴128,▴128)=Color(72,▴228,▴178)↵
[3:23 user@ws hw] ./a.out↵
R=?▴255↵
G=?▴0↵
B=?▴230↵
Color(255,▴0,▴230)▴XOR▴Color(128,▴128,▴128)=Color(127,▴128,▴102)↵
[3:23 user@ws hw]

p10 26進制數字轉換為10進制

假設有一個26進位的數字系統使用a、b、c、…、x、y、z等26個小寫的英文字母做為其數字符號,其中a為10進制的0、b為10進制的1、c為10進制的2、…、x為10進制的23、為10進制的24、z為10進制的25。請設計一個C++語言程式26to10.cpp,讓使用者輸入一個兩位數的26進制數字(請注意!本題的輸入一定會是兩位數的26進制數字),並將其轉換為10進制的數值後加以輸出。 此題的執行結果可參考如下:

[3:23 user@ws hw] ./a.out↵
aa↵
(aa)_26=(0)_10↵
[3:23 user@ws hw] ./a.out↵
ba↵
(ba)_26=(26)_10↵
[3:23 user@ws hw] ./a.out↵
ax↵
(ax)_26=(23)_10↵
[3:23 user@ws hw] ./a.out↵
wu↵
(wu)_26=(592)_10↵
[3:23 user@ws hw]

cpp/2025spring/hw1.txt · 上一次變更: 2026/02/23 13:40 由 dengyi

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki