课程设计2 歌手大赛计分系统

来源:互联网 发布:淘宝主营占比在哪里看 编辑:程序博客网 时间:2024/04/20 00:52
Copyright (c) 2016 烟台大学计算机与控制工程学院All rights reserved.文件名称:test.cpp作者:何定钦完成日期:2017年1月1日题目描述:    (1)在歌手大奖赛中,有n位评委为参赛的选手打分,分数为0~10分(运行时由人输入)。    选手最后得分为:去掉一个最高分和一个最低分后其余分数的平均值。请编写一个程序,完成相关的功能。    要求利用一个函数void calScore(int n),对一位选手成绩的输入成绩、计算和显示实现,其中n为评委人数。    这样,在main函数调用时,需要将输入的评委人数n作为实参。    (2) 进一步完善(1)的程序。输入时,难免有录入错误发生,如果输入的成绩不在0-10之间,    要求用户立即重新输入(在函数calScore中修改);一次运 行程序只计算一位选手成绩太麻烦,    要求输出当前选手的最后得分后,提示“按任意键计算下一位选手的成绩,退出请选择N:”如果输    入的不是N或n,可以为下 一位选手计算成绩(在main函数中进行控制即可)。输入:    输入n以及各位评委的给分。输出:    去掉的最高分及最低分以及最后得分样例输入:    对于(1):    7 10 9 8 7 6 5 4    对于(2):    7 0 9 8 7 6 8 10    g -1 -9 -7 89 8 7 6 7 8 6 10 n 样例输出:    对于(1):    10.00  4.00    7.000    对于(2):    10.00  0.00    7.600    10.00 6.00    7.200分析(1):#include <stdio.h>#include <stdlib.h>void calScore(int n);/*功能:输入评委人数,调用函数*/int main(){    int n;   /*评委人数*/    printf("输入评委人数:");    scanf("%d",&n);    calScore(n);    return 0;}/*功能·:计算出评委给出的分的最高分和最低分以及歌手最后得分*/void calScore(int n){    int i;    float score,last_score;  /*评委给分以及最后得分*/    float max=0,min=10;     /*最高分和最低分*/    float sum=0;        /*评委给出的分的总和*/    printf("请输入选手的成绩(0-10)\n");    for(i=0;i<n;i++)    {        printf("第%d位评委给分:",i+1);        scanf("%f",&score);        sum=sum+score;   /*累加每次的给分*/        if(score>max)                 max=score;        if(score<min)            min=score;    }    last_score=(sum-max-min)/(n-2);  /*计算最后得分*/    printf("去掉一个最高分:%.2f,去掉一个最低分:%.2f\n",max,min);    printf("当前选手的最后得分是:%.3f",last_score);    return;}分析(2):#include <stdio.h>#include <stdlib.h>void calScore(int n);/*功能:可计算多位歌手的得分*/int main(){    int n;   /*评委人数*/    char judge;  /*判断是否计算下一个歌手的字符常量*/    printf("输入评委人数:");    scanf("%d",&n);    do    {        calScore(n);   /*调用函数*/        printf("按 N 或者 n 退出,按其他键继续计算下一位歌手的成绩:\n");        fflush(stdin);  /*清除缓冲区*/        judge=getchar();    }    while(judge!='n' && judge!='N');  /*输入非N或n时计算下一个歌手的得分*/    return 0;}/*功能:计算最高分,最低分及最后得分*/void calScore(int n){    int i;    float score,last_score;   /*评委给分以及最后得分*/    float max=0,min=10;         /*最高分和最低分*/    float sum=0;                 /*评委给出的分的总和*/    printf("请输入选手的成绩(0-10)\n");    for(i=0; i<n; i++)    {        printf("第%d位评委给分:",i+1);        scanf("%f",&score);        while(score<0 || score>10)        {            printf("第%d位评委给分:",i+1);            scanf("%f",&score);        }        sum=sum+score;    /*累加每次的给分*/        if(score>max)            max=score;        if(score<min)            min=score;    }    last_score=(sum-max-min)/(n-2);    /*计算最后得分*/    printf("去掉一个最高分:%.2f,去掉一个最低分:%.2f\n",max,min);    printf("当前选手的最后得分是:%.3f\n",last_score);    return;}

结果(1):


结果(2):


知识点总结:

运用了计算和的方法以及找最大值及最小值的方法。

心得体会:

一直卡在为下一位歌手怎么样计分的地方,最后才发现需要先清除缓冲区才可以再输入下一个字符。

0 0
原创粉丝点击