c++中如何编一个程序,输入n个数,去掉最大最小数,求剩下数的平均值

如题所述

#include <stdio.h>

int main(void)
{
int i,n;
float num, max,min,sum=0.0;

printf("how many numbers? ");
scanf("%d", &n);

printf("now give %d numbers: \n", n);
for(i=1;i<=n;i++) {
scanf("%f", &num);
sum+=num;

if(i==1)
max=min=num;
else {
if(num - max > 0)
max=num;
if(num - min < 0)
min=num;
}
}

printf("max %f min %f average %f\n", max, min, (sum-max-min)/(n-2));
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-23
这是一个很简单的算法问题:
首先输入的N个数可以使用一个一维数组接收
然后对这个一维数组的内容进行一个排序(冒泡、插入等排序方法)
去掉开头和结尾的内容
最后讲数组中的内容加起来求平均值
多自己动手写代码才是学习一种语言最快最直接的方法!本回答被提问者采纳
第2个回答  2011-11-23
这一段程序可以是(上下文的定义等请自己安排,i、n是整数,其余都是double):

scanf("%lf",&x); max=min=s=x;
for (i=1;i<n;i++)
{
scanf("%lf",&x);
s+=x;
if(x>max) max=x;
if(min<x) min=x;
}
printf("%lf\n",(s-max-min)/(n-2));追问

那个,最大值最小值的头文件是什么,我还没学

追答

不需要“最大值最小值的头文件”,只要最基本的输入输出所用的头文件stdio.h。全文可以如下:
#include
int main()
{
int i,n;
double x, max,min,s;
scanf("%d", &n);
…………(插入上面那一段)…………
}

追问

你qq多少,我直接问你

追答

我没有QQ。
【补充勘误】上面的程序有笔误:
if(min<x) min=x;
应该为
if(x<min) min=x;

相似回答