运行此程序时出现浮点异常:
#include <stdio.h>
int check(int n)
{
int ii=0;
int jj=0;
int sum_of_dividors=0;
int sum_of_dividors2=0;
for (ii=0;ii<n;ii++){
for (jj=0;jj<ii;jj++){
if(ii%jj==0)
{
sum_of_dividors=sum_of_dividors+jj;
}
}
if(sum_of_dividors<n || ii<n){
for (jj=0;jj<sum_of_dividors;jj++){
if(sum_of_dividors%jj==0)
{
sum_of_dividors2=sum_of_dividors2+jj;
}
}
if (sum_of_dividors2==ii){
printf("%d and %d,",ii,sum_of_dividors);
}
}
sum_of_dividors=0;
sum_of_dividors2=0;
}
}
int main()
{
int n;
printf("Enter n ");
scanf("%d",&n);
printf("%d",check(n));
}
代码的目的是检查最接近的友好数字对与用户输入的数字(n)。
答案 0 :(得分:1)
答案 1 :(得分:1)
C 6.5.5 [ISO / IEC 9899:2011]声明:
/
运算符的结果是来自除法的除法 第一个操作数由第二个操作数;%
运算符的结果是 剩余。 在两个操作中,如果第二个操作数的值为 零,行为未定义。
因此,以0为模,在C中调用未定义的行为。
答案 2 :(得分:0)
你不能mod % by 0
!它会给出未定义的行为!
答案 3 :(得分:0)
除结果外,您应该申请%
与/
完全相同的限制。因此,在C和C ++中,你可以用0修改。如果你想要一个X%0等于X的行为,你必须专门检查X是否等于0,然后返回它