【项目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; }
时间: 2024-10-12 04:21:01