问题:
在歌手大奖赛中,有
n
位评委为参赛的选手打分,分数为
0~10
分(运行时由人输入)。选手最后得分为:去掉一个最高分和一个最低分后其余分数的平均值。
代码:
/*
烟台大学计算机学院 2016
作者:闫春相
完成日期:2017年1月3日
版本号:V1.0
*/
#include <stdio.h>
#include <stdlib.h>
void calScore(int );
void xianshi(float ,float, float,int );
int main()
{
int n;//裁判的人数
printf("输入评委的人数(大于2人):\n");
scanf("%d",&n);
calScore(n);
return 0;
}
/*************************************************************
功能描述:计算出正确的答案
输入参数:n-评委人数
返 回 值:无
其他说明:无
/************************************************************/
void calScore(int n)
{
char q='a';//控制程序是否继续运行
int i;//控制循环
while(q!='n'&&q!='N')
{
float high=0.0,low=10.0,sum=0.0,score;//得分情况
printf("请输入选手成绩(0-10)\n");
for(i=0; i<n; i++)
{
printf("第%d位评委打分:",i+1);
scanf("%f",&score);
while(score<0||score>10)
{
printf("输入错误,请重新输入。\n");
printf("第%d位评委打分:",i+1);
scanf("%f",&score);
}
sum+=score;
if(score>high)
high=score;
if(score<low)
low=score;
}
xianshi(sum,low,high,n);
fflush(stdin);
scanf("%c",&q);
if(q!='n'&&q!='N')
{
printf("\n");
printf("输入评委的人数(大于2人):\n");
scanf("%d",&n);
}
}
}
/*************************************************************
功能描述:计算出正确的答案
输入参数:sum-总分
low-最低分
high-最高分
n-评委人数
返 回 值:无
其他说明:无
/************************************************************/
void xianshi(float sum,float low,float high,int n)
{
float aver;
aver=(sum-low-high)/(n-2);
printf("减去一个最高分:%.2f,去掉一个最低分:%.2f\n",high,low);
printf("当前选手的最后得分是:%.2f\n",aver);
printf("*************成功**************\n");
printf("按N退出,按其他键继续.....\t");
}
运行截图: