2015-11-13 87 views
0

我的程序請求兩個變量:一個整數和一個浮點數。兩者必須大於0且小於2000.但測試45和0的輸入時,它接受該值並顯示0.00的輸出,但條件需要(cash > 0) && (balance > 0)錯誤輸出的糾錯

#include <iostream> 
#include <iomanip> 
using namespace std; 
int main() 
{ 
    int cash; 
    float balance ; 
    cin >> cash >> balance; 
    if((cash%5==0) && (cash <= balance) && (cash > 0) && (balance > 0) && (cash <= 2000) && (balance <= 2000)) 
    { 
     balance = (balance - cash) - 0.50; 
     cout << fixed; 
     cout.precision(2); 
     cout << balance; 
    } 
    else if (cash%5 != 0) 
    { 
     cout << fixed; 
     cout.precision(2); 
     cout << balance; 
    } 
    else if (cash > balance) 
    { 
     cout << fixed; 
     cout.precision(2); 
     cout << balance; 
    } 
    return 0; 
} 
+0

您的代碼不會輸入第一個「if」。它進入最後一個,即'else if(cash> balance)'。這是不是滿意? – Default

+0

投票關閉,爲什麼此代碼無法正常工作。請用printfs觀察程序狀態,然後生成一個最小的問題示例。 –

回答

0

條件是在表達(cash <= balance)假的,所以它不會檢查其他條件,並跳轉到else一部分,cash > balance滿足使得它將執行內部cash > balance部位表情。 例如

int a=1,b=2,c=3; 
if((cout<<"first ") && (a==2) && (cout<<" second\n")) 
{ 
    cout<<"condition true\n"; 
} 
else 
{ 
    cout<<"condition false\n"; 
} 

這裏first將打印,並且當a==2表達發生,這是假的,因此將移動到else一部分。