c语言二进制转换八进制
二进制转换为八进制
把要转换的二进制数按照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;*
}
运行截图:
还没有评论,来说两句吧...