十进制转二进制,不用循环

编程输出十进制非负整数转换成二进制数的序列。(不能用递归函数,当然此时你还没有学习到函数,请用循环解决)
输入格式:

若干个非负整数,每个整数代表一组数据,且都不超过2的30次方1073741824,数据之间以空格或回车分隔。
输出格式:

依次输出每组数据的二进制序列,每个输出结果单独占一行。
输入样例:

25 36 0 1
1024 1073741824
结尾无空行
输出样例:

11001
100100
0
1
10000000000
1000000000000000000000000000000
结尾无空行
我的代码

#include<iostream>
using namespace std;
int main()
{
    int i=0,a,j=29;
    int b[30];
    while(cin>>a)
    {
        while(a!=0)
        {
            i=a%2;
            b[j]=i;
            j--;
            a=a/2;
                    printf("%d",b[j]);
        }
        printf("\n");
    }
    return 0;
}