2014-02-27 70 views
-1

代碼正在編譯和所有,但它不能正常工作。第一個if語句正常工作,但是它試圖測試其他函數時它沒有做它應該做的事情。它會將它添加到它正在顯示的值上。請,並提前感謝您的幫助。C++如果其他語句運行不正常

#include <iostream> 

int main() 
{ 

     // b representing Balance, Fee is self-explanitory 
     int b = 0; 
     float fee = 0; 
     std::cout << "Enter the beginning balance of your bank account:" << std::endl; 
     std::cin >> b; 

     if (b < 400) { 
       fee = 25; 
     } 
     else {       
       fee = 10; 
     }  

     // if, else if statements for check fees 
     int c = 0;  
     std::cout << "Enter the amount of checks written this month" << std::endl; 
     std::cin >> c;      
     if (c < 20) { 
       float cf = 0.10; 
       cf *= c; 
       fee += cf; 
       std::cout << "Your bank fees for this month will be: $" 
         << fee << std::endl; 
       return 0;     
     } else if (c = 20 && c <= 39) { 
       float cf = 0.08; 
       cf *= c; 
       fee += cf; 
       std::cout << "Your bank fees for this month will be: $" 
             << fee << std::endl; 
       return 0; 
     } else if (c = 40 && c <= 59) { 
       float cf = 0.06; 
       cf *= c; 
       fee += cf; 
       std::cout << "Your bank fees for this month will be: $" 
         << fee << std::endl; 
       return 0; 
     } else (c >= 60) ;{ 
       float cf = 0.04; 
       cf *= c; 
       fee += cf; 
       std::cout << "Your bank fees for this month will be: $" 
         << fee << std::endl; 
       return 0; 
     } 
} 
+2

請一致縮進。 –

+0

你正在測試的測試用例是什麼,你的預期結果是什麼,你的結果是什麼? – KRUKUSA

+0

測試用例可以是以下輸入:B = 300 C = 25。結果應該是27,但它給出25.08。 –

回答

6
  • 您應該使用==而不是使用=來比較值。一個等號僅用於分配。編輯:實際上,在仔細觀察代碼後,用>=代替單個=來檢查更大或更大的值會更有意義。如果是這種情況,您可以刪除第一次檢查,因爲else if已經確認它是真實的。

  • 這裏的分號是錯誤的:}else (c >= 60) ;{導致代碼不符合你的期望。

+1

他不應該爲平等測試。 –

+0

@KarolyHorvath它不是什麼明顯的OP應該做什麼,但一個等號表明似乎是一個錯誤。實際上,單雙等於符號使第二次檢查無用。 –

+0

不完全,20通過測試;)但它顯然是一個錯誤。 –

-1
c = 20 

c = 40 

應該c == 20c == 40

+0

來這個答案是正確的,絕對不應該downvoted。 –

5

=被賦值。它真的應該從所有else樹枝掉落:

if (c < 20) 
{ 
    //... 
} 
else if (c < 40) 
{ 
    //... 
} 
else if (c < 60) 
{ 
    //... 
} 
else 
{ 
    //... 
} 

另外請注意,你有else (c >= 60)後流浪; - 和失蹤if,對於這個問題,但整個if將是多餘的存在。

0
}else if (c = 20 && c <= 39) { 

此聲明,將C至20,然後檢查是否c是39個或更少。可能你的意思是

}else if (c >= 20 && c <= 39) { 

如果您只想檢查c是否爲20,請使用c == 20