國立屏東大學 資訊工程系 物件導向程式設計
本次Turnin作業包含多個程式題,建議同學可以為這次作業先建立一個資料夾hw1,然後在該資料夾內再為每一題建立一個子資料夾,用以進行每一題的作答以及上傳。每一題的子資料夾名稱已寫於題目前方,請務必依照題目的規定建立子資料夾,例如第1題為p1、第2題為p2,餘依此類推。當我們完成某一個題目的作答後,就可以使用turnin指令將該題的答案上傳。以第1題為例,當我們在p1子資料夾裡完成作答後,就可以回到hw1資料夾,使用以下指令將其上傳:
[3:23 user@ws hw1] turnin▴cpp.hw1▴p1↵
當然,你也可以等到所有題目都完成後,再回到hw1資料夾,使用以下指令將所有題目都加以上傳:
[3:23 user@ws hw1] turnin▴cpp.hw1▴.↵
本文使用▴及↵代表空白字元與Enter換行字元,並且將使用者輸入的部份使用灰階方式
顯示。
另外,題目的執行結果中,如果出現(、)、:、;、.與,等符號,皆為英文半形!
請設計一個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做為相關變數的資料型態。
請設計一個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做為相關變數的資料型態。
請設計一個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做為相關變數的資料型態。
請設計一個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做為相關變數的資料型態。
請設計一個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型態的變數來保存,接著取得的時間的分與秒都是整數。由於配速的計算結果是跑者此趟每公里所花費的時間,因此應該使用 「配速=時間/距離」來計算;其中在時間的部份,你必須先考慮採用分鐘或秒鐘為單位,然後再除以距離,不論採用何種方式,所得到的「配速」應該會是浮點數。剩下的問題是,最後還必須將「配速」這個浮點數再轉換為以幾分幾秒的方式呈現,在這個最後的步驟裡,分鐘的部份應該是整數,但秒數則有可能會是浮點數,此時請「無條件捨棄秒數後的小數」即可得到本題的答案。
基礎代謝率 (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做為相關變數的資料型態。
請設計一個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]
請設計一個C++語言程式verify.cpp,讓COCORO公司的員工輸入一個由5位數字組成的代碼(可以由0開頭),並依據以下要求完成其驗證碼之計算並加以輸出(注意,在以下要求中,5位數之代碼由右到左依序被稱為第一位數d1、第二位數d2、…、第五位數d5):
此題的執行結果可參考如下:
[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]
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]
假設有一個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]