程序设计实训项目二 歌手大奖赛计分程序

1.       题目描述

歌手大奖赛计分程序

(1)在歌手大奖赛中,有n位评委为参赛的选手打分,分数为0~10分(运行时由人输入)。选手最后得分为:去掉一个最高分和一个最低分后其余分数的平均值。请编写一个程序,完成相关的功能。

要求利用一个函数voidcalScore(int n),对一位选手成绩的输入成绩、计算和显示实现,其中n为评委人数。这样,在main函数调用时,需要将输入的评委人数n作为实参。

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


/*烟台大学计算机学院 2016
作者: 马春澎
完成日期:2017年1月4日 */
#include <stdio.h>
#include <stdlib.h>
void calScore(int n);//定义函数
int main()
{
    int n;
    char choose,huanhang;
    do
    {
        system("cls");//清空屏幕数据
        printf("输入评委人数(大于2人):");//因为要减去最高分和最低分所以评委数应大于2人
        scanf("%d",&n);
        if(n<3)
            continue;//输入的数小于3时,循环重新执行
        calScore(n);//进入函数
        printf("按N或n退出,其他键继续...\n");
        scanf("%c%c",&huanhang,&choose);//输入换行后再进行操作
    }
    while(choose!='n'&&choose!='N');//当选择n或N时跳出循环
    return 0;
}
/*************************************************************
功能描述:输入选手得分,并处理,输出最终得分
输入参数:n—评委人数
返 回 值:无
其他说明:无
*************************************************************/

void calScore(int n)
{
    float score,max=-1,min=11,end_Score,sum_Score=0;//先定义最高分为-1,最低分为11
    int i,count=0;
    printf("请输入选手的成绩(0-10)\n");
    for(i=1; i<=n; i++)
    {
        while(1)//死循环
        {
            printf("第 %d 位评委给分:",i);
            scanf("%f",&score);
            if(score<0||score>10)//分数小于0或大于10时执行空语句,循环继续执行
            {
            }
            else
            {
                if(max<score)
                    max=score;
                if(score<min)
                    min=score;
                sum_Score=score+sum_Score;
                count++;
            }
            if(i==count) break;//当输入的数和评委数相同时跳出循环
        }
    }
    end_Score=(sum_Score-max-min)/(n-2);//最后得分
    printf("减去一个最高分:%.2f, 减去一个最低分:%.2f\n",max,min);
    printf("当前选手的最后得分为:%.3f\n",end_Score);//输出最后得分
    printf("************************************SUCCESS************************************\n");
}


知识点总结

循环的综合应用

学习心得

要注意输入的数小于0或大于10时对数据的处理,要重新输入正确的数。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值