C语言问题,求帮助。

某大奖赛现场为一名选手打分,有8个评委,去掉一个最低分和一个最高分的平均分为最终得分。请在主函数中实现评委打分功能,在自定义函数中实现最终得分的计算功能,并将结果返回到主... 某大奖赛现场为一名选手打分,有8个评委,去掉一个最低分和一个最高分的平均分为最终得分。请在主函数中实现评委打分功能,在自定义函数中实现最终得分的计算功能,并将结果返回到主函数中输出。(注:满分为100,最低分为0分)

这是我自己写的。我知道printf有错。求改!!!
#include<stdio.h>
void fenshu(float x[8]);
main()
{
float a[8],ave;
int i,j;
for(i=1;i<=8;i++)
{
printf("第%d个评委分数:",i);
scanf("%f",&a[i]);
}
fenshu(a);
printf("最高分为:%.1f",a[i]);
printf("最低分为:%.1f",a[j]);
printf("平均分为:%.1f",ave);
}
void fenshu(float x[8])
{
int i,j;
float max,min,ave;
max=x[1];
for(i=1;i<=8;i++)
{
if(x[i]>x[1])
max=x[i];
}
min=x[1];
for(j=1;j<=8;j++)
{
if(x[j]<x[1])
min=x[j];
}
ave=(max+min)/8;
}
展开
 我来答
LymoM327
2012-11-28
知道答主
回答量:17
采纳率:0%
帮助的人:9.9万
展开全部
ave=(max+min)/8;。。。。亲 是去掉最高最低分的剩下6个计算平均分。。你这是最高最低计算平均分。。 而且 怎么说也该除6啊。。不是8啊。。。

#include<stdio.h>
void fenshu(float x[8]);
main()
{
float a[8];
int i,j;
for(i=0;i<8;i++)
{
printf("第%d个评委分数:",i+1);
scanf("%f",&a[i]);
}
fenshu(a);
return 0;
}
void fenshu(float x[8])
{
int i;
float max,min,ave,sum=0;
max=x[0];
for(i=0;i<8;i++)
{
if(x[i]>x[0])
max=x[i];
sum+=x[i];
}
min=x[0];
for(i=0;i<8;i++)
{
if(x[i]<x[0])
min=x[i];
}
ave=(sum-min-max)/6;
printf("最高分为:%.1f",max);
printf("最低分为:%.1f",min);
printf("平均分为:%.1f",ave);
}

输出:

第1个评委分数:0
第2个评委分数:10
第3个评委分数:20
第4个评委分数:30
第5个评委分数:40
第6个评委分数:50
第7个评委分数:60
第8个评委分数:100
最高分为:100.0最低分为:0.0平均分为:35.0
透彻还轻柔灬萨摩
2012-11-28 · TA获得超过197个赞
知道答主
回答量:83
采纳率:0%
帮助的人:68.2万
展开全部
首先:main函数里面,你输出的时候,i,j的值是怎么来,你想过没有,照你写的,i=9,j是随机数
你怎么输出对应的值???
然后:fenshu函数,两个for循环,只是在求比x[1]大的或者小的最后一个数
并不是最大值和最小值
建议:函数参数里面得最大值和最小值的下标
float fenshu(float x[8],int max_index, int min_index)
{
int i;
float sum=0;
max_index = min_index =1;
for(i = 2; i <= 8; i++)
{
if(x[i] > x[max_index])//求最大值
max_index = i;
if(x[i] < x[max_index])
min_index = i;
}
for(i = 1; i <= 8; i++)
sum += x[i];
return sum/8
}
注意:函数调用的时候,fenshu(a,&max,&min)
其中max和min是float类型,保存最大值和最小值的下标
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
戈清宁46
2012-11-28 · 超过27用户采纳过TA的回答
知道答主
回答量:83
采纳率:0%
帮助的人:63.4万
展开全部
#include<stdio.h>
float fenshu(float x[8],int M,int N);
main()
{
float a[8],ave,max,min;
int i;
for(i=0;i<8;i++)
{
printf("第%d个评委分数:",i+1);
scanf("%f",&a[i]);
}
max=a[0];
min=a[0];
for(i=1;a<8;a++)
{
if(a[i]>max)max=a[i];
if(a[i]<min)min=a[i];
}
ave=fenshu(a,max,min);
printf("最高分为:%.1f",max);
printf("最低分为:%.1f",min);
printf("平均分为:%.1f",ave);
}
float fenshu(float x[8],int M,int N)
{
int i;
float sum=0;
float ave;
for(i=0;i<8;i++)
{sum+=a[i];}
ave=(sum-M-N)/6;
return ave;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-28
展开全部
int i,j; 去掉
float max,min,ave; 去掉ave
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式