C++顺序栈实现十进制到二进制、八进制和十六进制转换的
时间: 2024-10-20 10:08:28 浏览: 64
在C++中,我们可以使用顺序栈数据结构实现十进制数转成二进制、八进制和十六进制的过程。首先,我们需要定义一个栈来存储每一位的值,然后逐位处理十进制数,将每个数字转换为其等效的二进制、八进制或十六进制字符。这里是一个简单的示例:
```cpp
#include <stack>
#include <string>
// 十进制到二进制
std::string decimalToBinary(int num) {
std::stack<char> binaryStack;
while (num > 0) {
binaryStack.push((char)(num % 2 + '0')); // 将余数转换为字符并入栈
num /= 2; // 更新数值
}
std::string binary = "";
while (!binaryStack.empty()) {
binary += binaryStack.top();
binaryStack.pop(); // 取出栈顶元素
}
return binary;
}
// 类似地,可以定义decimalToOctal 和 decimalToHex 函数
// 十进制到八进制
std::string decimalToOctal(int num) {
std::stack<char> octalStack;
while (num > 0) {
octalStack.push((char)(num % 8 + '0'));
num /= 8;
}
// 同样处理栈里的元素并返回字符串
}
// 十进制到十六进制
std::string decimalToHex(int num) {
std::stack<std::pair<char, bool>> hexStack;
const char* hexDigits = "0123456789ABCDEF";
while (num > 0) {
int remainder = num % 16;
if (remainder >= 10) {
hexStack.push({hexDigits[remainder - 10], true}); // 对大写的十六进制字符设置标志
} else {
hexStack.push({hexDigits[remainder], false});
}
num /= 16;
}
std::string hex = "";
for (auto& pair : hexStack) {
hex += (pair.first + (pair.second ? 'A' : 'a'));
}
return hex;
}
阅读全文