到了比赛季,校园里会举行大大小小的比赛。除了以精确成绩决定名次的部分体育竞赛,更多的比赛需要若干位裁判进行打分,再将各裁判给出的分数进行均值,作为最后为选手们排名的依据。
然而在实际运用中,如果选手和裁判人数都非常多,单凭人工核算成绩,就会出现操作难度大和计算准确性低下的问题。比如在大二选修课英语公共演讲中,课堂上将会进行大量的演讲比赛。假定有15名选手,7名裁判。裁判的打分纸上依选手编号顺序排出选手名字,裁判将在各选手的编号后打分。比赛结束后,主持人回收7张打分纸,为每个选手去掉最高分和最低分,然后以剩余5个分数的平均数作为选手得分。
即便有计算器的帮助,在2课时即将结束前的一段时间内得出结果却相当困难。主持人不仅要保证计算当前选手的分数时不看走眼,还要在7个分数内准确找出最大值和最小值。我们能不能用C语言脚本,一张打分纸一张打分纸地依选手编号顺序输入得分,计算出所有选手的最后得分呢?
我们的小组中有位同学提出这样一个算法:
①将输入的第n个裁判的分数保存到第n个一维数组jn[]
②将j[]中的数据对应转化为第i个选手的分数,保存在一维数组si[]内
③用冒泡排序法对si[]进行排序
④声明浮点型平均数变量sumi,sumi等于si[1]到si[5]的平均数,完成计算。
我们现在来实现一下这个算法。我们按照算法的思路一步一步来。
①在main函数里面实现分数输入与保存: