拓展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。