我的输出反复打印正面或负面。为什么我会得到无限循环?我使用了以下内容:
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;
}
答案 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;
}