C程序在运行时崩溃
问题陈述是: 当数字为64253乘以365时,乘积为2345235。请注意 前四位数字与后四位数字(2345和2345)相同。编写一个将 查找可以乘以365以生成八位数乘积的任意整数,其中 前四位数字与后四位数字相同。 在上面的示例中,没有重复任何数字,但在您的程序中,产品可能有 重复例如,44884488。(提示:使用mod) 我写的代码是:C程序在运行时崩溃,c,C,问题陈述是: 当数字为64253乘以365时,乘积为2345235。请注意 前四位数字与后四位数字(2345和2345)相同。编写一个将 查找可以乘以365以生成八位数乘积的任意整数,其中 前四位数字与后四位数字相同。 在上面的示例中,没有重复任何数字,但在您的程序中,产品可能有 重复例如,44884488。(提示:使用mod) 我写的代码是: #include <stdio.h> #include <stdlib.h> int main() { int a=1000
#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)。我看不到任何明显的内容。您需要在调试器下运行此操作。另外,请澄清“崩溃”。是否打印了任何消息?请在命令提示符下运行此操作并剪切/粘贴输出