考完试好几天了,一直没把在考试中遇到的问写下来。趁着周末 其实是复习周,不用上课哒,把那个给跳水运动员打分的程序写在这里。

题目描述:5 名裁判给 10 个选手打分,分数在 0-10 之间,去掉一个最高分和最低分,计算平均分。

分析:我们可以先实现一个选手最终得分的计算,然后在外围用 for 循环来实现十个选手的得分。按照冒泡排序,形成递增序列,去掉序列的头和尾,把剩下的求平均值就好了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
static void Main(string[] args)
{

    for (int m = 1; m < 11; m++)
    {
        Console.WriteLine("请输入第" + m + "位选手的评分:");
        double [] a = new double [5];
        for (int i = 0; i < 5; i++)
        {
           a[i] = double.Parse(Console.ReadLine());
        }
        double  temp;
        for (int i = 0; i < a.Length - 1; i++)  //这里用冒泡排序,得到递增序列。
        {
            for (int j = 0; j < a.Length - i - 1; j++)
            {
                if (a[j] > a[j + 1])
                {
                    temp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = temp;
                }
            }
        }
        double  sum=0;
        for (int i = 1; i < 4; i++)   //去掉最低分,最高分。
        {
            sum += a[i];
        }
       Console.WriteLine("第" + m + "位选手的最终成绩为:{0:f1}", sum/3);
       Console.ReadLine();
    }
}

对了,题目要求最终得分需要精确到小数点后一位,所以在网上查到可以用 {0:f1} 控制输出位数,其中 f1 表示小数点后一位,f2 就是小数点后两位。废话