2014-10-07 90 views
2

我一直試圖這麼久,我似乎無法得到這個工作。程序一直參考每個輸入值的第一個條件。有人知道代碼有什麼問題嗎?C++如果其他條件

#include <iostream> 

using namespace std; 

int main() 
{ 
    int grade; 

    cout <<"Enter a grade between 0 and 100:"; 
    cin>>grade; 

    if (0 <= grade <= 59){ 
     cout<<"The grade for " <<grade<<" is F"; 
    } 
    else if (60 <= grade <= 69){ 
     cout<<"The grade for " <<grade<<" is D"; 
    } 
    else if (70 <= grade <= 79){ 
     cout<<"The grade for " <<grade<<" is C"; 
    } 
    else if (80 <= grade <= 89){ 
     cout<<"The grade for " <<grade<<" is B"; 
    } 
    else if (90 <= grade <= 100){ 
     cout<<"The grade for " <<grade<<" is A"; 
    } 
    system("pause"); 
    return 0; 
} 
+0

替代同類每一個在一個旁註,看看[關於系統這個問題(「暫停」)(HTTP://計算器.COM /問題/ 1107705/systempause - 爲什麼 - 是 - 它-錯誤)。 – risingDarkness 2014-10-07 09:15:57

回答

10

重寫衛士

0 <= grade <= 59 

0 <= grade && grade <= 59 

C++解析表達式是這樣的:

(0 <= grade) <= 59 

所以bool值與59比較這就是說,布爾true是1並且第一個if區塊被觸發

+0

謝謝,真的有幫助 – vsingh72 2014-10-07 08:07:10

1

您不能以這種方式編寫0 <= x <= 59。或者說,你可以,但這並不意味着你的想法。

它得到這樣的分析。 0 <= x被評估,並被確定爲真或假。這些布爾值分別由1或0表示。然後對得到的1 <= 590 <= 59進行評估,並將始終視爲真實。

順便說一下,我認爲在開始學習編程時,首先要讓Java成爲一門良好的語言。這是強類型,這大致意味着像這樣的事情會產生編譯時錯誤,而不是做你並不真正的意思。

1

你在做錯檢查範圍條件。 測量範圍的正確方法是使用&&操作符。

做這樣的事情:

if (grade>=0 && grade <= 59) // it means grade is greater or equal to 0 and grade is lesser or equal to 59 

如果條件