体操比赛中,10名评委为5名选手打分,其分数已经存放在一个二维数组中,列出每个选手
的:最高分,最低分,平均分,中位分。
平均分算法:除去最高分和最低分后,剩下8位评委的分数平均值。
中位分:10个评分从高到低排列,第5位和第6位的平均分为中位分。
#include <stdio.h>
int main()
{
float a[1][10],max,min,sum;
int i,aver;
max=0;
min=100;
sum=0;
for(i=0;i<10;i++)
{
scanf("%f",&a[0][i]);
if(a[0][i]>max)
max=a[0][i];
if(a[0][i]<min)
min=a[0][i];
sum+=a[0][i];
}
aver = (sum-max-min)/8 ;
printf("aver:%d\n",aver);
return 0;
}
是要这个效果是吧
完整的代码:
#include <stdio.h>
#define num 10 // 十个评委
void star(void); //打印星号
void sort(float score[]); //从小到大排序
int main()
{
/* 创建一个带有 4行 5 列的数组 */
int a[5][10] = {
{80,92,85,86,99,80,92,85,86,80},
{78,65,89,70,99,80,92,85,86,77},
{67,78,76,89,99,80,92,85,86,76},
{88,68,98,90,99,80,92,85,86,73},
{80,92,85,86,99,80,92,85,86,72}
};
int c1, c2;
for (c1 = 0; c1 < 5; c1++){
int i;
float sum=0;
float average;
float score[10];
star(); //打印星号
printf("每个评委给您打的分数\n");
for (c2 = 0; c2 < 10; c2++)
{
score[c2] = a[c1][c2];
}
sort(score);
for(i=1; i<num-1; i++) //求去最高最低分后的总分
{
sum+=score[i];
}
average=sum/8; //求平均分
printf("\n去掉的最高分为:%0.2f\n", score[num-1]);
printf("\n去掉的最低分为:%0.2f\n", score[0]);
printf("\n您的中位分为:%0.2f,%0.2f\n", score[4],score[5]);
printf("\n去掉最高分最低分后,您的平均分为:%0.2f\n", average);
}
star(); //打印星号
return 0;
}
//排序函数
void sort(float score[]) //从小到大排序
{
int i;
int j;
float t; // 用于交换数
for(i=0; i<num; i++)
{
for(j=i; j<num; j++)
{
if(score[i]> score[j])
{
t= score[i];
score[i]= score[j];
score[j]=t;
}
}
}
}
//star函数
void star(void)
{
int i;
for(i=0; i<60; i++)
{
printf("*");
}
printf("\n");
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员【8折】购 ,仅需→23.2元,即可享受5次/月 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m