编程从键盘上输入 20 个整数,求去掉最大值和最小值以后那些元素的平均值。

2024-11-08 23:41:42
推荐回答(4个)
回答(1):

下面是改过的,你自己看吧。就几行代码,错得却不少。
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] min=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);//这里改了
}

回答(2):

#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;
}

回答(3):

#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] min=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);
}

回答(4):

好多错
20个数,for(i=0;i<=20;i++)21个,越界

for(i=1;i<=20,;i++) 一样

if(i!=j||i!=k) 应该if(i!=j && |i!=k)