2012-11-04 50 views
0

我的輸出重複打印正面或負面。爲什麼我會陷入無限循環?我用下面的:爲什麼我得到一個無限循環?

include iostream 
using namespace std; 

int main() 
{ 
    int num; 

    cout<<"enter number"<<endl; 
    cin>>num; 

    while(num!=0) 
    { 
     if(num>0) 
      cout<<"positive"<<endl; 
     else 
      cout<<"negative"<<endl; 
    } 

    return 0; 
} 

回答

0

基於madflame991的answere在這裏是一個改進版本:)

include iostream 
using namespace std; 

int main() 
{ 
    int num; 

    do 
    { 
     cout<<"enter number"<<endl; 
     cin>>num; 

     if(num>0) 
      cout<<"positive"<<endl; 
     else 
      cout<<"negative"<<endl; 
    }while(num!=0); 

    return 0; 
} 
1

因爲你有while(num!=0)並沒有什麼可以改變其在循環值。

0

num的值在循環體中不會改變。

0

您應該在循環內更改num的值,因爲while循環的條件永遠不會變爲false。

0

您還需要在循環中讀取值。如果你不那麼NUM不會改變,永遠保持不變,因此你要麼得到一個無限循環或沒有(爲NUM == 0)

{int num; 

cout<<"enter number"<<endl; 
cin>>num; 

while(num!=0) 
{ 
    cout<<"enter number"<<endl; 
    cin>>num; 

    if(num>0) 
     cout<<"positive"<<endl; 
    else 
     cout<<"negative"<<endl; 
} 
return 0; } 
0

這是因爲邏輯你的代碼。您首先從標準輸入中讀取一個數字,然後根據數字不等於0的條件構造一個while循環。因此,如果通過標準輸入提供的num值不等於0,那麼程序將重複循環的主體一次又一次。

在這段代碼中,while循環本身是不需要的。如果只想基礎上,NUM是正/負打印一條消息給用戶,你可能只是離開的if/else部分和擺脫while循環是這樣的:

using namespace std; 
    int main() { 

    int num; 

    cout<<"enter number"<<endl; 
    cin>>num; 

    while(num!=0) 
    { 
     if(num>0) 
      cout<<"positive"<<endl; 
     else 
      cout<<"negative"<<endl; 
    } 

    return 0; 
} 

另一種可能將是用戶機會進入NUM多次,打破這樣就一定條件下while循環:

using namespace std; 
int main() { 

int num; 

do { 
cout<<"enter number"<<endl; 
cin>>num; 
    if(num>0) 
     cout<<"positive"<<endl; 
    else if(num < 0) 
     cout<<"negative"<<endl; 
} while(num!=0); 

return 0; 

}

在此,循環將結束,如果NUM等於0。你也可以明確地擺脫與break狀態的循環基於某些條件的改進。

相關問題