编程从键盘上输入20个整数,求去掉最大值和最小值以后那些元素的平均值 头两个数为1 9和9 1结果会不同??

#include<stdio.h>
int main()
{
int a[20],i,max,min,sum;
float aver;
sum=0;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[19];
for(i=1;i<20;i++)
{ if(max<a[i])
max=a[i];
}
for(i=18;i>=0;i--)
{ if(min>a[i]);
min=a[i];
}
for(i=0;i<20;i++)
{
sum=sum+a[i];
}
aver=(sum-max-min)/18;
printf("%0.2f\n",aver);
return(0);
}

for(i=18;i>=0;i--)
{ if(min>a[i]); //把这里的分号去掉
min=a[i];
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-06
你的aver=(sum-max-min)/18;这句存在问题
虽然aver为float型 然而由于sum max min均为整形,所以在表达式计算时结果已隐式取整
故需改为aver=(1.0)*(sum-max-min)/18;
你可以试一试
第2个回答  2012-01-06
倒霉熊lujin 正解
相似回答