我很难弄清楚我的代码有什么问题。这是我的代码,当我运行它时,它会重新显示相同的单词,即使我输入了不同的数字。请帮助我,非常感谢。
int main()
{
const int size = 4;
double arr[size];
int i;
cout << "Input numbers: ";
for(i=0;i<4;i++)
{
cin >> arr[i];
}
for(i=0;i<size;i++)
{
if(0<=arr[i]<=5)
{
cout << "HEY" << endl;
}
else if(0>arr[i])
{
cout << "Hello" << endl;
}
else if(10<arr[i]<20)
{
cout << "Haha" << endl;
}
else
{
cout << "Hoho";
}
}
cin.ignore(); cin.ignore();
return 0;
}
答案 0 :(得分:1)
此if(0<=arr[i]<=5)
应写为:
if( arr[i] >= 0 && arr[i] <= 5 )
此else if(10<arr[i]<20)
为
else if( 10 < arr[i] && arr[i] < 20 )
如果您需要逻辑anding
条件,即您希望两个条件都为真,则应使用&&
运算符。如果第一次测试失败,则不需要评估其他测试:
从上面给出的msdn链接:
条件AND运算符(&amp;&amp;)执行其bool操作数的逻辑AND,但只在必要时才计算其第二个操作数。
答案 1 :(得分:0)
不仅是错误的范围(正如其他人指出的那样)。与
else if(0>arr[i])
{
cout << "Hello" << endl;
}
else if(10<arr[i]<20)
{
cout << "Haha" << endl;
}
else
{
cout << "Hoho";
}
只有第一个else if
(&#34; Hello&#34;)才会执行正arr [i]。它捕获大于5的所有数字。