将十进制转化为二进制、八进制、十六进制

将十进制转化为二进制和八进制很简单,只需要将数对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;
}
    原文作者:SZL-C
    原文地址: https://blog.csdn.net/jhcconan614/article/details/53376163
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞