C++ 去掉最大最小值求平均值球查错指导

这是我写的
#include<stdio.h>
#include<stdlib.h>
main()
{
int num[10],max,min,score;
scanf("%d%d%d%d%d%d%d%d%d%d",num[1],num[2],num[0],num[3],num[4],num[5],num[6],num[7],num[8],num[9]);
max=num[0];
min=num[0];
int i;
for(i=0;i<10;i++)
{if(max<num[i])
max=num[i];
else if(min>num[i])
min=num[i];
}
score=(num[0]+num[1]+num[2]+num[3]+num[4]+num[5]+num[6]+num[7]+num[8]+num[9]-max-min)/8;
printf("%d\n%d\n%d\n",max,min,score);
return 0;
}

scanf里面num[]前面缺少&,再帮你优化一下程序,如下

#include <stdio.h>

void main()
{
    int num[10], max, min, score = 0, i;
    for (i = 0; i < 10; i++)
    {
        scanf("%d", a[i]);
        score += a[i];
        if (!i)
            min = max = a[i];
        else
        {
            if (a[i] > max)
                max = a[i];
            else if (a[i] < min)
                min = a[i];
        }
    }
    printf("%d,%d,%d\n", max, min, (score - min - max) / 8);
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-17

/*

数据个数 : 10
输入10个数(空格隔开):
98 99 87 90 100 89 100 96 89 70
平均分是 : 93.50
Press any key to continue

*/

#include <stdio.h>
int main() {
 int i,n,num[100],max,min;
 double sum = 0.0;
 printf("数据个数 : ");
 scanf("%d",&n);
 printf("输入%d个数(空格隔开):\n",n);
 for(i = 0;i < n;i++) {
  scanf("%d",&num[i]);
  sum += num[i];
 }
 max = min = num[0];
 for(i = 1; i < n; ++i) {
  if(num[i] > max) max = num[i];
  if(num[i] < min) min = num[i];
 }
 if(n > 0) printf("平均分是 : %.2lf\n",(sum - max - min)/(n - 2.0));
 return 0;
}

第2个回答  2013-10-17
没怎么看,只知道num0 未定义。。
第3个回答  2013-10-17
scanf("%d%d%d%d%d%d%d%d%d%d",&num[1],&num[2],&num[0],&num[3],&num[4],&num[5],&num[6],&num[7],&num[8],&num[9]); 前面要加&
相似回答