下面是改过的,你自己看吧。就几行代码,错得却不少。
void main(void){
int a[20],i,j,k,n=0,sum=0,max,min;//这里改了.
double ave;
for(i=0;i<20;i++)//这里改了.
scanf("%d",&a[i]);
max=min=a[0];
for(i=0;i<20;i++){//这里改了.
if(a[i]>max){//这里改了.
max=a[i];
j=i;
}//这里改了.
else if(a[i]
k=i;
}//这里改了.
}
for(i=0;i<20;i++){
if(i!=j&&i!=k){//这里改了.
sum=sum+a[i];
n++;
} //这里改了.
}
ave=sum/(n+0.0);//这里改了.
printf("count=%d,average=%f\n",n,ave);//这里改了
}
#include
int main()
{
int a[20],i,j,k,n=0,max,min;
double sum, ave;
for(i=0;i<20;++i)
scanf("%d",&a[i]);
max=min=a[0];
for(i=0;i<20;i++)
{ if(a[i]>max)
{
max=a[i];
j=i;
}
else if(a[i]{
min=a[i];
k=i;
}
}
for(i=0;i<20;i++)
{ if(i!=j&&i!=k)
sum=sum+a[i];
++n;
}
ave=sum/n;
printf("average=%f",ave);
return 0;
}
#include
void main()
{
int a[20],i,max,min;
double sum, ave;
for(i=0;i<20;i++)
scanf("%d",&a[i]);
max=min=a[0];
for(i=0;i<20;i++)
{
if(a[i]>max)
max=a[i];%只须知道最大值,不必记录位置
if(a[i]
}
sum=0-min-max;%提前从和中减去最大最小值
for(i=0;i<20;i++)
sum=sum+a[i];
ave=sum/(n-2);%均个数中减去最大最小值2个
printf("average=%f",ave);
}
好多错
20个数,for(i=0;i<=20;i++)21个,越界
for(i=1;i<=20,;i++) 一样
if(i!=j||i!=k) 应该if(i!=j && |i!=k)