假设某大赛有3位评委和10位参赛选手,每位评委将会对10位选手进行打分。打分的形式不限,可以让一个评委一次打完10个人的分数然后轮到下一位评委打分直到结束,也可以让三个评委轮流给选手打分,打完第一位选手的分再轮流给第二位选手打分,以此类推直到结束。两种打分方式具体如下:
打分方式一 :
1号评委,请您按顺序给10位选手打分,按回车键分隔。
2号评委,请您按顺序给10位选手打分,按回车键分隔。
3号评委,请您按顺序给10位选手打分,按回车键分隔。
打分方式二:
1号选手表演结束,请三位评委录入您的分数,按回车键分隔。
2号选手表演结束,请三位评委录入您的分数,按回车键分隔
......
10号选手表演结束,请三位评委录入您的分数,按回车键分隔。
试编程完成以下具体考核内容:
(1)请你利用C语言中的数组编写一个程序,要求能够统计并显示每位参赛选手的平均得分是多少。
(2)求出平均成绩最高的前三名同学的序号。
(3)在程序开始运行时让用户自由决定有几位参赛学生,几位评委。
(4)在程序开始运行时确定评委评分的方式:可选择5分制、10分制或者100分制甄别用户输入的数字,对于不合理的输入,如:评委在5分制输入了大于5或者小于1,程序能够自动提示错误,并马上让评委再次输入。
(5)见案例描述中说明了两种打分方式。程序要能实现两种打分模式,并在程序开始运行时让用户选择以哪种方式打分。
附参考提示信息:
请输入学生数量(小于等于20):
请输入评委数量(小于等于10):
请输入评分模式(1/2),1:第一个评委打完所有分数后下一个评委再打分;2:几个评委轮流给每个同学打分
请输入分数制式(5/10/100),5:五分制;10:十分制;100:百分制
1号评委,请您按顺序给5位选手打分,按回车键分隔.
2号评委,请您按顺序给5位选手打分,按回车键分隔.
3号评委,请您按顺序给5位选手打分,按回车键分隔.
注:测试数据用了3位评委,5位选手
参考:
#include <stdio.h>
/*
设计一个“卡拉OK大赛评分系统”
本程序启动后,会提示“卡拉OK大赛正式开始”,然后请10位裁判分别打分,
最后去掉一个最高分和一个最低分,将其余分数的平均分作为选手的最后得分
*/
void main(){
float a[10]; //保存10个评委的分数
int i;
float max;//保存最高分
float min;//保存最低分
float avg=0;//保存10个评委的平均分
//显示界面
printf("\t\t\t*****************************************************\n");
printf("\t\t\t* *\n");
printf("\t\t\t* 卡拉OK大赛评分系统 *\n");
printf("\t\t\t* *\n");
printf("\t\t\t*****************************************************\n");
//1.输入10个评委的分数
for(i=0;i<10;i++){
printf("\t\t\t请输入第%d个评委的打分:",i+1);
//获取从键盘输入的分数
scanf("%f",&a[i]);
}
//2.对max,min赋初值
max = a[0];
min = a[0];
avg = a[0];
//3.求最高分,最低分,总分
for(i=1;i<10;i++){
//求最高分
if(max<a[i]){
max = a[i];
}
//求最低分
if(min>a[i]){
min = a[i];
}
//求总分
avg += a[i];
}
//求平均分 = (总分-最高分-最低分 )/8
avg = (avg - max - min)/8;
//4.输出结果
printf("去掉一个最高分%0.2f,去掉一个最低分%0.2f,最后得分是:%0.2f",max,min,avg);
}