c程序中的浮点异常
我在下面的代码中遇到浮点异常c程序中的浮点异常,c,C,我在下面的代码中遇到浮点异常 int heavy_decimal_count ( int A, int B ) { char * markup = "Heavy"; int i , value; int tempA = A; int tempB = B; int reminder = 0; int sum = 0; float average = 0.00; int counter = 0;
int heavy_decimal_count ( int A, int B )
{
char * markup = "Heavy";
int i , value;
int tempA = A;
int tempB = B;
int reminder = 0;
int sum = 0;
float average = 0.00;
int counter = 0;
if( (tempA < 0) || ( tempB <0 )||( B < A ) )
{
printf(" Error -> Numbers are negative or B is less than A");
return 0;
}
for ( i = A ; i <= B ; i++)
{
value = i;
while( value > 0 )
{
printf(" the value is %d ", value );
counter += counter;
reminder = value % 10;
value /= 10;
sum += reminder;
average = sum/counter ;
}
if( average > 7.0 )
printf(" %d \t avg= %f\t %s\t" ,i , average , markup);
else
printf(" %d \t avg=%f\t " ,i , average );
}
return 0;
}
整数重小数计数(整数A、整数B)
{
char*markup=“重”;
int i,值;
int-tempA=A;
int tempB=B;
int=0;
整数和=0;
浮动平均值=0.00;
int计数器=0;
如果((tempA<0)| |(tempB 7.0)
printf(“%d\t平均值=%f\t%s\t”,i,平均值,标记);
其他的
printf(“%d\t平均值=%f\t”,i,平均值);
}
返回0;
}
看起来您在下一行中被零除
平均值=总和/计数器
计数器最初定义为零
int计数器=0
并在这里更新
计数器+=计数器;//计数器保持为零
你的意思是将计数器改为1吗
计数器+=1
尽管名称不同,当您使用/
或%
以0
为整数时,实际上会发生“浮点异常”。我猜它发生在这里:
average = sum/counter ;
因为计数器
仍然是0
。我想你是说
counter += counter;
将来
此外,您可能希望将分区更改为
average = (float)sum/counter ;
因此,它可以作为一个分数值而不是整数发生。使用调试器,至少找出它发生的位置。
average = (float)sum/counter ;