我得到了一个数组作为输入,我必须重新构造一个包含所有自除数(并且不包含零)的整数的新数组。除了使用一个特定的整数21之外,它都能正常工作。
这是一个编码问题。我尝试过的效果很好。
int IsSelfDividing(int number)
{
int tmp = number;
while (tmp > 0)
{
tmp %= 10;
if(tmp == 0 || (number % tmp) > 0)
return 0;
tmp /= 10;
}
return 1;
//This approach works, but I don't understand why
/*
int x = number;
while (x > 0) {
int d = x % 10;
x /= 10;
if (d == 0 || (number % d) > 0) return 0;
}
return 1;
*/
}
当我输入“ 21”作为函数IsSelfDividing的参数时,我期望输出为0。
答案 0 :(得分:2)
tmp %= 10;
这不起作用,因为您试图将tmp
用作单个变量来容纳两件事。 Temp现在包含正在处理的号码的当前数字。放下,tmp /= 10;
在等着您,希望所有剩余的数字。
第二个版本之所以有效,是因为它引入了一个新变量d
和int d = x % 10;
来包含当前数字。