在线编译器 C

#include <stdio.h> int main() { int n,m,length=0; int a[1000]; scanf("%d",&n); do{ m=n%2; a[length]=m; length++; n=n/10; } while(n/10!=0); length--; for(int i=0;i<length;i++){ printf("%d",a[i]); } return 0; }
1) 这段代码试图将一个十进制整数按位转换为二进制表示,但存在逻辑错误:它实际上是将输入数字的每一位当作十进制处理(通过除以10取余),而不是转换为二进制(应除以2取余)。

2) 提示1:检查循环中的取模运算和除数,注意二进制转换的数学原理。
提示2:注意循环终止条件,当前代码会漏掉最高位的处理。