进制转换

缘起

邓俊辉数据结构算法(C++语言)第三版. 第四章的例子

需求是输入任何一个十进制数字, 再输入一个进制N(例如8进制, 16进制), 则输出N进制数.

分析

很显然, 这是栈的运用. 12345转换为8进制.

12345/8=1543….1

1543/8=192…7

192/8=24…0

24/8=3…0

3/8=0…3

所以12345=30071, 这明显是一个栈, 即先前运算的结果必须要先兜着. 不能丢掉了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>

using namespace std;

int main() {
int a, b;
cout << "请输入数字以及一个进制: " << endl;
cin >> a >> b;
int stack[10];
int top = 0;
while(a) {
stack[top++] = a % b;
a /= b;
}
while(top--) {
cout << stack[top];
}
return 0;
}