使用while循环在此代码中有问题

时间:2014-01-02 07:19:18

标签: c++

在这里所有代码都是正确的,除了while循环不起作用的事实,if和else条件没问题但是while循环不起作用,请帮忙!

#include<iostream>
using namespace std;
int main()
{
    int interval=0;
    int total;   
    cout<<"Enter a number = ";
    cin>>total;

    while(interval!=-1) {
        if (total % 10 == 0) {
            total=total-10;
            total=total/5;
            cout<<"total= "<< total<<endl;

            cout<<"1st number= "<<total<<endl;
            cout<<"2nd number= "<<total+1<<endl;
            cout<<"3rd number= "<<total+2<<endl;
            cout<<"4th number= "<<total+3<<endl;
            cout<<"5th number= "<<total+4<<endl;    
        } else {
            cout<<"re-enter the number"<<endl;
        }
    }
    return 0;
}

6 个答案:

答案 0 :(得分:2)

此程序将导致无限循环,因为interval值未发生变化

while(interval!=-1) 
{

  // you should change interval value so the loop will end
}

答案 1 :(得分:1)

你永远不会在循环中更改interval,因此它永远不会结束。

答案 2 :(得分:1)

我认为一旦进入其他状态,它就会卡在这里因为你在if条件下接受数字所以它不会有任何机会重新进入if条件,因为如果条件总是为假。

答案 3 :(得分:0)

您将interval设置为0,然后循环直至-1,但您永远不会在循环中更改其值

答案 4 :(得分:0)

我想你想留在while循环直到你得到一个合适的号码。因此,不要使用该变量 interval ,而是执行此操作:

while(1)//Make it infinite loop 
{

if (total % 10 == 0)
{

total=total-10;
total=total/5;
cout<<"total= "<< total<<endl;

cout<<"1st number= "<<total<<endl;
cout<<"2nd number= "<<total+1<<endl;
cout<<"3rd number= "<<total+2<<endl;
cout<<"4th number= "<<total+3<<endl;
cout<<"5th number= "<<total+4<<endl;    
break; //Break out of the loop on receiving the correct number and on performing and printing the calculations
}
else 
{
 cout<<"re-enter the number"<<endl;
}

}

希望这对你有用!!

答案 5 :(得分:0)

编译器会对此进行优化,因为在whileloop内的任何位置都不会更改间隔,并且您没有提及间隔为volatile。 使用一步一步的调试来同意我的观点。 解决方案:更改while循环内的间隔。