我想设计一个歌唱大赛评分系统
我的思路是这样的:第一步、定义一个二维数组grade[M][N],表示有N个裁判,M个选手;
第二部、然后写一个子函数来求每个选手的最后得分(标准和一般的比赛一致,去掉最高最低什么的);
第三部、将所有选手的最后得分写进一个新的数组中,在排序输出。
下面是我写的代码,稍微调试了一下,但是在输入分数的时候会莫名其妙的中断,希望大家能看一下,指出我的错误,谢谢。
#include<stdio.h>
#define M 3
#define N 3
int main()
{
void maopao(float *p);
float pingjun(float (*p)[N],int n);
float grade[M][N];
float zhongfen[M];
int i,j,k;
printf("请输入各个选手的成绩:\n");
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
scanf("%f",grade[i][j]);
}
for(j=0;j<M;j++)
{
zhongfen[j]=pingjun(grade,j);
}
printf("有%d个评委评分,%d个选手参赛的最后得分;\n",N,M);
}
/*冒泡排序法*/
void maopao(float *p)
{
int i,j,k;
for(i=0;i<M-1;i++)
for(j=0;j<M-1-i;j++)
{
k=*p;
*p=*(p+1);
*(p+1)=k;
}
for(k=0;k<M;k++)
{
printf("%f",*(p+k));
}
printf("\n");
}
/*求各个选手的最后得分*/
float pingjun(float (*p)[N],int n)
{
int i,j;
float max,sum=0;
max=*(*(p+n));
for(i=0;i<N;i++)
{
sum+=*(*(p+n)+i);
}
for(i=0;i<N;i++)
{
if(max<*(*(p+n)+i))
{
max=*(*(p+n)+i);
}
}
sum-=max;
for(i=0;i<N;i++)
{
if(max>*(*(p+n)+i))
{
max=*(*(p+n)+i);
}
}
sum-=max;
sum=sum/(N-2);
return sum;
}