2013-10-28 27 views
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; 
     } 

回答

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;。也许你想提醒用户至少输入一个大于八十的数字?那么你可以试试这个:

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; 
+0

副作用:如果您正确缩进了代码,看到问题会更容易。 –

+0

你也可以使用int数[5];对于(int#数字)std :: cin >> num;'等等,所以你不必硬编码每个地方。 – MSalters

0

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

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