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