利用栈将十进制转换为等值的二、八、十六进制,其中整数的数值转换部分的函数代码该怎么写
时间: 2024-10-24 13:02:32 浏览: 25
要将十进制整数转换成等值的二进制、八进制或十六进制,你可以使用C++中的位操作以及栈(stack)数据结构。这里我会提供一个通用的方法,首先创建一个栈来存储每一位的值,然后根据基数进行相应的转换。
以下是一个基本的`decimal_to_base`函数模板,接受十进制整数`num`和转换后的基数(2, 8, 或者 16),返回对应的字符串表示:
```cpp
#include <iostream>
#include <stack>
#include <string>
// Function to convert decimal to base
template <typename Base>
std::string decimal_to_base(int num) {
std::stack<std::string> digits;
do {
digits.push(std::to_string(num % Base));
num /= Base;
} while (num > 0);
// Concatenate the digits in reverse order
std::string result;
while (!digits.empty()) {
result = digits.top() + result;
digits.pop();
}
return result;
}
int main() {
int decimal_num = 123; // Replace with your number
std::cout << "Decimal: " << decimal_num << "\n";
std::cout << "Binary: " << decimal_to_base<2>(decimal_num) << "\n";
std::cout << "Octal: " << decimal_to_base<8>(decimal_num) << "\n";
std::cout << "Hexadecimal: " << decimal_to_base<16>(decimal_num) << "\n";
return 0;
}
```
这段代码首先计算余数并将它们压入栈中,直到商变成0。然后从栈中弹出并拼接这些数字,得到最终结果。
阅读全文