编程从键盘上输入 20 个整数,求去掉最大值和最小值以后那些元素的平均值。我是大一的,求简单易懂的答案

2024-11-08 23:54:33
推荐回答(3个)
回答(1):

首先,循环范围不对,你得带大括号啊,以后一定要记住啊,多写个min=a【j】

然后 if(a[i]>=min&&a[i] {
sum+=a[i];
n++;
count=n;
}
最简单情况如果都这些数都相等怎么办?条件不能设置成if(a[i]>=min&&a[i]你在求最大值和最小值是,在多设置一个记录他们数组位置的变量,maxflag,minflag,这样就知道最大和最小的数组位置
int maxflag=0;minflag=0;
for(j=1;j<20;j++) 你既然赋初值了,从1开始就可以了
{ (大括号很重要)
if(a[j]>max)
{
max=a[j];
maxflag=j;
else
if(a[j]{
min=a[j];
minflag=j;
}
}(大括号很重要)

for(i=0;i<20;i++)
{
if(i!=minflag&&i!maxflag)
sum+=a[i];
}
ave=(double)sum/(a.length-2) 我这里是按去掉一个最大值和一个最小值算得
如果去掉所有最大和最小,就类似于你那种那个,但你写的多加个等号。。

回答(2):

#include
int main()
{ int a[20],i,sum=0,count=0;
int max,min,average;
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] for(i=0;i<20;i++)
{ if(a[i]>min&&aa[i] { sum+=a[i]; count++;}
}
average=sum/count;
printf("count=%d,average=%d",count,average);
}
当然,这个是没有考虑count为零的情况,要是考虑只要加一个if语句就行了,相信你会的。
满意请采纳。

回答(3):

最后一个for循环体中,哪里来的 n ,而且也没有初始化,不妨把 n相关的语句去掉,直接 count++ 记录个数就行了。