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

本文关键字:数字 平均值 数组 计算 | 更新日期: 2023-09-27 17:51:13

这是我需要解决的问题:

  1. 查找12分中的最高分
  2. 找到12分中的最低值
  3. 计算12个分数的总和
  4. 从总分中减去最高分和最低值
  5. 用总分除以10计算剩余10分的平均值
  6. 输出平均值(格式为小数点后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();
    }

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

如果你使用的是。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();
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;

为了完整起见,我想提出一个解决方案,该解决方案将处理数组中可能存在多个具有最大值或最小值的元素的情况:

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.m min()将被调用很多次,它们将迭代整个列表很多次。但是根据问题表述,只有12个值。我想把它保留为1行,但如果要处理更多的值,那么缓存Max和Min值会更好。