以下是我需要解决的问题:
这是我到目前为止所做的一切,除了计算总分和从总分中减去最高和最低的一切,我不知道我想在哪里放置代码和我想要使用的代码:
double []得分= {8.7,9.3,7.9,6.4,9.6,8.0,8.8,9.1,7.7,9.9,5.8,6.9};
Console.WriteLine("Numbers in the list:" + scores.Length);
for (int index = 0; index < scores.Length; index++)
{
Console.WriteLine(scores[index]);
}
//highest number
double high = scores[0];
for (int index = 1; index < scores.Length; index++)
{
if (scores[index] > high)
{
high = scores[index];
}
}
Console.WriteLine("Highest number =" + high);
//lowest number
double low = scores[0];
for (int index = 1; index < scores.Length; index++)
{
if (scores[index] < low)
{
low = scores[index];
}
}
Console.WriteLine("lowest number =" + low);
//average of the scores
double total = 0;
double average = 0;
for (int index = 0; index < scores.Length; index++)
{
total = total + scores[index];
}
average = (double)total / scores.Length;
Console.WriteLine("Total=" + total);
Console.WriteLine("Average=" + average.ToString("N2"));
Console.ReadKey();
}
答案 0 :(得分:7)
如果您使用的是.NET 3.5+,则可以使用LINQ Sum()
,Min()
和Max()
函数。为此,您需要添加using System.Linq;
double[] scores = { 8.7, 9.3, 7.9, 6.4, 9.6, 8.0, 8.8, 9.1, 7.7, 9.9, 5.8, 6.9 };
double calculatedValue = scores.Sum() - scores.Max() - scores.Min();
答案 1 :(得分:1)
double[] scores = { 8.7, 9.3, 7.9, 6.4, 9.6, 8.0, 8.8, 9.1, 7.7, 9.9, 5.8, 6.9 };
double min = scores.Min();
double max = scores.Max();
double total = scores.Sum();
double result = total - min - max;
答案 2 :(得分:0)
为了完整起见,我想提出一个解决方案来处理数组中可能有多个元素的最大值或最小值的情况:
double[] scores = { 8.7, 9.3, 7.9, 6.4, 9.6, 8.0, 8.8, 9.1, 7.7, 9.9, 5.8, 6.9, 9.9, 5.8 };
var resultValue = scores.Where(e => e != scores.Max() && e != scores.Min()).Sum();
干杯
注意:是的,如果列表很长,它可能会变得低效,因为e.Max()和e.Min()将被多次调用,并且它们将多次迭代整个列表。但根据问题陈述,只有12个值。我想把它留作1个班轮,但是如果要处理更多的值,那么缓存最大值和最小值会更好。