【C++解題報告】十進位制轉換二、八、十六進位制
阿新 • • 發佈:2019-01-27
題目來源:
《函式、遞推、遞迴》,遞迴第7題。
題目描述:
程式設計輸入一個十進位制整數N將它轉換成二進位制、八進位制、十六進位制。
輸入格式:
輸入N。
輸出格式:
輸出N的二進位制、八進位制、十六進位制形式。
資料規模與約定:
0<N<21000000題目思路: 輸入N,定義3個函式(bit/oct/hex)分別計算二進位制、八進位制、十六進位制。計算過程如下(以10進位制的8轉為2進製為例):8-1000.
8/2=4.....0 4/2=2.....0 2/2=1.....0 1
如果十進位制數n大於1,則bit(n/2),求各個商,再以次輸出餘數n%2.
八進位制數(如果大於7,oct(n/8),n%8)、十六進位制數(如果大於15,oct(n/16),n)道理相同。
程式碼:
#include<iostream> //標頭檔案 using namespace std; int bit(int n) //計算二進位制 { if(n>1) //如果n是大於1 遞迴呼叫n/2 再輸出n%2 下面的八、十六進位制同理 bit(n/2); cout<<n%2; //輸出進位制數 } int oct(int n) //計算八進位制 { if(n>7) oct(n/8); cout<<n%8; } int hex(int n) //計算十六進位制 { if(n>15) hex(n/16); cout<<n%16; } int main() //定義主函式 { int n; //定義變數 cin>>n; bit(n); //進位制的轉換 cout<<"\n"; oct(n); cout<<"\n"; hex(n); cout<<"\n"; }