输入为一串二进制表示的正整数(长度不超过1000),表示形式为: (x)2,其中x为二进制数。输出以下形式的转换结果: (x)2=(y)8 其中y为二进制x对应的八进制数(不含前导0)。用c语言解答
时间: 2024-06-03 16:08:36 浏览: 75
#include<stdio.h>
#include<string.h>
int main()
{
char s[1001];
scanf("%s",s);
int len=strlen(s);
int i,j,k;
int cnt=0;
int num=0;
int ans[1001];
for(i=len-1;i>=0;i--)
{
num+=(s[i]-'0')*(1<<cnt);
cnt++;
if(cnt==3)
{
ans[k++]=num;
cnt=0;
num=0;
}
}
if(cnt)
{
ans[k++]=num;
}
printf("(%s)2=",s);
for(i=k-1;i>=0;i--)
{
printf("%d",ans[i]);
}
printf("(8)");
return 0;
}
相关问题
给定一个二进制正整数,请将其转换为八进制表示形式。 输入 输入为一串二进制表示的正整数(长度不超过1000),表示形式为: (x)2,其中x为二进制数。 输出 输出以下形式的转换结果: (x)2=(y)8 其中y为二进制x对应的八进制数(不含前导0)。c++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
string s;
cin >> s;
int n = s.size();
// 补全成3的倍数位
if (n % 3 == 1) s = "00" + s;
else if (n % 3 == 2) s = "0" + s;
n = s.size();
// 从高位到低位每3位转换成一位八进制数
string ans;
for (int i = n - 1; i >= 0; i -= 3) {
int x = 0;
if (i >= 2) x += (s[i - 2] - '0') * 4;
if (i >= 1) x += (s[i - 1] - '0') * 2;
x += s[i] - '0';
ans += to_string(x);
}
// 去除前导0
reverse(ans.begin(), ans.end());
while (ans.size() > 1 && ans[0] == '0') ans.erase(ans.begin());
cout << "(" << s << ")2=(" << ans << ")8" << endl;
return 0;
}
python输入一个十六进制正整数(长度小于1000),输出对应的二进制数
好的,可以使用 Python 的内置函数来进行进制转换。代码如下:
```python
hex_num = input("请输入一个十六进制正整数:")
decimal_num = int(hex_num, 16)
binary_num = bin(decimal_num)
print("转换后的二进制数字为:", binary_num)
```
以上代码中,我们先使用 input() 函数获取用户输入的十六进制正整数 hex_num,然后使用 int() 函数将其转换为十进制数字 decimal_num,其中,int() 函数的第二个参数指定了输入的数字是十六进制数。接着,我们使用 bin() 函数将十进制数字转换为二进制数字,并将结果输出。
需要注意的是,bin() 函数返回的结果是字符串类型。
希望这个答案对你有帮助!
阅读全文