求助,高手来看看我的C程序哪里错了

来源:百度知道 编辑:UC知道 时间:2024/07/07 21:27:05
题目是:采样16组数据,然后求和,去最大最小值,再对剩下的14数据求平均
#define N 16
main()
{
float MIN,MAX,SUM,X[N],
MAX=MIN=SUN=X[N];
char filter( )
{
char X[N];
for (N>0;N--)
{
X[N]=get_ad( ); //获取采样值
SUM=SUM+X[N];
delay( );
}
if(X[N-1]>=MAX) //最大替换
MAX=X[N-1];N=N-1;
else{ //最小替换
if(X[N-1]<=MIN)
MIN=X[N-1];
else N=N-1;
}
if(N=0) //去掉最大值和最小值
{
SUM=SUM-MAX;
SUM=SUM-MIN;
}
RESULT=SUM/(N-2);
}
return;
}

你在寻找最大值与最小值的时候并没有遍历完16组数据,应在IF语句外围再加上While(N<-1)语句来控制遍历所有数据。为什么是N<-1,因为当N=0的时候是X[0],这个时候是有数据的。从而得知你下面去掉最大数值与最小数值的判断条件N=0是错误,在进行完While操作后直接运行Sum=Sum-Max,Sum=Sum-Min就可以了。
C语言中,数组下标是从0开始的,直到N-1,共N个数据元素。