0
已解决
王子健
初级天翼
初级天翼
#include<iostream>
using namespace std;
int s[1010];
int main()
{
long long a,t=1;
int n,ans=0,l=-1;
cin>>a;
while(a)
{
n=a%10;
ans+=n*t;
t=t*8;
a/=10;
}
cout<<ans;
while(ans!=0)
{
s[++l]=ans%2;
ans/=2;
}
for(int i=l;i>=2;i--)
cout<<s[i];
return 0;
}
请问这提哪里错了,请看到的大佬速回。
(下午就有课了)
0
已采纳
丁浩然
新手光能
新手光能
先把八进制转换为十进制,再把十进制转换为二进制:
8-10
while(n)
{
x=n%10;
y+=(x*pow(8,s));
n/=10;
s++;
}
10-2
while(y)
{
p[++b]=y%2;
y/=2;
}
for(int i=b; i>=1; --i)
cout<<p[i];
0
0
宫西诚
修练者
修练者
不用这么麻烦
l=a.size()-1;
for(int i=0;i<=l;i++)
{
s=s+int(a[i]-48)*pow(8,l-i);
}
while(s!=0)
{
b=char(s%2+48)+b;
s=s/2;
}
cout<<b;
a,b都是字符串,s,l为longlong
宫西诚在2019-01-23 14:00:18追加了内容
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a,b;
int l=0;
long long s=0;
cin>>a;
l=a.size()-1;
for(int i=0;i<=l;i++)
{
s=s+int(a[i]-48)*pow(8,l-i);
}
while(s!=0)
{
b=char(s%2+48)+b;
s=s/2;
}
cout<<b;
return 0;
}