#include
int main()
{
int i;
float a[10],aver,high,low,sum=0;
for(i=0;i {
scanf("%f",&a[i]);
high=a[0];
low=a[0];
if(a[i]>high)
high=a[i];
else if(a[i]<low)
low=a[i];
sum=sum+a[i];
}
aver=(sum-high-low)/8;
printf("aver=%f\n",aver);
printf("sum=%f\n",sum);
printf("high=%f low=%f\n",high,low);
return 0;
}
high=a[0];low=a[0];这个初始化 要放在for的外面,不然每次都是循环都是重新赋一次数组的第一个值,永远都是跟数组里的第一个值比较,还有问问题时要把代码写完整,你的for循环条件都没写清楚。
high=a[0];
low=a[0];
这个初始化 要放在for的外面
Because high and low need to be initialzed to zero outside of loop.
high=a[0];
low=a[0];
初始化的顺序逻辑有问题
出现着这种情况就是自己的代码逻辑判断出现问题,重新整理和调试,一步一步来,逻辑判断很重要,要加强。
问题解答方法上面同僚已做出解答,希望对你有帮助。
你每次循环都执行了一遍low和high的初始化,仔细看看循环就会知道错在哪里啦。