在线编译器 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/2!=0); for(int i=0;i<length;i++ ){ printf("%d",a[i]); } return 0; }
1) 这段代码试图将输入的十进制整数转换为二进制表示,但存在逻辑错误,导致无法正确输出完整的二进制数。

2) 提示1:注意循环条件 `while(temp/2!=0)` 会提前终止循环,导致最高位没有被存入数组。
提示2:考虑使用 `while(temp != 0)` 作为循环条件,并在循环结束后处理最后一位。