打印更大数字的程序

时间:2013-10-28 15:38:35

标签: c++

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

3 个答案:

答案 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;
}