C语言十进制转换二进制八,十六进制。
十进制转二进制有个计算公式,就是除以2取余再倒序显示余数就是了。可以根据公式写。八制进公式也同理。十六进制有点不一样,大于9的要转为字母。A,B,C,D,E,F。
#include <stdio.h>
void totwo();
void toeight();
void tosixt();
int main()
{
totwo();
toeight();
tosixt();
return 0;
}
void totwo()
{
int p,m,n,a[100];
printf("十进制转二进制\n");
printf("输入十进制数:");
scanf("%d",&p);
for(m=0;p>0;m++)
{
a[m]=p%2;
p=p/2;
}
for(n=m-1;n>=0;n--)
printf("%d",a[n]);
printf("\n");
}
void toeight()
{
int p,m,n,a[100];
printf("十进制转八进制\n");
printf("输入十进制数:");
scanf("%d",&p);
for(m=0;p>0;m++)
{
a[m]=p%8;
p=p/8;
}
for(n=m-1;n>=0;n--)
printf("%d",a[n]);
printf("\n");
}
void tosixt()
{
int p,m,n,a;
char ch[100];
printf("十进制转十六进制\n");
printf("输入十进制数:");
scanf("%d",&p);
for(m=0;p>0;m++)
{
a=p%16;
if(a<10)
{
ch[m]=a+'0';
}else
{
ch[m]=a-10+'A';
}
p=p/16;
}
for(n=m-1;n>=0;n--)
printf("%c",ch[n]);
printf("\n");
}
--11-2二进制转十进制。也是有一个公式,比如二进制1010对应十进制是10,从前面位开始1*2^3+0*2^2+1*2^1+0*2^0=8+2=10.还有就是判断输入的是不是二进制数了。
#include<stdio.h>
void towtoten();
int pow(int a);
int main()
{
towtoten();
return 0;
}
void towtoten()
{
int temp,n=0,i,j,sum=0;
char p,a[100];
printf("\n二进制转十进制\n");
printf("输入二进制数:");
while((p=getchar())!='\n')
{
a[n]=p;
n++;
}
j=n;
for(i=0;i<n;i++)
{
if(a[i]=='.')
{
printf("不支持小数。");
towtoten();
return;
}
if(a[i]=='-')
{
printf("不支持负数。");
towtoten();
return;
}
if(a[i]!='1'&&a[i]!='0')
{
printf("输入有误,不是二进制数。");
towtoten();
return;
}
if(a[i]=='1')
{
temp=pow(j-1);
}else
{
temp=0;
}
sum+=temp;
j--;
}
printf("十进制数:%d",sum);
printf("\n");
}
int pow(int a)
{
int product=1;
for(int i=0;i<a;i++)
{
product*=2;
}
return product;
}
来源:oschina
链接:https://my.oschina.net/u/2761175/blog/759255