(一):
/***************************************************************
功能描述:在歌手大奖赛中,有n位评委为参赛的选手打分,分数为0~10分(运行时由人输入)。
选手最后得分为,去掉一个最高分和一个最低分后其余分数的平均值。
参数: n 表示评委人数,
score表示成绩
max表示最高分
min表示最低分
aver表示平均分
程序:
#include <stdio.h>
#include <stdlib.h>
void calScore(int);//定义评分过程的函数
int main()
{
int n;
printf("请输入评委人数:");//输入评委人数
scanf("%d",&n);
calScore(n); //调用函数
return 0;
}
void calScore(int n)
{
int i;
double sum=0,max=0,min=10,score,aver;
printf("请输入选手成绩(0-10)\n");
for(i=1;i<=n;i++)
{
printf("第%d位评委给分:",i);
scanf("%lf",&score);
sum=sum+score;
if(max<score)
max=score;
if(min>score)
min=score;
}
printf("减去一个最高分:%.2f,减去一个最低分:%.2f\n",max,min);
aver=(sum-max-min)/5.0;
printf("当前选手得分:%.3f",aver);
}
测试:
(二):
/************************************************************
功能描述:进一步完善(1)的程序。输入时,难免有录入错误发生,如果输入的成绩不在0-10之间,
要求用户立即重新输入(在函数calScore中修改);一次运行程序只计算一位选手成绩太麻烦,
要求输出当前选手的最后得分后,提示“按任意键计算下一位选手的成绩,退出请选择N:”
如果输入的不是N或n,可以为下一位选手计算成绩。
参数: X是否继续的标志
n 表示评委人数,
score表示成绩
max表示最高分
min表示最低分
aver表示平均分
程序:
#include <stdio.h>
#include <stdlib.h>
void calScore(int);
int main()
{
int n;
printf("请输入评委人数:");
scanf("%d",&n);
calScore(n);
return 0;
}
void calScore(int n)
{
int i;
char X;
double sum=0,max=0,min=10,score,aver;
printf("请输入选手成绩(0-10)\n");
for(i=1;i<=n;i++)
{
printf("第%d位评委给分:",i);
scanf("%lf",&score);
if(score>10||score<0)
{
i=i-1;
continue;
}
sum=sum+score;
if(max<score)
max=score;
if(min>score)
min=score;
}
printf("减去一个最高分:%.2f,减去一个最低分:%.2f\n",max,min);
aver=(sum-max-min)/5.0;
printf("当前选手得分:%.3f\n",aver);//选手平均得分
printf("*************SUCCESS********\n");
printf("按N键退出,其他键继续\n");
fflush(stdin); //清除缓冲区
scanf("%c",&X);
if(X!='N'&&X!='n')
calScore(n);
}
测试: