Online Compiler C

#include <stdio.h> int main() { int n,m; scanf("%d",&n); int a[100]; int temp=n; int length=0; do{ m=temp%2; a[length]=m; length++; temp=temp/2; } while(temp!=0); for(int i=length;i>0;i-- ){ printf("%d",a[i]); } return 0; }
1) 这段代码试图将输入的十进制整数转换为二进制表示,并输出二进制数字序列。但代码中存在一个逻辑错误,导致输出结果不正确。

2) 提示1:注意数组索引的范围,当从后向前遍历数组输出时,起始索引的设置是否正确?
提示2:考虑使用调试方法,比如在循环中打印数组索引和对应的值,观察实际存储和输出的内容是否一致。