C程序在运行时崩溃

C程序在运行时崩溃,c,C,问题陈述是: 当数字为64253乘以365时,乘积为2345235。请注意 前四位数字与后四位数字(2345和2345)相同。编写一个将 查找可以乘以365以生成八位数乘积的任意整数,其中 前四位数字与后四位数字相同。 在上面的示例中,没有重复任何数字,但在您的程序中,产品可能有 重复例如,44884488。(提示:使用mod) 我写的代码是: #include <stdio.h> #include <stdlib.h> int main() { int a=1000

问题陈述是:

当数字为64253乘以365时,乘积为2345235。请注意 前四位数字与后四位数字(2345和2345)相同。编写一个将 查找可以乘以365以生成八位数乘积的任意整数,其中 前四位数字与后四位数字相同。 在上面的示例中,没有重复任何数字,但在您的程序中,产品可能有 重复例如,44884488。(提示:使用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;
}
#包括
#包括
int main()
{
int a=10000,b,c;
// 64253

(a当
c
为零时,您尝试除以零。

(10000*365)%10000
为0

所以你要除法:
b/0
,这会导致浮点异常


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

如其他人所述,当
a
是10000的倍数时,您将在后面除以0。 无论如何,这对你来说可能并不重要,但你可以把支票放在下面:

if(b/10000000<0 || b/10000000>9)continue;
如果(b/10000009)继续;

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

它在哪里崩溃,错误消息是什么?我看不出它崩溃的原因(如果int为32位,则不会溢出),但我怀疑您是否会得到正确的结果。它说进程返回255(0XFF)。我看不到任何明显的内容。您需要在调试器下运行此操作。另外,请澄清“崩溃”。是否打印了任何消息?请在命令提示符下运行此操作并剪切/粘贴输出