我试图编写代码来计算整数在达到1之前可以除以2的次数。 当我运行我的代码时,它会提示我输入一个数字,因为您将在下面的代码中看到,但是一旦我这样做,没有任何反应,只显示一个空白行。有谁知道我做错了什么?
#include<iostream>
Using namespace std;
int main()
{
float x,i=0,num=0;
cout<<"please enter num:";
cin>>x;
while(x>0)
{
if(x/2>1)
num+=i;
i++;
}
cout<<"Number of times "<<x<<"is divisible by 2 is:"<<num<<endl;
return 0;
}
答案 0 :(得分:1)
有两个问题:
1)你永远不会更新x,所以你需要长时间迭代。
2)x / 2> 1即使x不能被2整除。考虑使用模数进行测试
例如:
...
while(x>1 && fmod(x,2)==0) // sorry % is for integers only
{
num++;
x /= 2;
}