在线编译器 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) 这段代码试图将输入的十进制整数转换为二进制表示,但存在逻辑错误:它只处理奇数位,且转换顺序不正确。

2) 提示:二进制转换应持续进行直到被除数为0,而非仅当被除数为奇数时。另外,数组输出顺序需要调整才能得到正确的二进制结果。