第十周项目四 (拓展)大奖赛计分

拓展1:当评委人数不固定为10人时,可输入评委人数

问题及代码:

/*
* Copyright (c) 2014, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作者:Lingle
* 完成日期:2014年11月2日
* 版本号:v1.0
*
* 问题描述:在十位评委给出的分数中,去掉一个最高分,去掉一个最低分,取其余八个分数的平均值
* 输入描述:输入每个评委给出的分数
* 程序输出:输出最高分、最低分、去掉最高最低分后的平均分即最后得分
*/
#include <iostream>
using namespace std;
int main()
{
    double scores,max=0,min=10,sum=0,average;
    int i=1,n;
    cout<<"请输入评委人数:";
    cin>>n;
    cout<<"请输入选手的成绩(0-10)"<<endl;
    for (i=1;i<=n;++i)
    {
        cout<<"第"<<i<<"位评委给分:";
        cin>>scores;
        sum+=scores;
        if (scores>max)max=scores;
        if (scores<min)min=scores;
    }
    average=(sum-max-min)/(n-2.0);
    cout<<"减去一个最高分:"<<max<<",减去一个最低分:"<<min<<"。"<<endl;
    cout<<"当前选手最后得分是:"<<average;
    return 0;
}


运行结果:


拓展2:输出成绩限制在0-10之间,若不在则重新输入

问题及代码:

/*
* Copyright (c) 2014, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作者:Lingle
* 完成日期:2014年11月2日
* 版本号:v1.0
*
* 问题描述:在十位评委给出的分数中,去掉一个最高分,去掉一个最低分,取其余八个分数的平均值
* 输入描述:输入每个评委给出的分数
* 程序输出:输出最高分、最低分、去掉最高最低分后的平均分即最后得分
*/
#include <iostream>
using namespace std;
int main()
{
    double scores,max=0,min=10,sum=0,average;
    int i=1,n;
    cout<<"请输入评委人数:";
    cin>>n;
    cout<<"\n请输入选手的成绩(0-10)"<<endl;
    for (i=1; i<=n; ++i)
    {
        do
        {
            cout<<"第"<<i<<"位评委给分:";
            cin>>scores;
            if (scores>10||scores<0)cout<<"输入分数应在0-10之间,请重新输入。"<<endl;
            else
            {
                sum+=scores;
                if (scores>max)max=scores;
                if (scores<min)min=scores;
            }
        }
        while (scores>10||scores<0);
    }
    average=(sum-max-min)/(n-2.0);
    cout<<"减去一个最高分:"<<max<<",减去一个最低分:"<<min<<"。"<<endl;
    cout<<"当前选手最后得分是:"<<average;
    return 0;
}

运行结果:


拓展3:按任意键计算下一位选手的成绩,退出则按N或n(并加入了只有两个评委的算分情况)

问题及代码:

/*
* Copyright (c) 2014, 烟台大学计算机与控制工程学院
* All rights reserved.
* 文件名称:main.cpp
* 作者:Lingle
* 完成日期:2014年11月2日
* 版本号:v1.0
*
* 问题描述:在十位评委给出的分数中,去掉一个最高分,去掉一个最低分,取其余八个分数的平均值
* 输入描述:输入每个评委给出的分数
* 程序输出:输出最高分、最低分、去掉最高最低分后的平均分即最后得分
*/
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int i=1,n;
    char YN;
    for (; YN!='N'&&YN!='n';)
    {
        double scores,max=0,min=10,sum=0,average;
        cout<<"序号(或按N或n退出):";
        cin>>YN;
        switch (YN)
        {
        default:
        {
            cout<<"请输入评委人数:";
            cin>>n;
            cout<<"\n请输入选手的成绩(0-10)"<<endl;
            for (i=1; i<=n; ++i)
            {
                do
                {
                    cout<<"第"<<i<<"位评委给分:";
                    cin>>scores;
                    if (scores>10||scores<0)cout<<"输入分数应在0-10之间,请重新输入。"<<endl;
                    else
                    {
                        sum+=scores;
                        if (scores>max)max=scores;
                        if (scores<min)min=scores;
                    }
                }
                while (scores>10||scores<0);
            }
            if(n>=3)
                average=(sum-max-min)/(n-2.0);
            else
                average=sum/2.0;
            cout<<"减去一个最高分:"<<setiosflags(ios::fixed)<<setprecision(3)<<max<<",减去一个最低分:"<<setiosflags(ios::fixed)<<setprecision(3)<<min<<"。"<<endl;
            cout<<"当前选手最后得分是:"<<setiosflags(ios::fixed)<<setprecision(3)<<average;
            cout<<"\n******************** SUCCESS ********************\n\n\n";
        };
        break;
        case 'N':
        case 'n':
            break;
        }
    }
    return 0;
}

运行结果:



学习心得:

拓展3之前没有想到清零问题,未把double语句放到for后的大括号里,幸亏有王振学长点拨。

而且拓展3中for (; YN!='N'&&YN!='n';)一句,之前用的是逻辑或运算符||,造成按N或n无法return0。



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值