上機習題 #1

題目:數字不同進位制之轉換。

說明:一個數值資料可以利用不同的進位制來表示。在使用不同進位制表示資料時,為了分辨所用之進位制,除了數值資料外,再用另外的規定或符號表示之。在此,我們規定不同進位制的表示法如下:

  1. 一般數值資料即為十進位(decimal),如29為十進位。

  2. 若是開頭為0,則為八進位(octal),如035為八進位。

  3. 若是開頭為0x,則為十六進位(hexadecimal),如0x1D為十六進位。

  4. 若是結尾為b,則為二進位(binary),如11101b為二進位。

請撰寫一個程式,讀入一串資料,判斷此資料是否為合法的數值資料。若是合法數值資料,則判斷它是何種進位制,然後將此資料用以上四種進位制顯示出來。若是不合法資料,則判斷它最接近哪一種合法數值。

例如,若輸入資料為

035

則輸出為

十進位:29

八進位:035
十六進位:0x1D
二進位:11101b

其他輸入錯誤範例如下:

輸入資料 輸出
ABC12 資料格式錯誤
0y1D 資料格式錯誤,是否為0x1D?
011101b 資料格式錯誤,是否為11101b?
035b 資料格式錯誤,是否為035?

此程式以文字模式撰寫即可,當然使用視窗撰寫亦可。