2014-10-06 102 views
0

我想編寫一個程序,要求用戶0和1000000之間,輸入數字和它輸出一定數量的發生(即用戶輸入的爲好)while循環表達

我寫的這個程序,我相信它運作良好,但我有一個問題,如果while表達式不是真的,我想知道某個消息,但我不知道該把它放在哪裏。

這是我的計劃:

#include <iostream> 
using namespace std; 
int main() 
{ 
int n,j=0,key; 
cout << "Pleaser enter digits\n"; 
cin >> n; 
cout << "please enter key number\n"; 
cin >> key; 

while (n>0 && n<1000000) 
{ 
    if(n%10==key)j++; 
     n= n/10; 
} 

cout << "The number " << key << " was found " << j << " time(s)" << endl; 
return 0; 
} 

提前感謝!如果語句之前while循環

+0

你可以只換while循環在''if'條件else'塊,所以如果'(N <=0 || n > = 1000000)COUT << 「參數無效」; else {while ...}' – EdChum 2014-10-06 11:18:46

+0

如果while條件不成立,你**就會執行一個特定的消息。你的意思是「如果表情不是真的*第一次*」? – TobiMcNamobi 2014-10-06 11:18:47

+0

@TobiMcNamobi是的,他的意思是當用戶輸入n的值不在範圍內(0,1000000) – 2014-10-06 11:26:37

回答

2

使用

if(n>0 && n<1000000) 
{ 
    while(n) 
    { 
     if(n%10==key) 
     j++; 
     n= n/10; 
    } 
} 
else 
cout<<"n is supposed to be between 0 and 1000000"; 
0

撰寫。

 if(!(n>0 && n<1000000)) 
     { 
      cout << "...."; 
      return -1; 
     } 

     while(..) 
0

由於bucle內沒有中斷(或沒有其他代碼可以跳轉),所以while結構之後的所有內容都會被執行,因爲表達式返回false。

while (n>0 && n<1000000) 
{ 
    if(n%10==key)j++; 
    n= n/10; 
} 
cout << "While expression not anymore true" << endl; 
cout << "The number " << key << " was found " << j << " time(s)" << endl; 
return 0; 
} 

UPDATE

基礎上的評論,似乎要檢查,如果輸入的號碼是否有效。簡單地說,只是在一段時間之前,檢查一下:

if(not (n>0 and n<1000000)) cout << "Number must be between 0 and 1000000" << endl; 
else { 
    while (n) 
    { 
     if(n%10==key)j++; 
     n= n/10; 
    } 
} 
cout << "The number " << key << " was found " << j << " time(s)" << endl; 
return 0; 
}