C语言英语比赛5位选手5位评委求选手平均分并排序

如题所述

#include <stdio.h>
#include <conio.h>

void main()
{
int a,b,c,d,e,flag=1;
int i,j;
float average[6],result[6],temp;
for(i=1;i<6;i++)
{
printf("输入选手%d的五个分数\n",i);
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
printf("\n");
average[i]=1.0*(a+b+c+d+e)/5;
printf("平均分为%.2f\n\n",average[i]); /*保留一位小数*/
}

for(i=1;i<6;i++)
{
result[i]=average[i];
}

for(j=1;j<=5;j++) /*冒泡排序*/
{
for (i=1;i<6-j;i++)
if (average[i]>average[i+1])
{
flag++;
temp=average[i];

average[i]=average[i+1];

average[i+1]=temp;
}
}

printf("从高到低排序为:\n");

for(i=5;i>0;i--)
{
printf("得分:%.2f\t",average[i]);
for(j=1;j<6;j++)
{
if (result[j]==average[i])
{
printf("选手%d\n",j);
break;
}
else
{
continue;
}
}
}
getch();
}

以上程序我已调试成功,如果有问题可以尽管问我哦~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-25
昨天帮你写好忘记贴了。。现在贴上来。。希望能对你有所帮助。。
#include<stdio.h>

void sortAndOutput(double player[])
{
int i=0,j,sign,sum=0;
double num;
printf("比赛结果\n");
for(;i<5;i++)//找出最高分
{
sign=0;
for(j=0;j<5;j++)
{
if(player[sign]<player[j])
{
sign=j;
}
}
num=player[sign];
printf("第%d名是",i+1);
for(j=0;j<5;j++)//考虑同分同名情况
{
if(num==player[j])
{
sum++;
player[j]=0;
printf("第%d位选手,",j+1);
}

}
printf("平均分为%lf\n",num);
if(sum==5)
{
break;
}
}
}

void inputAndExcute()
{
double player[5],judger;
int i,j;
for(i=0;i<5;i++)
{
player[i]=0;
for(j=0;j<5;j++)
{
printf("请输入第%d位评委给第%d位选手的成绩:",j+1,i+1);
scanf("%lf",&judger);
player[i]+=judger;
}
printf("\n");
player[i]/=5;
}
sortAndOutput(player);
}

int main()
{
inputAndExcute();
return 0;
}本回答被网友采纳