C程序在运行时崩溃

时间:2016-07-14 16:32:22

标签: c

问题陈述是:

当数字为64,253乘以365时,乘积为23,452,345。请注意 前四位数字与后四位数字(2345和2345)相同。写一个会的程序 找到任何和所有可以乘以365的整数来生成一个八位数的产品 前四位数字与后四位数字相同。 在上面的示例中,没有重复数字,但在您的程序中,产品可以具有 重复。例如,44,884,488。 (提示:使用mod)

我写的代码是:

#include <stdio.h>
#include <stdlib.h>

int main()
{

int a=10000, b,c;
// 64253
while(a<100000){

    b = a*365;
    c = (a*365)%10000;

    if(c == 0 || b %1000 == c)
        continue;

    if(b/c == 10001 ){
        printf("%d \n",a);
    }

    ++a;
}


return 0;
}

我不知道它崩溃的原因。你们朋友可以帮忙吗?

3 个答案:

答案 0 :(得分:6)

(10000*365) % 10000为0。

所以你要划分:b/0会导致浮点异常。

编辑:请注意,此答案在OP编辑之前,在示例代码中引入c == 0检查之前。

答案 1 :(得分:3)

c为零时,您尝试除以零。

答案 2 :(得分:1)

正如其他人所说,当a是10000的倍数时,之后除以0。 无论如何,这对你来说可能并不重要,但你可以像下面这样检查:

if(b/10000000<0 || b/10000000>9)continue;

优化代码。 (这样就可以消除所有非8位数字。)