我得到一个数组作为输入,我必须重建一个新数组,其中包含所有自除整数(并且不包含数字零)。除了一个特定的整数 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。
最佳答案
tmp %= 10;
这不起作用,因为您正试图将 tmp
用作单个变量来保存两件事。 Temp 现在包含正在处理的号码的当前数字。向下,tmp/= 10;
正在等你,需要所有剩余的数字。
第二个版本之所以有效,是因为它引入了一个新变量 d
和 int d = x % 10;
来包含当前数字。
关于c - 我的自分检查功能没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57031547/