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