C ++代码为每个输入提供相同的输出

时间:2015-01-03 23:10:18

标签: c++

#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)。有人可以解释原因吗?任何建议将不胜感激。

3 个答案:

答案 0 :(得分:1)

只需将while (num >= 0)替换为while (num > 0)

您可能还想在计算temp != 0之前检查num % temp,但这与您当前的问题无关。

答案 1 :(得分:0)

你有一个无限的while循环。 num将始终等于的最低值为0.即使num = 0,您的循环也会继续运行。尝试一些测试用例,插入与参数相同的数字,如2.在C ++中,2/10 = 0,由于整数除法。

答案 2 :(得分:0)

在Windows中,如果应用程序没有调用GetMessage或PeekMessage并处理各种消息或定期使用某些Win32 API(如文件IO API),则会将其标记为无响应。

你在while循环中的数学运算永远不会导致num变得小于0,所以循环永远不会破坏。

更改 while(num&gt; = 0) 至 while(num> 0)