c语言编程:歌唱比赛评委评分系统

#include <stdio.h>

#include<string.h>

void main()

{

int i,j,m,n;

float num,xgrade[100],max,min,pgrade[100],pdis[100];

char str[10],xname[100][10],pname[100][10];

printf("请输入评委人数:");

scanf("%d",&m);

printf("\n请分别输入评委姓名:\n");

for(i=0;i<m;i++)

{

scanf("%s",&pname[i]);//评委姓名

pgrade[i]=0;//评委给的分

pdis[i]=0;//评委给分和最后结果的差距

}

printf("\n请输入选手人数:");

scanf("%d",&n);

printf("\n请分别输入选手姓名:\n");

for(i=0;i<n;i++)

{

scanf("%s",&xname[i]);//选手姓名

xgrade[i]=0;//选手成绩

}

for(i=0;i<n;i++)

{

max=0;min=10;//评委给选手的最大最小成绩

printf("\n请给选手%s打分!",xname[i]);

for(j=0;j<m;j++)

{

printf("\n%s老师给的分数为:",pname[j]);

scanf("%f",&pgrade[j]);

xgrade[i]+=pgrade[j];//加到该选手的总分数中

if(max<pgrade[j])

max=pgrade[j];

if(min>pgrade[j])

min=pgrade[j];

}

xgrade[i]=(xgrade[i]-max-min)/(m-2);//最后成绩为总成绩-最高分-最低分,然后平均

for(j=0;j<m;j++)//算出每个评委本次评分和最终成绩的差,加到pdis中保存起来

{

pdis[j]+=pgrade[j]>xgrade[i]?(pgrade[j]-xgrade[i]):(xgrade[i]-pgrade[j]);

}

}

for(i=0;i<n-1;i++)

for(j=0;j<n-1-i;j++)

if(xgrade[j]<xgrade[j+1])

{

strcpy(str,xname[j]);

strcpy(xname[j],xname[j+1]);

strcpy(xname[j+1],str);

num=xgrade[j];

xgrade[j]=xgrade[j+1];

xgrade[j+1]=num;

}

printf("\n选手按名次排名为:\n");

printf("选手名\t得分\n");

for(i=0;i<n;i++)

printf("%s\t%f\n",xname[i],xgrade[i]);

for(i=0;i<m-1;i++)

for(j=0;j<m-1-i;j++)

if(pdis[j]>pdis[j+1])

{

strcpy(str,pname[j]);

strcpy(pname[j],pname[j+1]);

strcpy(pname[j+1],str);

num=pdis[j];

pdis[j]=pdis[j+1];

pdis[j+1]=num;

}

printf("\n评委按名次排名为:\n");

printf("评委名\t差分\n");

for(i=0;i<m;i++)

printf("%s\t%f\n",pname[i],pdis[i]);

}

vae.la