将十进制转化为二进制和八进制很简单,只需要将数对2&8取余,然后再逆序输出即可,难度不大,程序逻辑也简单。
将十进制转化为十六进制大致上也是这样的,不过有点复杂的地方就是数的范围,将10朝2&8转化的时候,直接取余,那么数的范围就是0~1 & 0~8,但是,十六进制的范围是0~f,所以说,还是得在定义个字符数组,所需的数就从这里取。
下面就来看这个程序吧!
void change_binary(int data)
{
int res=0;
int i=0;
char s[20];
while(data)
{
res=data%2;
data/=2;
s[i]=res;
i++;
}
printf("转化为二进制的数为:");
while(i)
printf("%d",s[--i]);
printf("\n");
}
void change_octonary(int data)
{
int res=0;
int i=0;
char s[20];
while(data)
{
res=data%8;
data/=8;
s[i]=res;
i++;
}
printf("转化为八进制的数为:0");
while(i)
printf("%d",s[--i]);
printf("\n");
}
void change_hexadecimal(int data)
{
int a[20];
int i=0;
int m=0;
int res=0;
char hex[16]={
'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
while(data>0)
{
res=data%16;
a[i++]=res;
data=data/16;
}
printf("转化为十六进制的数为:0x");
for(i=i-1;i>=0;i--)//倒序输出
{
m=a[i];
printf("%c",hex[m]);
}
printf("\n");
}
int main()
{
int num=0;
printf("Please Enter:");
scanf("%d",&num);
change_binary (num);
change_octonary (num);
change_hexadecimal (num);
return 0;
}