1. 程式人生 > >【C++解題報告】十進位制轉換二、八、十六進位制

【C++解題報告】十進位制轉換二、八、十六進位制

題目來源:
    《函式、遞推、遞迴》,遞迴第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";
}