2015-01-03 107 views
-3
#include <iostream> 
using namespace std; 
int FindDigits(int num); 
int main() 
{ 
    int test; 
    cin >> test; 
    FindDigits(test); 
    return 0; 
} 
int FindDigits(int num) 
{ 
    int n = num; 
    int digit, count; 
    while (num > 0) 
    { 
      digit = num % 10; 
      if (digit == 1) {count++;} 
      else if (digit>0 && num%digit == 0) 
      { 
       count++; 
      } 
      num/=10; 
     } 
    cout << count; 
    return 0; 
} 

此代碼總是給出相同的輸出(16.58),無論輸入是什麼。有人能解釋爲什麼嗎?任何建議,將不勝感激。C++代碼爲每個輸入提供相同的輸出

+7

使用調試器,盧克! –

+1

你可能在某個時刻調製0,這與除以0一樣糟糕。 – BWG

+0

另外,我不確定在輸入是正整數的情況下,while條件是否會退出。但是,是的,請使用調試器;-) – Luca

回答

1

只需將while (num >= 0)替換爲while (num > 0)即可。

您可能還想在計算num % temp之前檢查temp != 0,但這與您當前的問題無關。

+0

非常感謝你! –

+0

但問題是這段代碼總是打印相同的東西。不管輸入是什麼 –

+0

當前可變計數是統一的。嘗試初始化爲零。正如'int digit,count = 0;' – Ishamael

0

你得到了無限的while循環。 num將永遠等於的最低值爲0.即使在num = 0時,您的循環仍會繼續運行。嘗試一些測試用例,插入與參數相同的數字,如2.在C++中,由於整數除法,2/10 = 0。

+0

但爲什麼它總是打印相同的值?無論輸入什麼內容... –

0

在Windows中,如果應用程序不調用的GetMessage或的PeekMessage和過程的各種消息或使用某些的Win32 API諸如文件IO的API定期它將被標記爲沒有響應。

你在while循環中的數學不會導致num變成小於0,所以循環永遠不會中斷。

變化 而(NUM> = 0) 要 而(NUM> 0)

相關問題