C++ cpp和C中的非法除零异常
下面是一个简单的程序,它计算精确除以给定数字的各个数字的个数C++ cpp和C中的非法除零异常,c++,c,C++,C,下面是一个简单的程序,它计算精确除以给定数字的各个数字的个数 #include<stdio.h> int main() { long long t, val, temp, count = 0, val1; scanf("%lld", &t); while (t--) { count = 0; scanf("%lld", &val); val1=val; while(val
#include<stdio.h>
int main()
{
long long t, val, temp, count = 0, val1;
scanf("%lld", &t);
while (t--)
{
count = 0;
scanf("%lld", &val);
val1=val;
while(val1 != 0)
{
temp = val1 % 10;
val1 = val1 / 10.0 ;
if (val % temp == 0)
{
count++;
}
}
printf("%lld", count);
}
}
这意味着测试用例的数量为1,值为300。
但这里我用常数10除以它,为什么会抛出那个异常呢。那我现在该怎么处理呢?
*我甚至尝试过cpp,也遇到了同样的问题
val%temp
如果
temp
是0
(在您的程序中似乎是这样),则您正在调用未定义的行为。提示:使用调试器确认是哪一行导致了错误。此-val%temp
-也是一个除法。然后除以temp
,很容易为零。@πάνταῥεῖ: 这和这个问题有什么关系?
val%temp