2016-11-09 25 views
0
#include <iostream> 

int main() 
{ 
    int number; 
    using namespace std; 

    cout<<"write number between 1 and 10:"<<endl; 
    cin>>number; 

    if (number<=10 && number>=1) 
    cout<<"correct!"<< endl; 
    else 
    do{ 
     cout<<"wrong! new number:"<<endl; 
     cin>>number; 
    } 
    while(number>10 && number<1); 
} 

循環只去一次,並直接結束:(我想,直到條件滿足它無休止地繼續下去。林很新的C++所以任何幫助表示讚賞:)C++簡單while循環,這並不環路

+5

'number> 10 && number <1'這種情況永遠不可能是真的。沒有數字同時大於10且小於1. –

回答

1

你的條件是錯誤的,它應該是or而不是and那裏(||而不是&&在你的情況下)。爲了避免這樣的錯誤並使代碼更清晰,請儘量避免重複代碼,即字面上或邏輯上相同的代碼。在你的代碼從cin輸入兩次,你檢查條件的兩倍,以及:

int number = 0; 
while(true) { 
    cout << "Enter number between 1 and 10:"; 
    cin >> number; 
    if(number >= 1 && number <= 10) 
     break; 
    cout << "invalid number, try again" << endl; 
} 
0

while條件顯然是不正確的。 變量> 10 < 1不存在。 試着把一個||而不是先條件下的& &。

+0

您說得對,我會編輯。 –

0
#include <iostream> int main() { int number; using namespace std; cout<<"write number between 1 and 10:"<<endl; cin>>number; if (number<=10 && number>=1) cout<<"correct!"<< endl; else do{ cout<<"wrong! new number:"<<endl; cin>>number; } while(number<10 && number>1); } 

您的條件不正確,我修復了這個問題。 即使一次也不滿足您的條件 由於在檢查條件之前完成任務。