C# 计算总数并取数组中数字的平均值
以下是我需要解决的问题:C# 计算总数并取数组中数字的平均值,c#,C#,以下是我需要解决的问题: 找到12个分数中的最高值 找出12分中的最低值 计算12分的总和 从总分中减去最高分和最低分 将总分除以10,计算剩余10分的平均值 输出平均值(格式设置为小数点后2位) 这就是我到目前为止所做的一切,除了计算总分和从总分中分最高分和最低分,我不确定我应该把代码放在哪里,我应该使用什么代码: 双[]分={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
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();
}
Console.WriteLine(“列表中的数字:+scores.Length”);
对于(int index=0;index高)
{
高=分数[指数];
}
}
Console.WriteLine(“最高数字=”+高);
//最低数目
双低=分数[0];
对于(int index=1;index
如果您使用的是.NET 3.5+,则可以使用LINQ、和函数。为此,您需要使用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();
如果您使用的是.NET3.5+,则可以使用LINQ、和函数。为此,您需要使用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();
为完整起见,我想提出一个解决方案,用于处理数组中可能有多个元素具有最大值或最小值的情况:
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行,但如果要处理更多的值,则缓存最大值和最小值会更好。为了完整性起见,我想提出一种解决方案,用于处理数组中可能有多个元素具有最大值或最小值的情况:
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行,但如果要处理更多的值,则缓存最大值和最小值会更好。他说“减去最高值和最低值”@LucMorin Yep!在第一篇文章中没有提到这一点,编辑了解决方案:)这里可能根本不重要,但这可以在一个循环中完成他说“减去最高和最低的数字”@LucMorin yes!错过了第一篇文章,编辑了解决方案:)这里可能根本不重要,但这可以在一个循环中完成,正如您所看到的,使用Linq并不困难,但在回答之前,我想知道您希望如何处理列表中可能有多个项目具有max/min值这一事实。在这种情况下,,你想删除所有具有最大值或最小值的项目吗?我可以做所有其他事情,但我似乎无法得到总数减去最高值和最低值:这是实际问题:找到12分中的最高值找到12分中的最低值分数计算12个分数的总和通过将总和除以10个输出平均值(格式为小数点后2位)从10个剩余分数的总计算平均值中减去最高和最低分数。如果保证值是唯一的,则此处提出的解决方案将起作用。另一方面,假设9.9在列表中出现两次,那么您的问题没有指定如何处理它。我们必须假设它的意思是“只取总和中最高的一个,最低的一个”。正如您所看到的,使用Linq不是很困难,但在回答之前,我想知道您希望如何处理列表中可能有多个项目具有max/min值这一事实。在这种情况下,,你想删除所有具有最大值或最小值的项目吗?我可以做所有其他事情,但我似乎无法得到总数减去最高值和最低值:这是实际问题:找到12分中的最高值找到12分中的最低值分数计算12个分数的总和通过将总和除以10个输出平均值(格式为小数点后2位)从10个剩余分数的总计算平均值中减去最高和最低分数。如果保证值是唯一的,则此处提出的解决方案将起作用。另一方面,假设9.9在列表中出现两次,那么您的问题没有指定如何处理它。我们必须假设它的意思是“从总和中只取最高的一个和最低的一个”。