问题描述:
对完成的程序作出以下要求:
(1)当评委人数不固定为10人,修改程序,可以选择在运行开始前输入评委人数。
(2)输入成绩必须在0-10之间,而上面并没有对此进行结束约束。修改程序,当输入错误时要马上能重新输入,直到输入值在正确范围内。
(3)一次比赛有好几十位选手参加,每算一位就得重新运行一次程序!修改程序,输出当前选手的最后等分后,提示“按任意键计算下一位选手成绩,退出请选择N”如果输入的不是N或n,可以为下一位选手计算成绩。
代码:
/*
*copyright (c) 2014,烟台大学计算机学院
*all rights reserved.
*文 件 名 : 大奖赛记分.cpp
*作 者 :张 鹏
*完成日期 :2014年11月02号
*版 本 号 :v1.2
*
*问题描述 :在歌手大奖赛给选手打分去掉一个最高分和一个最低分求出平均分。
*输入描述 :若干数字,代表选手成绩。
*程序输出 :选手得分情况。
*/
#include <iostream> //预处理指令。
#include <iomanip>
#include <cstdio>
using namespace std; //使用C++的命名空间 std。
int main() //函数首部。
{
char ch;
do
{
cout<<"请输入选手成绩(0-10)"<<'\n'; //输出汉字使得界面更美好。
double a,k,i,b,sum=0,average,max,min=55; //定义8个变量为实型。
cout<<"本次裁判数为";
cin>>k; //输入裁判数量。
for (i=1; i<=k; ++i) //for语句执行辅助输出10个得分。
{
cout<<"第"<<i;
cout<<"位评委给分:"; //输出汉字使得界面友好。
cin>>a;
if (a>10||a<0)
{
cout<<"输入错误,请重新输入成绩"<<endl;
i=i-1;
}
b=a;
sum+=a; //求和用于求平均值。
if (b>=max&&b<=10)
max=b;
if(b>0&&b<=min)
min=b; //求出最值。
}
cout<<"减去一个最高分:"<<max; //输出汉字使得界面友好,下同。
cout<<" 减去一个最低分:"<<min<<'\n';
cout<<"当前选手最后得分是:";
cout<<(average=(sum-max-min)/(k-2))<<'\n';
cout<<"****************"<<"SUSCCESS"<<"***************"<<'\n';
cout<<"按N键继续,按其他任意键退出。";
cout<<'\n';
cin>>ch; //输入一个字符来决定是否继续执行程序。
}
while ((ch!='n')||(ch!='N'));
return 0; //执行返回语句,结束程序。
}
知识点与学习心得:
题目,不是太难但有些细节不好把握。比如之前我的最值老是不对总是把错误打分判定为最大值,在我一番思考后在加了一些条件后终于搞定了。