猿问

编写程序一个正整数x在二进制下的位数

#include<stdio.h>
int main()
{
int x;
scanf("%d\n",&x);
int a=0;

while(x%2!=0)
{
x=x%2;
a=a+1;  
}
printf("一个正整数x在二进制下的位数:%d\n",a);
return 0;
 
}


各位大神,能不能告诉我这个程序错在哪里


我是好学生666
浏览 1786回答 1
1回答

MinRam

循环体错了。(循环判断和里面的算法都错了)int x = 4 // 假设让x = 4 ,则x的二进制为 100b while(x%2!=0)   // 显然进入不了循环 { x=x%2;          // x经过这次运算  4->0   显然未达到缩减一位二进制位的目的 a=a+1;   }自己尝试改下。如果还是不懂请追问。
随时随地看视频慕课网APP
我要回答