1,978
社区成员
发帖
与我相关
我的任务
分享
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
int n,i,j,m;
int sum;
char s[37];
while( cin>>n )
{
while( n-- )
{
cin>>s;
sum=0;
m=strlen(s);
for(i=m-1; i>=0; i-- )
sum+= ((s[i]-'0')<<(m-i-1));//<<是位操作符,表示二进制数向左移位,如001变为010,等效于sum+=((s[i]-'0')*2^(m-i-1));这样应该清楚了,如0101==0*2^3+1*2^2+0*2^1+1*2^0;即转为十进制
if(sum==0)
{
cout<<"0"<<endl;continue;
}
int a[10];
i=0;
while(sum)
{
a[i]=sum%8;//这部分是十进制转八进制的,原理同上。
sum/=8;
i++;
}
for(j=i-1; j>=0; j--) cout<<a[j];
cout<<endl;
}
}
}