在线编译器 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-1;i>0;i-- ){ printf("%d",a[i]); } return 0; }
1) 这段代码读取一个整数n,将其转换为二进制表示,并将二进制位存储到数组中,然后从高位到低位打印二进制数。

2) 提示1:注意循环条件 `while(temp!=0)` 和数组索引 `a[length]=m` 的配合,思考当输入为0时程序会输出什么结果。
提示2:检查 `for` 循环的起始索引 `i=length-1` 和终止条件 `i>0`,这会导致最高位的二进制数字没有被打印出来。