前言
这篇文章主要实现C语言的BODH进制转换
一、代码
#include<stdio.h>
int ab2_10(char b[])
{
int i,e;
for(i=1,e=b[0]-48;b[i];i++)
e=e*2+(b[i]-48);
return e;
}
int ab8_10(char b[])
{
int i,e;
for(i=1,e=b[0]-48;b[i];i++)
e=e*8+(b[i]-48);
return e;
}
int ab10_n(int d,int f)
{
if(d==0) ;
else
{
ab10_n(d/f,f);
printf("%d",d%f);
}
}
int ab16_10(char b[])
{
int i,e;
for(i=1,e=b[0]-48;b[i];i++)
{
if(b[i]<='9'&&b[i]>='0')e=e*16+(b[i]-48);
else if(b[i]<='z'&&b[i]>='a')e=e*16+(b[i]-97);
else if(b[i]<='Z'&&b[i]>='A')e=e*16+(b[i]-65);}
return e;
}
int main()
{
int a,b,c,i,g;
char d[100];
printf("请输入想要转化的数的数制:");
scanf("%d",&a);
switch(a){
case 2:printf("请输入这个二进制数:");
scanf("%s",d);
c=ab2_10(d);
printf("该数的八进制表示为%o\n",c);
printf("该数的十进制表示为%d\n",c);
printf("该数的十六进制表示为%x\n",c);
break;
case 8:{printf("请输入这个八进制数:");
scanf("%s",d);
c=ab8_10(d);
printf("该数的二进制表示为");ab10_n(c,2);
printf("\n");
printf("该数的十进制表示为%d\n",c);
printf("该数的十六进制表示为%x\n",c); }
case 10:printf("请输入这个十进制数:");
scanf("%d",&g);
printf("该数的二进制表示为");ab10_n(g,2);
printf("\n");
printf("该数的八进制表示为%o\n",g);
printf("该数的十六进制表示为%x\n",g);
break;
case 16:{printf("请输入这个十六进制数:");
scanf("%s",d);
c=ab16_10(d);
printf("该数的二进制表示为");ab10_n(c,2);
printf("\n");
printf("该数的八进制表示为%o\n",c);
printf("该数的十进制表示为%d\n",c); }
}
return 0;
}
总结
代码运行成功,就完成了进制数的转换。