c - 我的自分检查功能没有按预期工作

标签 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。

最佳答案

    tmp %= 10;

这不起作用,因为您正试图将 tmp 用作单个变量来保存两件事。 Temp 现在包含正在处理的号码的当前数字。向下,tmp/= 10; 正在等你,需要所有剩余的数字。

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

关于c - 我的自分检查功能没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57031547/

相关文章:

c - 在进行函数调用之前强制函数恢复所有寄存器

algorithm - 如何降低时间复杂度

java - 添加到双向链表的末尾

ios - 我应该使用什么空间索引算法?

algorithm - 这些循环 1 和 2 的时间复杂度是多少

c - "blocking system call"是什么意思?

c - C中指针(*)的不同用法

c - C 中的位移位无符号长整型

c - 在 vim 中为 gtk+-2.0 设置 clang_complete

实时模拟二维容器中某些液体的算法