C++定义一个栈类,通过调用类中定义的入栈和出栈函数完成十进制到二进制的转换。
时间: 2024-10-24 22:05:30 浏览: 10
在C++中,我们可以定义一个栈类`BinaryStack`,用于存储十进制数的位表示并逐步进行转换。这里我们假设栈只能存储整数的一位,当我们读取完一位就将结果转换成二进制形式。以下是基本的实现步骤:
```cpp
#include <iostream>
#include <stack>
class BinaryStack {
private:
std::stack<int> decimalBits; // 存储十进制的每位
public:
void push(int digit) { // 入栈操作
decimalBits.push(digit);
}
int popAndConvert() { // 出栈并转换为二进制的操作
if (decimalBits.empty()) return 0;
int bit = decimalBits.top(); // 取出当前位
decimalBits.pop();
// 将位转换为二进制并添加到结果
static char binary[4] = {'0', '1'};
std::string binaryStr = binary[bit % 2];
// 如果还有剩余位,继续处理
return binaryStr + (popAndConvert() == 0 ? "" : " ");
}
};
int main() {
BinaryStack stack;
int decimalNumber = 10; // 需要转换的十进制数
while (decimalNumber > 0) {
stack.push(decimalNumber % 2); // 先除以2取余数
decimalNumber /= 2;
}
std::cout << "十进制到二进制转换结果: " << stack.popAndConvert() << "\n"; // 从右向左打印二进制结果
return 0;
}
```
阅读全文