使用者工具

網站工具


cpp:2025spring:hw2

Turnin作業2

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

繳交方式說明

本次Turnin作業包含多個程式題,建議同學可以為這次作業先建立一個資料夾hw2,然後在該資料夾內再為每一題建立一個子資料夾,用以進行每一題的作答以及上傳。每一題的子資料夾名稱已寫於題目前方,請務必依照題目的規定建立子資料夾,例如第1題為p1、第2題為p2,餘依此類推。當我們完成某一個題目的作答後,就可以使用turnin指令將該題的答案上傳。以第1題為例,當我們在p1子資料夾裡完成作答後,就可以回到hw2資料夾,使用以下指令將其上傳:

[3:23 user@ws hw1] turnin▴cpp.hw2▴p1↵

當然,你也可以等到所有題目都完成後,再回到hw1資料夾,使用以下指令將所有題目都加以上傳:

[3:23 user@ws hw1] turnin▴cpp.hw2▴.↵

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


p1 字串對齊輸出

請設計一個C++語言的程式align.cpp,接收使用者所輸入的一個(不超過 20)的整數用以設定字串輸出的寬度,並將字串“xyz”與“abcd”分別使用靠右與靠左對齊的方式分別輸出,且沒有輸出字元的部分請使用 * 星號填充。此題的執行結果可參考如下:

[3:23 user@ws hw] ./a.out↵
10↵
∗∗∗∗∗∗∗xyz↵
abcd∗∗∗∗∗∗↵
[3:23 user@ws hw] ./a.out↵
4↵
∗xyz↵
abcd↵
[3:23 user@ws hw] ./a.out↵
2↵
xyz↵
abcd↵
[3:23 user@ws hw]

  1. 本題的輸入只會介於0~20之間。
  2. 若指定的寬度少於要輸出的字串長度時,則必須將字串內容完整呈現。

p2 浮點數與科學記號

請設計一個C++語言的程式scientific.cpp,接收使用者所輸入的一個浮點數後,將其以科學記號表示法的方式加以輸出。請注意,在輸出的科學記號表示法結果中,小數的部分請顯示到第五位(超過部分請四捨五入)。此題的執行結果可參考如下:

[3:23 user@ws hw] ./a.out↵
Please▴input▴a▴floating-point▴number:▴3.1415926↵
The▴number▴can▴be▴represented▴in▴scientific▴notation▴as▴3.14159e+00.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴a▴floating-point▴number:▴543.21↵
The▴number▴can▴be▴represented▴in▴scientific▴notation▴as▴5.43210e+02.↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴a▴floating-point▴number:▴12.34567↵
The▴number▴can▴be▴represented▴in▴scientific▴notation▴as▴1.23457e+01.↵
[3:23 user@ws hw]

p3 華氏溫度轉換攝氏溫度

請設計一個C++語言的程式f2c.cpp,讓使用者輸入一個華氏(Fahrenheit)溫度,計算並輸出對應的攝氏(Celsius)溫度到小數點後第2位(超出位數時,四捨五入到小數點後第2位)。
溫度計算公式:攝氏=(華氏-32)∗(5/9)
本題的執行結果可參考如下:

[3:23 user@ws hw] ./a.out↵
Fahrenheit:▴132↵
Fahrenheit▴132.00▴=▴Celsius▴55.56↵
[3:23 user@ws hw] ./a.out↵
Fahrenheit:▴77.77↵
Fahrenheit▴77.77▴=▴Celsius▴25.43↵
[3:23 user@ws hw] ./a.out↵
Fahrenheit:▴33.3↵
Fahrenheit▴33.30▴=▴Celsius▴0.72↵
[3:23 user@ws hw] ./a.out↵
Fahrenheit:▴-18.05↵
Fahrenheit▴-18.05▴=▴Celsius▴-27.81↵
[3:23 user@ws hw]

  1. 你可以使用定義在 iomanip 中的 setprecision() 或是定義在 iostream 裡的 precision(),並搭配 fixed 操控子,來設定四捨五入輸出到小數點後第二位。
  2. 本題如有浮點數的處理需求,請一律使用double型態。

p4 10進制轉換8進制及16進制

請設計一個C++語言的程式numsys.cpp,接收使用者所輸入的一個十進制的整數,並將其輸出為對應的8進制與16進制整數。 本題的執行結果可參考如下:

[3:23 user@ws hw] ./a.out↵
100↵
100=0144=0x64↵
[3:23 user@ws hw] ./a.out↵
88↵
88=0130=0x58↵
[3:23 user@ws hw]

p5 字串置中輸出

請設計一個C++語言的程式centerAlign.cpp,接收使用者所輸入的一個整數用以設定字串輸出的寬度(假設不會超過20),並將字串“xyz”以置中對齊的方式加以輸出,其中沒有輸出字元的部分請用 ∗ 星號填充。
本題的執行結果可參考如下:

[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴width:▴10↵
∗∗∗xyz∗∗∗∗↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴width:▴5↵
∗xyz∗↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴the▴width:▴2↵
xyz↵
[3:23 user@ws hw]

注意:本題所謂的置中對齊,是指必須在“xyz”的左右兩側保留相同的位置空間。但若是左右兩側無法均等時,左側可以比右側少一個位置。
例如:寬度(10-(xyz長度))/2=3.5,此時設定左側與右側分別保留3與4個位置空間。

p6 字元轉換 【此題超出範圍】

請設計一個C++語言的程式getAndPut.cpp,讓使用者輸入3個字元(可以是大小寫英文字母、阿拉伯數字或符號)後,依下列規則進行轉換後加以輸出:

  1. 若輸入的字元為小寫英文字母時,則將其轉換為大寫英文字母
  2. 若輸入的字元為阿拉伯數字時,則將其轉換為羅馬數字(1→Ⅰ、2→II、3→III、4→IV、5→V、6→VI、7→VII、8→VIII、9→IX)
  3. 若輸入的字元非小寫英文字母與阿拉伯數字時,保持原樣。

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

[3:23 user@ws hw] ./a.out↵
Please▴input▴three▴characters:aB3↵
Output:▴ABIII↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴three▴characters:1x@↵
Output:▴IX@↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴three▴characters:0iV↵
Output:▴IV↵
[3:23 user@ws hw] ./a.out↵
Please▴input▴three▴characters:85v↵
Output:▴VIIIVV↵
[3:23 user@ws hw]

  1. 此題可使用if-else或switch-case等條件判斷敘述。
  2. 可使用 cin.get() 來讀取單一字元,並使用 cout.put() 來輸出單一字元。
  3. 使用 toupper() 轉換小寫字母為大寫,若為其他字元則保持原樣輸出。
  4. 羅馬數字沒有0,所以遇到使用者輸入的字元為0時,不用輸出。

p7 浮點數加總

請撰寫一個C++程式floatingSum.cpp,讓使用者輸入兩個浮點數,並計算它們的總和。
輸出時,請遵循以下格式要求:

  1. 使用 setw(12) 設定總共輸出 12 格的寬度。
  2. 使用 setfill('0') 讓不足的部分用 0 填滿。
  3. 使用 fixed 與 setprecision(6) 讓結果固定顯示 6 位小數。

[3:23 user@ws hw] ./a.out↵
Please▴enter▴two▴floating-point▴numbers:▴3.14▴2.718
00005.858000↵
[3:23 user@ws hw] ./a.out↵
Please▴enter▴two▴floating-point▴numbers:▴12.5▴8.75
00021.250000↵
[3:23 user@ws hw]

cpp/2025spring/hw2.txt · 上一次變更: 2025/03/03 15:10 由 junwu

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki