我的自划分检查功能无法正常工作

时间:2019-07-14 22:16:27

标签: c algorithm

我得到了一个数组作为输入,我必须重新构造一个包含所有自除数(并且不包含零)的​​整数的新数组。除了使用一个特定的整数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。

1 个答案:

答案 0 :(得分:2)

    tmp %= 10;

这不起作用,因为您试图将tmp用作单个变量来容纳两件事。 Temp现在包含正在处理的号码的当前数字。放下,tmp /= 10;在等着您,希望所有剩余的数字。

第二个版本之所以有效,是因为它引入了一个新变量dint d = x % 10;来包含当前数字。