【项目1:大奖赛计分(续一)】
在歌手大奖赛中,有10个评委为参赛的选手打分,分数为1~10分。请在大奖赛计分程序基础上,增加功能,若用户输入不在0-10范围内,则立即要求重输,直到正确。
[参考解答]
#include <stdio.h>
#define n 10
int main( )
{
int i;
double ave, score, sum, max, min;
char choice;
do
{
i=1;
max=-1;
min=11;
sum=0;
printf("请输入选手的成绩(0-10)\n");
do
{
printf("第 %d 位评委给分:", i);
scanf("%lf", &score);
if(score<0||score>10)
continue; //输入不对就继续输,由于不会执行到后面的i++,提示的还是原评委
sum+=score;
if(max<score)
max=score;
if(min>score)
min=score;
i++;
}while(i<=n);
//下面开始计算
ave = (sum-max-min)/(n-2);
printf("减去一个最高分: %.3f\n", max);
printf(", 减去一个最低分: %.3f\n", min);
printf("当前选手的最后得分是:%.3f\n", ave);
printf("******************* SUCCESS ***********************\n");
printf("按 N 退出,其他键继续....");
fflush(stdin); //将输入缓冲清空,否则getchar()会读入之前录入中的回车等符号
choice=getchar();
}while(choice!='N' && choice!='n'); //不管输入大小写,全算数
return 0;
}