十进制和其他进制转换
我们知道十进制数转换成其他进制数就是不断地除以该进制数,每次的余数倒序组合在一起就是转换后的进制数的值,倒序组合正好利用栈LIFO的特性。下面是实现的代码,比较简单,不做解释。
#include <iostream>
#include <stack>
using namespace std;
void convert(stack<char> &S, __int64 number, int base) {
static char digit[] =
{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
while (number > 0) { //余数进栈
S.push(digit[number % base]);
number /= base;
}
while (!S.empty()) { //倒序取出
cout << S.top();
S.pop();
}
cout << endl;
}
测试代码如下,
int main(int argc, char* argv[])
{
int num, base;
stack<char> s;
cout << "input number and base" << endl;
cin >> num >> base;
convert(s, num, base);
system("pause");
return 0;
}
输出结果