c语言二进制转换八进制

蔚落 2022-04-01 11:14 465阅读 0赞

二进制转换为八进制

把要转换的二进制数按照3位一组从右边往左边分组。不足3位的在左边补上0

111001111001=001 110 001 111 001

#include

#define MAX 1024

/\****************往左补0 n需要补0的个数*******************/*

int \ Move(int *Elem,int n,int length)*

{

—length;

for(length;length>=0;—length)

{

Elem[length+n]=Elem[length];

}

if(n==1)

{

Elem[0]=0;//补1个0

}

if(n==2)//补两个0

{

Elem[0]=0;

Elem[1]=0;

}

return Elem;

}

/\****************二进制转换 为八进制 Elem为二进制数 length为有效二进制长度*******************/*

void B_O(int Elem[],int length)

{

*—length;*

*printf(“二进制转换为八进制为:”);*

for(int i=0;i<length;)

{

int sum=Elem[i]\4+Elem[i+1]*2+Elem[i+2];*

printf(“%d”,sum);

i+=3;

}

}

/\****************用于测试字符串长度 *******************/*

void input(int Elem[],int length)

{

*for(int i=0;i<length;++i)*

*{*

*printf(“ %d “,Elem[i]);*

}

}

int main()

{

*int i=0;*

int Elem[1024];

int flag=1;

while(flag)

{

scanf(“%d”,&Elem[i]);

if(Elem[i]!=0 &&Elem[i]!=1)

{

flag=0;

}

else

{

++i;

}

}

int length=i;

if(length%3==1)//需要补两个0

{

int \elem=Move(Elem,2,length);*

length+=2;

printf(“\n”);

B_O(elem,length);

return 0;

}

if(length%3==2)//需要补一个0

{

int \elem=Move(Elem,1,length);*

++length;

printf(“\n”);

B_O(elem,length);

return 0;

}

if(length%3==0)

{

B_O(Elem,length);

return 0;

}

*return 0;*

}

运行截图:

20181230154032752.png

20181230154100593.png

20181230154133185.png

20181230154210359.png

发表评论

表情:
评论列表 (有 0 条评论,465人围观)

还没有评论,来说两句吧...

相关阅读