第十周项目4及其拓展:大奖赛计分

问题及代码:

/*
*Copyright(c)2014,烟台大学计算机学院
*All rights reserved.
*文件名称:test.cpp
*作者:陈文青
*完成日期:2014年10月16日
*版本号:v1.0
*
*问题描述:在歌手大奖赛中,有10个评委为参赛的选手打分,分数为0~10分。
选手最后得分为:去掉一个最高分和一个最低分后,取其余8个分数的平均值。
并有以下拓展:
(1)当评委人数不固定为10人,修改程序,可以选择在运行开始前输入评委人数。
(2)输入成绩必须在0-10之间,而上面并没有对此进行结束约束。修改程序,当输
入错误时要马上能重新输入,直到输入值在正确范围内。
(3)一次比赛有好几十位选手参加,每算一位就得重新运行一次程序!修改程序,
输出当前选手的最后等分后,提示“按任意键计算下一位选手成绩,退出请选择N”
如果输入的不是N或n,可以为下一位选手计算成绩。
*输入描述:整型n,代表裁判数目,字符ch代表是否进行再次评分,
实型dGrade代表分数,
*程序输出:实型dMax代表最大值,dMin代表最小值,dAverage,代表最后得分
*/

#include <iostream>
using namespace std;
int max(int x,int y)        //自定义函数,求最大值
{
    int z;
    z=x>y?x:y;
    return(z);
}
int min(int x,int y)        //自定义函数,求最小值
{
    int z;
    z=x<y?x:y;
    return(z);

}
int main()
{
    char ch;
    int n,i;
    cout<<"请输入裁判人数:";       //拓展1,任选评委数目
    cin>>n;
    cout<<endl;
    do                              //拓展3:do-while循环语句,可以进行多位选手评分
    {
        double dGrade=0,sum=0,dMax=0,dMin=10,dAverage=0;
        cout<<"请输入选手的成绩(0-10):"<<endl;
        for(i=1; i<=n;)             //循环语句,以此输入裁判评分
        {
            cout<<"第"<<i<<"位评委给分:";
            cin>>dGrade;
            cout<<endl;
            if(dGrade<0||dGrade>10)
                continue;           //拓展2:如果输入错误,提前结束循环,重新输入
            dMax=max(dMax,dGrade);  //调用自定义函数
            dMin=min(dMin,dGrade);  //调用函数
            sum=sum+dGrade;
            i++;
        }
        cout<<"减去一个最高分:"<<dMax<<",减去一个最低分"<<dMin<<"。"<<endl;
        dAverage=(sum-dMax-dMin)/(n-2);
        cout<<"当前选手的最后得分是:"<<dAverage<<endl;
        cout<<"**********SUCCESS**********"<<endl;
        cout<<"按N键退出,其他键继续。。。";
        cin>>ch;
        cout<<endl;
    }
    while((ch!='n')&&(ch!='N'));    //输入N结束该程序

    return 0;
}

运行结果:


知识点总结:

调用自定义函数,do-while循环语句,for语句,continue结束一次循环,等等各种知识点。


学习心得:

这个程序断断续续的编,编了很长一段时间。单单一个continue就浪费了几十分钟。还有第一次调用函数啊,循环嵌套啊,从而把三个拓展加进去,真的费了很大的工夫。但是确确实实学到了很多东西。例如从前忽视的continue语句。还有各种运算符,为了使界面友好加进去的各种东西。调试了那么多遍,最后终于把结果弄出来了,真的感到很幸福!!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值