1、用栈解决进制转换问题:十进制转成二进制 用栈实现以下功能:从键盘输入一个十进制正整数,输出其对应的二进制数。 十进制转换为二进制的规则:除二取余,直至商为零,将余数倒排 c++实现
时间: 2024-10-24 08:11:21 浏览: 29
在C++中,我们可以使用栈来实现十进制转二进制的过程。首先,我们需要定义一个函数来完成这个任务。这里是一个简单的步骤描述:
1. 定义一个空栈用于存储二进制结果的每一位。
2. 输入用户提供的十进制数。
3. 使用while循环,当十进制数大于0时:
a. 计算当前十进制数除以2的余数(`rem = num % 2`)。
b. 将余数压入栈中(`push(rem)`)。
c. 更新十进制数(`num /= 2`)。
4. 循环结束后,栈顶元素就是最低位的二进制数字。由于我们是从高位到低位存入栈的,所以需要遍历栈并打印出所有元素,得到完整的二进制表示。
以下是C++代码实现:
```cpp
#include <iostream>
#include <stack>
std::string decimalToBinary(int num) {
std::stack<int> binaryStack;
while (num > 0) {
int remainder = num % 2;
binaryStack.push(remainder);
num /= 2;
}
std::string result;
while (!binaryStack.empty()) {
result += std::to_string(binaryStack.top());
binaryStack.pop();
}
// 如果第一位是0,则前面加一个前导0
if (result[0] == '0') {
result.insert(result.begin(), "0");
}
return result;
}
int main() {
int decimal;
std::cout << "请输入一个十进制正整数: ";
std::cin >> decimal;
std::cout << "对应的二进制数是: " << decimalToBinary(decimal) << std::endl;
return 0;
}
```
阅读全文