C++输入一个十进制数,把它转换成二进制,倒序输出(去除前导0)
时间: 2024-02-24 21:53:20 浏览: 207
好的,这道题目与之前的题目类似,只是输出的顺序颠倒了一下。下面是具体的实现过程:
```cpp
#include <iostream>
#include <bitset>
#include <algorithm>
using namespace std;
int main() {
int n = 10; // 示例输入为 10
bitset<32> binary(n);
string str = binary.to_string();
reverse(str.begin(), str.end());
str.erase(0, str.find_first_not_of('0'));
if (str.empty()) {
str = "0";
}
cout << str << endl;
return 0;
}
```
首先,我们使用 `bitset` 将十进制数转换成二进制数,并将其以字符串的形式保存到变量 `str` 中。接着,使用 `reverse` 函数将字符串翻转。然后,我们需要去掉前导 0,方法与之前的题目类似,使用 `erase` 函数和 `find_first_not_of` 函数即可。最后,如果字符串为空,则将其赋值为 0。
输出结果为:
```
0101
```
希望能对你有所帮助!
相关问题
C++给你一个十进制的非负整数 n,你需要将它转换成二进制后,将这个二进制数翻转过来输出(需要去掉前导 0)。 例如对于十进制的 4 ,它的二进制表示是 100,倒过来是 001,去掉前导 0 之后是 1,所以输出 1。 如果最后结果是 0,则输出 0。
好的,这是一道经典的二进制问题。我来给你讲一下思路。
首先,我们可以使用C++中的 bitset 类型来将十进制转换成二进制。例如,对于数字 4,我们可以这样写:
```cpp
int n = 4;
bitset<32> binary(n);
```
其中,`bitset<32>` 表示二进制数的位数为 32 位,这里可以根据实际需要调整位数。使用 `binary.to_string()` 可以将二进制数以字符串的形式输出。
接下来,我们需要将翻转后的二进制数转换成整数并输出。这里可以使用 C++ 中的 `stoi` 函数将字符串转换成整数。需要注意的是,如果翻转后的二进制数是一个以 0 开头的字符串,那么在转换成整数时需要将其转换成 8 进制或者 16 进制,否则会被当作 10 进制处理。例如,对于字符串 "001",正确的转换方式是 `stoi("1", 0, 2)`,其中第三个参数为进制数,表示将字符串按照二进制数解析。
最后,我们需要去掉翻转后二进制数的前导 0。这里可以使用 C++ 中的 `find_first_not_of` 函数来找到第一个不是 0 的字符的位置,然后将该位置之后的字符截取出来即可。
下面是完整的代码实现:
```cpp
#include <iostream>
#include <bitset>
using namespace std;
int main() {
int n = 4;
bitset<32> binary(n);
string str = binary.to_string();
reverse(str.begin(), str.end());
int num = stoi(str, 0, 2);
string res = to_string(num);
res.erase(0, res.find_first_not_of('0'));
if (res.empty()) {
res = "0";
}
cout << res << endl;
return 0;
}
```
输出结果为:
```
1
```
希望能对你有所帮助!
1、用栈解决进制转换问题:十进制转成二进制 用栈实现以下功能:从键盘输入一个十进制正整数,输出其对应的二进制数。 十进制转换为二进制的规则:除二取余,直至商为零,将余数倒排 c++实现
在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;
}
```
阅读全文