您的位置:首页 > 其它

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

2014-11-04 17:47 239 查看
问题及代码:

/*
*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语句。还有各种运算符,为了使界面友好加进去的各种东西。调试了那么多遍,最后终于把结果弄出来了,真的感到很幸福!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: