问题: 7个裁判打分,存储如下数组int[a]={7,9,6,8,8,7,8},去掉一个最高分和一个最低分,然后求出平均成绩。
自己写的一点代码,后面的不知道怎么写:
int[] a = { 7,9,6,8,8,7,8};
Array.Sort(a );
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);
//也可以按照你的思路, 先排序 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);
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);
(a.Sum() - a.Max() - a.Min()) / (a.Length - 2);