0

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

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;
}
4

6 回答 6

1

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

于 2012-11-04T20:32:12.823 回答
0

的值num在循环体中没有改变。

于 2012-11-04T20:33:27.047 回答
0

您应该更改num循环内部的值,因为 while 循环的条件永远不会变为假。

于 2012-11-04T20:33:37.213 回答
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; }
于 2012-11-04T20:35:05.930 回答
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;
}
于 2012-11-04T20:47:26.493 回答
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根据某些条件显式地退出循环。

于 2012-11-04T20:44:42.163 回答