计算总数并取数组中数字的平均值

时间:2014-03-21 02:46:43

标签: c#

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

  1. 查找12个分数的最高值
  2. 查找12个分数的最低值
  3. 计算12个分数的总和
  4. 从总数
  5. 中减去最高和最低分数
  6. 通过将总数除以10来计算10个剩余分数的平均值
  7. 输出平均值(格式化为2位小数)
  8. 这是我到目前为止所做的一切,除了计算总分和从总分中减去最高和最低的一切,我不知道我想在哪里放置代码和我想要使用的代码:

    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();
        }
    

3 个答案:

答案 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个班轮,但是如果要处理更多的值,那么缓存最大值和最小值会更好。