问题描述
程序代码
#include <stdio.h>
#include <stdlib.h>
/*
*csdn学院--2016级
*目的:让代码见证成长(作为一个初学的菜鸟,如
*大家有发现错误,欢迎指正!)
*文件名称:Myfun74.c
*作者:小臣小仁
*完成日期:2016年12月16日
*/
int main()
{
int judgeNum,singerNum,j,s;
float max,min,aver,mark,sum;
printf("请输入评委数:");
scanf("%d",&judgeNum);
printf("请输入歌手人数:");
scanf("%d",&singerNum);
for(s=1;s<=singerNum;s++)
{
j=1;
sum=0;
max=0;
min=10;
printf("下面计算第%d为歌手的分数:\n",s);
do
{
printf("第%d为评委打分:",j);
scanf("%f",&mark);
if(mark<0||mark>10)
{
printf("请重新输入%d为评委的正确分数!\n",j);
continue;
}
sum+=mark;
if(max<mark)
max=mark;
if(min>mark)
min=mark;
j++;
}
while(j<=judgeNum);
aver=(sum-max-min)/(judgeNum-2);
printf("去掉一个最高分%.2f,去掉一个最低分%.2f\n",max,min);
printf("第%d位歌手得分位%.2lf\n",s,aver);
}
return 0;
}
输出结果
知识点总结
这里如果输入评委分数没有在1~10之间用continue来进行返回,如何重新输入,但是这里循环只能用do{}while来实现,其它的for,while来循环是不行的的
心得体会
能程序还有诸多需要优化的地方,但对应初学者的我,还感觉力不从心,希望大家谅解。