1978-十进制转换成二进制

为什么我写的代码只能输出二进制的最后一位啊?
感觉找不出来错了。

img

img

因为你的for循环的判断条件是n/2,而n是每次在循环内被/2了,但即使改正确你这个程序输出的二进制码也是反着的或者说答案也有可能是错的,下面是我的代码,仅供参考:

#include<stdio.h>
int main() {
    int n,i,j,k;
    scanf("%d",&n);
    int a[1000];
    while(scanf("%d",&n)!=EOF) {
        int ans = 0;
        while(n) {
            j = n%2;
            a[ans++]=j;
            n/=2;
        }
        for(int i = ans - 1; i >= 0 ; i --) printf("%d",a[i]);
        puts("");
    }
    return 0;
}