C语言中出现Floating point error错误

#include <stdio.h>
#include <string.h>
void main()
{
extern float aver();
float ave,a[10],max,min;
int i;
for(i=0;i<10;i++) scanf("%f",&a[i]);
ave=aver(a,10);
printf("max=%6.2f\nmin=%6.2f\n",max,min);
printf("average=%6.2f\n",ave);
}
float aver(b,n)
float b[];
int n;
{
int i;
float max,min,sum;
for(i=0;i<n;i++){
if(b[i]>max) max=b[i];
else if(b[i]<min) min=b[i];
sum=sum+b[i];
}
return (sum/n);
}
运行程序后输入
1 回车 2 回车 3 回车。。。。10 回车
然后OUTPUT中显示Floating point error:Domain.
Abnormal program termination
编译器用的是TURBO 3.0(没办法,老师要求用这个。。。)
在百度上看了很久,但就是不知道自己的程序错在哪,求高人解答下~
感谢1L的解答,但是我发现将1L的程序再次运行到TURBO C上时,发现运行结果为:
max= -0.00
min= 0.00
average= -NAN
还有就是想问下,这个程序可不可以不用指针就做出来=。=

//---------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
void main()
{
extern float aver();
float ave,a[10],max,min;
int i;
for(i=0;i<10;i++) scanf("%f",&a[i]);
ave=aver(a,10,&max,&min);
printf("max=%6.2f\nmin=%6.2f\n",max,min);
printf("average=%6.2f\n",ave);
}
float aver(b,n,max,min)
float b[];
int n;
float *max;
float *min;
{
int i;
float sum;
*max=*min=b[0];
for(i=0;i<n;i++){
if(b[i]>*max) *max=b[i];
else if(b[i]<*min) *min=b[i];
sum=sum+b[i];
}
return (sum/n);
}
//---------------------------------------------------------------------------
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答