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

说明:( 1 ) scanf 之前无需用 printf 给提示信息。(求大神帮忙找一下错误错在哪?)
#include<stdio.h>
int main()
{
int a[20],i,j,k,n=0,sum,max,min;
double ave;
for(i=0;i<=20;i++)
scanf("%d",&a[i]);

max=min=a[0];
for(i=1;i<=20,;i++)
{ if(a[i]>max)
max=a[i];
j=i;
else(a[i<min]);
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("count=%d,average=%f",n,ave);
return 0;
}
输出要求是这样的

下面是改过的,你自己看吧。就几行代码,错得却不少。
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){//这里改了.
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);//这里改了
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-12-06
#include<stdio.h>
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);
{
   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;
}

第2个回答  2013-12-06
#include<stdio.h>
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);
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);
}
第3个回答  2013-12-06
好多错
20个数,for(i=0;i<=20;i++)21个,越界

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

if(i!=j||i!=k) 应该if(i!=j && |i!=k)
相似回答