首页 新闻 搜索 专区 学院

c#的问题,只有一点头绪但是不知道怎么写代码

0
悬赏园豆:10 [已解决问题] 解决于 2016-08-02 13:52

  问题:  7个裁判打分,存储如下数组int[a]={7,9,6,8,8,7,8},去掉一个最高分和一个最低分,然后求出平均成绩。

      自己写的一点代码,后面的不知道怎么写:

 

int[] a = { 7,9,6,8,8,7,8};
Array.Sort(a );

c#
薯条哥哥的主页 薯条哥哥 | 初学一级 | 园豆:100
提问于:2015-11-28 15:47
< >
分享
最佳答案
3
int[] a = { 7, 9, 6, 8, 8, 7, 8 };
var max = a.Max();  //获取最大值
var min = a.Min();  //获取最小值
var a2 = a.ToList();  //把数组转成List<> 方便移除
a2.Remove(max);  //去掉1个最大值
a2.Remove(min);  //去掉1个最小值
var all = (decimal)a2.Aggregate((x, y) => x + y);  //得到剩下数的和并转为decimal类型  如果你的计算结果不需要小数  可以不转
var avg = all/a2.Count;  //和 除以 数量
Console.WriteLine("max:{0} min:{1} avg:{2}", max, min, avg);
收获园豆:10
jio92 | 小虾三级 |园豆:1064 | 2015-11-28 16:24
//也可以按照你的思路, 先排序
int[] a = { 7, 9, 6, 8, 8, 7, 8 };
Array.Sort(a);  //排序
var a2 = a.ToList();  //转为List<> 方便移除
a2.RemoveAt(0);  //移除集合中第一个元素(最小值)
a2.RemoveAt(a2.Count-1);  //移除集合中最后一个元素(最大值)

var all = (decimal)a2.Aggregate((x, y) => x + y);  
var avg = all/a2.Count;
Console.WriteLine(avg);
jio92 | 园豆:1064 (小虾三级) | 2015-11-28 16:29
其他回答(2)
-2

double average = 0;
int sum = 0;
for (int i = 1; i < a.Length - 1; ++i)
{
     sum += a[i];
}
average = (double)sum / (a.Length - 2);
Console.WriteLine(average);

ak+47 | 园豆:202 (菜鸟二级) | 2015-11-28 16:25
0

(a.Sum() - a.Max() - a.Min()) / (a.Length - 2);

拍手笑清风 | 园豆:158 (初学一级) | 2015-12-10 10:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册