c++实现栈的进制转换
时间: 2023-09-28 18:05:55 浏览: 169
下面是使用栈实现进制转换的 C++ 代码。
```cpp
#include <iostream>
#include <stack>
using namespace std;
void convert(int num, int base) {
stack<int> s;
while (num > 0) {
s.push(num % base);
num /= base;
}
while (!s.empty()) {
int digit = s.top();
s.pop();
if (digit < 10) {
cout << digit;
} else {
cout << (char)('A' + digit - 10);
}
}
cout << endl;
}
int main() {
int num, base;
cout << "Enter a decimal number: ";
cin >> num;
cout << "Enter the base (2-16): ";
cin >> base;
convert(num, base);
return 0;
}
```
在上面的代码中,我们使用了 STL 中的 `stack` 类来实现栈。`convert` 函数接受两个参数,一个是需要转换的十进制数 `num`,另一个是目标进制 `base`。首先,我们将 `num` 不断除以 `base`,并将余数压入栈中,直到 `num` 变为 0。然后,我们依次弹出栈中的元素,并将其转换为对应的字符或数字输出。如果余数小于 10,则直接输出对应数字,否则,输出对应的字母(例如,10 对应 'A',11 对应 'B',以此类推)。最后输出一个换行符。
在主函数中,我们首先让用户输入需要转换的十进制数 `num` 和目标进制 `base`,然后调用 `convert` 函数进行转换。
阅读全文