课程设计<2>---歌手大奖赛计分程序

    xiaoxiao2021-03-26  13

    Copyright (c) 2016, 烟台大学计算机与控制学院 All ringts reserved. 文件名称:歌手大奖赛计分程序 作 者:王兴振 完成日期:2016年1月5日 版 本 号:未知 题目描述:

    (1)在歌手大奖赛中,有n位评委为参赛的选手打分,分数为0~10分(运行时由人输入)。选手最后得分

    为:去掉一个最高分和一个最低分后其余分数的平均值。请编写一个程序,完成相关的功能。

    要求利用一个函数voidcalScore(int n),对一位选手成绩的输入成绩、计算和显示实现,其中n为评委人数。

    这样,在main函数调用时,需要将输入的评委人数n作为实参。

    (2) 进一步完善(1)的程序。输入时,难免有录入错误发生,如果输入的成绩不在0-10之间,要求用户立即重新输入(在函数calScore中修改);一次运 行程序只计算一位选手成绩太麻烦,要求输出当前选手的最后得分后,提示“按任意键计算下一位选手的成绩,退出请选择N:”如果输入的不是N或n,可以为下 一位选手计算成绩(在main函数中进行控制即可)。

    输      入

      评委打的分数。

    输      出:

      减去最低分和最高分后得分。

    样例输入:

    8.7

    9.3

    10.2

    9.2

    -2.3

    2.3

    6.5

    8.9

    7.4

    样例输出:

    减去一个最高分:9.30 减去一个最低分2.30

    最终得分为:8.140.

    答       案:

    /************************************************************* 功能描述:为歌手大奖赛计分 输入参数:n-评委数量。      min,max,sum,array-最小值,最大值,和,最终成绩。      z-字符,判断是否继续。 返 回 值:最高分,最低分和最终得分。 其他说明:无 *************************************************************/ #include <stdio.h> #include <stdlib.h> #include <conio.h>//包含输入字符不回显得函数。 void calScore(int n);//计算输出得分。 int main() {     int n,a=0;//a保证第一次不用判断。     char pan='z';//判断是否继续。     do     {         if(a==1)         {             printf("\n****************** SUCCESS ******************\n");             printf("按任意键继续,按N或n退出\n");             pan=getch();         }         if(pan=='n' || pan=='N')             break;         while(1)         {             printf("请输入评委数量(不小于3):");             scanf("%d", &n);             if(n<3)                 printf("评委人数超限!\n");             else                 break;         }         calScore(n);         a=1;     }     while(1);     return 0; } void calScore(int n) {     int i;     double fen,min=10,max=0,sum,array;     sum=0;//初始化。     void assess(double);     printf("请输入选手成绩(0-10)\n");     for(i=1; i<=n; i++)     {         printf("第%d位评委给分:", i);         scanf("%lf", &fen);         if(fen<=10 && fen>=0)//判断分数范围。         {             if(fen>max)                 max=fen;             if(fen<min)                 min=fen;             sum=sum+fen;         }//判断最大最小值并保存。         else         {             printf("输入超限,请重新输入!\n");             i--;         }     }     printf("减去一个最高分:%.2f 减去一个最低分:%.2f\n", max,min);     sum=sum-max-min;     array=sum/(n-2);     printf("此选手最后成绩为:%.3f\n", array);     assess(array); } void assess(double array) {     printf("\n");     if(array>=9)         printf("你是歌神!");     if(array>=8 && array<9)         printf("你已经很厉害了");     if(array>=6 && array<8)         printf("加油哦,你可以更进一步!");     if(array<6)         printf("其实别的职业也不错!"); }

    转载请注明原文地址: https://ju.6miu.com/read-450393.html

    最新回复(0)