设计大奖赛的计分程序,成绩在0-10 之间,输入错误时要能马上重新输入,选手最后得分为:去掉一个最高分和一个最低分。输出当前选手的最后得分后,提示“按任意键计算下一位选手的成绩,退出请选择N。如果输入的不是N 或n,可以为下一位选手计算成绩。
#include <stdio.h>
main()
{
int i,number=0;
float a,max=0,min=10,sum,average;
char quit;
printf("请输入评委数\t");
scanf("%d",&number);
do
{
sum=0;
for(i=0;i<number;i++)
{
do{
printf("请输入第%d位评委成绩(0~10)\t",i+1);
scanf("%f",&a);
}while(a<0||a>10);
sum+=a;
if (a>max)
max=a;
if (a<min)
min=a;
}
average=(sum-max-min)/(number-2);
printf("去掉最高分:%f分\t",max);
printf("去掉最低分:%f分\t",min);
printf("最后得分:%f分\n",average);
printf("输入N退出\n");
fflush(stdin);
quit=getchar();
}
while (quit!='N');
}
一开始没用fflush(stdin);清空缓冲区,导致scanf读的回车影响了quit=getchar();,不执行此语句,使循环无法退出。(貌似\空格\+scanf也能达到清缓存的效果……)