$
它应该从5个数字打印所有大于80的数字。
但是我写的程序只打印第一个大于80的数字。
如何打印所有大于80的数字?
这是我的代码..
int main ()
{
int num1,num2,num3,num4,num5;
cout << "Enter five marks : ";
cin >> num1 >> num2 >> num3 >> num4 >> num5;
cout << endl;
cout << "Marks are greater than 80 is : ";
{
if (num1 > 80)
cout << num1 << endl;
else if(num2 > 80)
cout << num2 << endl;
else if(num3 > 80)
cout << num3 << endl;
else if(num4 > 80)
cout << num4 << endl;
else if(num5 > 80)
cout << num5 << endl;
else
cout << "error" << endl;
}
答案 0 :(得分:2)
从您的条件中删除else
。
if (num1 > 80)
cout << num1 << endl;
if(num2 > 80)
cout << num2 << endl;
if(num3 > 80)
cout << num3 << endl;
if(num4 > 80)
cout << num4 << endl;
if(num5 > 80)
cout << num5 << endl;
你也可以使用循环,因为你正在做同样的事情:
int num[5];
cout << "Enter five marks : ";
for (int i=0; i<5; i++)
cin >> num[i];
cout << "Marks are greater than 80 is : ";
for (int i=0; i<5; i++)
if (num[i]>80)
cout << num[i] << endl;
我无法理解你的上一次else cout << "error" << endl;
。也许你想警告用户至少输入一个大于80的数字?然后你可以试试这个:
bool flag = false;
for (int i=0; i<5; i++)
if (num[i]>80)
{
cout << num[i] << endl;
flag = true;
}
if (flag)
cout << "Error" << endl;
答案 1 :(得分:0)
将else if
替换为if
。当您使用else if
链时,只会执行其中一个链(第一个匹配)。
答案 2 :(得分:0)
您的逻辑正在使用if
,然后继续使用else if
。这使得您的所有条件彼此独占,这意味着只有一个将会发生。
删除else
部分以使其具有包容性。
if (num1 > 80)
cout << num1 << endl;
if(num2 > 80)
cout << num2 << endl;
// etc.
您可能还想删除else
块,或者创建一个条件来检查所有数字是否为<= 80
,如果是真的则会出错。
if (num1 <= 80 && num2 <= 80 && num3 <= 80 && num4 <= 80 && num5 <= 80) {
cout << "error" << endl;
}