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

以下是我需要解决的问题:

  • 找到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 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在列表中出现两次,那么您的问题没有指定如何处理它。我们必须假设它的意思是“从总和中只取最高的一个和最低的一个”。