1

$它应该从 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;
         }
4

3 回答 3

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;
于 2013-10-28T15:39:47.660 回答
0

替换else ifif. 当您使用else if链时,只会执行其中一个(匹配的第一个)。

于 2013-10-28T15:40:32.583 回答
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;
}
于 2013-10-28T15:40:32.773 回答