我刚刚开始学习C并尝试创建一个代码来查找5位数字,如果它乘以4则会产生5位数字的反转。这是我的代码:
#include <stdio.h>
int main(void){
int i, result, modulo, div1, div2;
modulo = 10;
for (i = 12345; i < 99999; i++){
result = i*4;
div1 = 10000;
div2 = 1;
while ((i/div1)%modulo == (result/div2)%modulo){
div1 /= 10;
div2 *= 10;
if (div2 == 100000){
printf("%d", i);
}
}
}
}
我得到了
浮点异常
我认为问题出现在while语句中,但我不知道原因是什么。任何人都可以解释我的错误是什么?非常感谢。
答案 0 :(得分:2)
原因是你在div1 / = 10的行中除以0。你看,div1是一个整数,所以每次除以10,它就会变小,经过多次迭代后,几千个它们,得到0.除以0会导致问题。 在代码周围放一些来检查它是否为0,看看如果它是什么你会做什么。