十进制转为二进制,实在不知道如何实现多个数转换并输出,C语言

编写一个函数,其参数是一个整数N,返回值也是一个整数(假设是R),规则是整数R写出来(输出出来)是N的二进制形式。例如:参数是15,返回值应是1111。主函数中输入若干组整数,依次输出其二进制形式。

输入样例:
15 16 17 63 64 65
结尾无空行
输出样例:
1111
10000
10001
111111
1000000
1000001
结尾无空行
输入样例:
0 1 123 456 789
结尾无空行

#include <stdio.h>

int f(int n) {
    int r = 0;
    int b = 1;
    while(n) {
        r += (n % 2) * b;
        n /= 2;
        b *= 10;
    }
    return r;
}

int main()
{
    int n;
    while (scanf("%d", &n) == 1)
        printf("%d\n", f(n));
    return 0;
}

一个简单的实现:



#include <stdio.h>
void OctToBinary(int num,char * str){
    int i,j,k=0;
    int zero = 0;
    for(i=31;i>=0;i--){
        j = (num>>i)&1;

        if(zero==0&&j==1){  //直到整数的二进制位第一个为1的二进制为,开始读入字符串数组 
            zero=1;
            str[k]='1';
            //printf("i=%d,j=%d,str[%d]=%c\n",i,j,k,str[k]);
            k++;            
        }
        if(zero==1){   //读取整数二进制为1后面的其余二进制位 
            str[k] = '0'+j;
            //printf("i=%d,j=%d,str[%d]=%c\n",i,j,k,str[k]);
            k++;
        }
        
    }
    
}

int main(void){
    
    int num;
    char str[32]={0};  //初始化字符数组 
    int i=0;
    while(i<5){
        scanf("%d",&num);
        OctToBinary(num,str);
        printf("%d to binary : %s\n",num,str);
    }
    
    return 0;
    
}