帮我c++语言用栈的知识编写一个程序实现十进制整数转换成其他进制(包括二进制、八进制、十六进制)的数
时间: 2024-09-22 18:08:29 浏览: 51
下面是一个简单的 C++ 程序,它使用栈来实现十进制整数转为二进制、八进制、十六进制:
```cpp
#include <iostream>
#include <stack>
#include <string>
// 将十进制转换为指定进制的字符串
std::string convertToOtherBase(int decimal_num, int base) {
std::stack<char> digits;
while (decimal_num > 0) {
digits.push((decimal_num % base) + '0'); // '+' ensures non-negative values for bases >= 10
decimal_num /= base;
}
// 从栈顶反向添加数字,形成正确的进制顺序
std::string result = "";
while (!digits.empty()) {
result += digits.top();
digits.pop();
}
return result;
}
int main() {
int decimal_input;
std::cout << "Enter a decimal number: ";
std::cin >> decimal_input;
std::cout << "Binary: " << convertToOtherBase(decimal_input, 2) << "\n";
std::cout << "Octal: " << convertToOtherBase(decimal_input, 8) << "\n";
std::cout << "Hexadecimal: " << convertToOtherBase(decimal_input, 16) << "\n";
return 0;
}
```
在这个程序中,`convertToOtherBase` 函数接收一个十进制数和一个目标进制作为输入。它使用栈存储每个位置的数字,并在遍历过程中将结果压入栈中。最后,它返回一个字符串,其中包含相应的进制表示。
在 `main` 函数中,用户会被提示输入一个十进制数,然后程序会分别将其转换为二进制、八进制和十六进制并输出。
阅读全文