作战吧偶像薛之谦全集:跪求!!大家看一下这一个C程序那里错了?

来源:百度文库 编辑:中科新闻网 时间:2024/04/19 07:32:09
大家看一下这一个C程序那里错了?
题目:在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。
源代码:
#include<math.h>
#include<stdio.h>
void main()
{
float i,x,max,min,average,sum;
scanf("%f",&x);
max=min=x;sum=0;
for(i=1;i<=9;i++)
{
scanf("%f",&x);
if(x>max) max=x;
if(x<min) min=x;
sum=sum+x;
}
average=(sum-max-min)/8;
printf("平均分数%f\n",average);
}
为什么输入10个相同的数结果不对!!!输入10个不相同的数结果是对的!!!

程序中:max=min=x;sum=0;中的sum=0应该为sum=x
因为在程序执行到这一句时,已经读入了一个x,应把它算到sum里面,您的程序中忘了给sum加入第一个数的值,所以不能得出正确的结果

max=min=x;sum=x; //sum 需要第一个数也参加累加求和

这句:max=min=x;sum=0;
应该是:sum=max=min=x;