1. 程式人生 > >C++實現十進位制轉換為任意進位制

C++實現十進位制轉換為任意進位制

  1. 十進位制數在C++中用什麼表示?
  2. 一個十進位制數,在程式中用什麼方式轉換為其他進位制,和在數學中的思路一樣嗎??
  3. 輸出的結果用什麼表示比較方便?
  4. 下面的程式中digit思考為什麼要用靜態變數?
#include <iostream>
#include <stack>
using namespace std;
//十進位制轉任意進位制:遞迴實現
void convert(stack<char>& S, __int64 n, int base)//得到一位
{
	static char digit[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };//新進位制下的數位
	if (n > 0)//直到n->0
	{
		S.push(digit[n%base]);//存入
		convert(S, n / base, base);//第二個引數十進位制數更新,通過遞迴得到所有更高位
	}
}//S逆序輸出

//迭代實現
void convertIteration(stack<char>& S, __int64 n, int base)
{
	static char digit[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };//新進位制下的數位
	while (n > 0)
	{
		int remainder = int(n%base);
		S.push(digit[remainder]);
		n /= base;
	}
}