C语言中实现十进制转二进制输出

众所周知,C中以八进制,十进制和十六进制都可以通过%o,%d和%x轻松实现,然而唯独没有提供二进制输出的快速方式。

方法一:itoa函数
itoa函数将数值转换为字符串,通过规定转换进制实现。

#include
#include
//注意必须调用stdlib.h函数库
int main(void)
{
    while(1)
    {
        int a;
        printf("请输入一个十进制数:  ");
        scanf("%d",&a);
        char str[30];
        itoa(a,str,2);//2即是代表转换为2进制
        printf("转换成二进制数是: %s\n\n",str);
    }
    return 0;
}

函数:itoa(integer to array)
功能:把一整数转换为字符串
用法:char *itoa(int value, char *string, int radix); 将int整型数转化为一个字符串,并将值保存在数组string中。
value: 待转化的整数。
radix:是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制。
* string:保存转换后得到的字符串。
返回值:
char *:指向生成的字符串, 同*string。
头文件:"stdlib.h"


方法二:短除法
短除法,将十进制转换为二进制的笔算过程。

#include
int main()
{
    int a,b,k,i;
    int remainder[30];
    while(1)
    {
        //定义了一个remainder数组,用来收集短除法除得的余数,栈倒序输出。
        printf("请输入一个十进制数:  ");
        scanf("%d",&a);
        k=0;
        while(a!=0)
        {
            b=a/2;
            k++;
            remainder[k]=a-b*2;
            a=a/2;
        };
        printf("转换成二进制数是:  ");
        for (i=k; i>=1; i--)
        {
            printf("%d",remainder[i]);
        }
        printf("\n\n");
    }
    return 0;
}

感谢博主:https://blog.csdn.net/wjkhello/article/details/78149441

你可能感兴趣的:(PTA)