为什么我会得到无限循环?

时间:2012-11-04 20:30:31

标签: loops infinite

我的输出反复打印正面或负面。为什么我会得到无限循环?我使用了以下内容:

include iostream 
using namespace std; 

int main()
{
    int num;

    cout<<"enter number"<<endl;
    cin>>num;

    while(num!=0)
    {
        if(num>0)
            cout<<"positive"<<endl;
        else
            cout<<"negative"<<endl;
    }

    return 0;
}

6 个答案:

答案 0 :(得分:1)

因为你有while(num!=0)并且没有任何东西可以改变它在循环中的价值。

答案 1 :(得分:0)

num的值在循环体中不会改变。

答案 2 :(得分:0)

你应该在循环中更改num的值,因为while循环的条件永远不会变为false。

答案 3 :(得分:0)

你也需要在循环中读取值。如果你没有,那么 num 将不会改变并且将永远保持不变,因此你要么得到一个无限循环,要么没有(对于num == 0)

{int num;

cout<<"enter number"<<endl;
cin>>num;

while(num!=0)
{
    cout<<"enter number"<<endl;
    cin>>num;

    if(num>0)
        cout<<"positive"<<endl;
    else
        cout<<"negative"<<endl;
}
return 0; }

答案 4 :(得分:0)

这是因为您的代码的逻辑。首先从标准输入读取一个数字,然后根据数字不等于0的条件构造一个while循环。因此,如果通过标准输入提供的num的值不等于0,则程序将重复循环体一次又一次。

在此代码中,不需要while循环本身。如果只想根据num是正数还是负数向用户打印消息,你可以保留if / else部分并像这样摆脱while循环:

    using namespace std; 
    int main() {

    int num;

    cout<<"enter number"<<endl;
    cin>>num;

    while(num!=0)
    {
        if(num>0)
            cout<<"positive"<<endl;
        else
            cout<<"negative"<<endl;
    }

    return 0; 
}

另一种可能性是用户有机会多次输入num并在某些条件下打破while循环,如下所示:

using namespace std; 
int main() {

int num;

do {
cout<<"enter number"<<endl;
cin>>num;
   if(num>0)
        cout<<"positive"<<endl;
    else if(num < 0)
        cout<<"negative"<<endl;
} while(num!=0);

return 0; 

}

如果num等于0,循环将完成。您还可以根据某些条件使用break语句明确地中断循环。

答案 5 :(得分:0)

基于madflame991的回答这里有一个改进的版本:)

include iostream 
using namespace std; 

int main()
{
    int num;

    do
    {
        cout<<"enter number"<<endl;
        cin>>num;

        if(num>0)
            cout<<"positive"<<endl;
        else
            cout<<"negative"<<endl;
    }while(num!=0);

    return 0;
}