c语言二进制转换八进制

二进制转换为八进制

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

111001111001=001 110 001 111 001

#include<stdio.h>

#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;

 }

运行截图:

 

 

 

 

发布了25 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39771637/article/details/85390565