在达到1

时间:2015-10-05 17:12:58

标签: c++

我试图编写代码来计算整数在达到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;
}     

1 个答案:

答案 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; 
 }