Онлайн компилятор C

#include <stdio.h> int main() { int n,m,length=0; int a[1000]; scanf("%d",&n); while(n/2!=0){ m=n%2; a[length]=m; length++; n=n/2; } for(int i=0;i<length;i++){ printf("%d",a[i]); } return 0; }
1) 这段代码的功能是将一个十进制整数转换为二进制表示,但存在一个逻辑错误:它没有处理最后一位商为0时的余数,并且输出顺序是反的(先输出的是低位)。

2) 提示1:考虑在while循环结束后,还需要将最后一次的余数(当n/2==0时的n值)存入数组。
提示2:二进制数字的输出顺序应该从高位到低位,可以尝试调整for循环的遍历方向。