c语言 输入n 再输入n个数 去掉最大数和最小数,求其余n-2个数的平均值,求帮我看一眼该怎么改

#include<stdio.h>
int main()
{
int i,j,n,b=0;
double sum=0;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
for (i=0;i<n-1;i++)
{
for (j=i+1;j<n;j++)
{
if(a[i]>a[j])
b=a[i];
a[i]=a[j];
a[j]=b;
}
}
for(i=1;i<n-1;i++)
{
sum=sum+a[i];
}
printf("%.2lf\n",sum/n-2);
return 0;
}

#include <stdio.h>
#include <stdlib.h>
int main(){
    int i,j,n,b=0;
    double sum=0;
    printf("Enter numbers of integrates: \n");
    scanf("%d",&n);
    //int a[n];   //此处使用动态数组 否则无法通过编译
    int* a;
    a=(int*)calloc(n,sizeof(int));
    for(i=0;i<n;i++){
        printf("No. %d: \n",i+1);
        scanf("%d",&a[i]);
    }
    for (i=0;i<n-1;i++){
        for (j=i;j<n;j++){    //i处开始遍历
            if(a[i]>a[j]){
                b=a[i];
                a[i]=a[j];
                a[j]=b;
            }
        }
    }
    for(i=1;i<n-1;i++){
        sum=sum+a[i];
    }
    printf("%.2lf\n",sum/(n-2));
    free(a);
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-14
1、把int a[n];改为int a[100];,并放到scanf语句前面去;
2、把printf语句中的sum/n-2改为sum/(n-2)。
试一试,有什么问题请留言。
第2个回答  2019-04-14
#include <stdio.h>
int main()
{
    int i, j, n, b = 0;
    double sum = 0;
    scanf("%d", &n);
    int a[n];
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    for (i = 0; i < n - 1; i++)
    {
        for (j = i + 1; j < n; j++)
        {
            if (a[i] > a[j])
            {
                b = a[i];
                a[i] = a[j];
                a[j] = b;
            }
        }
    }
    for (i = 1; i < n - 1; i++)
    {
        sum = sum + a[i];
    }
    printf("%.2lf\n", sum / (n - 2) );
    return 0;
}

本回答被提问者采纳
相似回答