本帖最后由 CationLiu 于 2019-3-11 22:25 编辑

方案一:
    source:https://blog.csdn.net/weixin_41676881/article/details/80745177            
    输入:整数   
    输出:整数
    这个方案的问题在于整数不能大于1023否则会溢出,不过优点是比较简单。
    #include <stdio.h>
    int main()
    {
        int x=1000;
        printf("%d\n",transfer(x));
        return 0;
    }
    int transfer(int x)
    {
        int p=1,y=0,yushu;
        while(1)
        {
            yushu=x%2;
            x/=2;
            y+=yushu*p;
            p*=10;
            if(x<2)
            {
                y+=x*p;
                break;
            }
        }
        return y;
    }

    x=1023,输出:1111111111
    x=23,输出:10111
方案二:
    source:https://blog.csdn.net/wjkhello/article/details/78149441
    输入:整数
    输出:数组
    这个方案的优点是可以做大数运算,不过输出是数组的形式,其次需要注意数组的长度。
    #include <stdio.h>
    int main()
    {
        int remainder[30];//定义了一个remainder数组,用来收集短除法除得的余数,栈倒序输出。
        int i;
        int x=1000;
        int k=transfer(x,remainder);
        for (i=k;i>=1;i--){
            printf("%d",remainder);
        }
        return 0;
    }

    int transfer(int x, int remainder[])
    {
        int b,k;
        k=0;
        while(x!=0){
            b=x/2;
            k++;
            remainder[k]=x-b*2;
            x=x/2;
        }
        return k;
    }

    x=1000,输出:1111101000
    x=10000,输出:10011100010000

方案三:
    source:https://www.cnblogs.com/didiaoxiaoguai/p/6731310.html
    输入:整数
    输出:数组(固定位数,不足部分以0填补)
    此方案与方案二差不多,不过可以指定输出的位数,将不足的位用0补满。
    #include <stdio.h>
    #define N 32 //固定位数
    int main()
    {
        int remainder[N] = {0};//将数组初始化为0(位数不满时,将输出0填补)
        int i;
        int x=1000;
        transfer(x,remainder);
        for (i = 0; i <= N - 1; i++)
        {
            printf("%d",remainder);
        }
        return 0;
    }

    int transfer(int x, int remainder[N])
    {
        int i;
        for (i = N-1; i >=0; i--)  //对数组从后往前赋值
        {
            remainder = x % 2;
            x = x / 2;
        }        return 0;
    }

    x=1000,输出:00000000000000000000001111101000
    x=10000,输出:00000000000000000010011100010000


C语言在线测试:
https://c.runoob.com/compile/11