考完试好几天了,一直没把在考试中遇到的问写下来。趁着周末 其实是复习周,不用上课哒,把那个给跳水运动员打分的程序写在这里。
题目描述: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
就是小数点后两位。废话