我的程序为什么不能找出冠军和亚军,季军?
#include<stdio.h>#define M 10
#define N 10
/* 假设参赛选手共有10个,如果有30个则,N的值为30 */
main()
{
int i,j;int scor[N][M]; int k,a,b,c;
float avemax,avetwo,avethird;
float t=0,max,min,sum[N],ave[N];
system( "graftabl 936 "); /*调用Ms-Dos中文支持 */
clrscr();
printf(" *************************************************\n\n");
printf(" 卡拉OK大奖赛评分系统\n\n");
printf(" *************************************************\n\n");
printf(" 本次大赛评分规则:\n");
printf(" 本次大赛的裁判委员会由十名国际顶级裁判组成,参赛\n 选手的最终成绩是去掉一个最低分和一个最高分,然后\n 求取平均值即为最终得分,按成绩由高到低取前三名.\n\n");
printf(" *************************************************\n");
printf(" 第一届中华杯校园歌手卡拉OK大赛正式开始\n");
printf("请输入选手的得分(1~100):)\n");
for(i=0;i<N;i++)/* 选手的顺序 */
{
for(j=0;j<M;j++)/* 裁判的顺序 */
{ printf("请输入第%d个选手的第%d个裁判得分:\t",i+1,j+1);
scanf("%d",&scor[i][j]);
while(scor[i][j]<1||scor[i][j]>100)
{
printf("你的输入的有错,请重新输入:\n");
scanf("%d",&scor[i][j]);
}
}
}/* 输入选分的得分到数级SCOR中 */
printf("各位选手的平均得分是:");
printf("去掉一个最高分:\t");
printf("再去掉一个最低分:\t");
for(i=0;i<N;i++)
{
sum[i]=0;
max=min=scor[i][0];
for(j=0;j<M;j++)
{
if(max<=scor[i][j])max=scor[i][j];
if(min>=scor[i][j])min=scor[i][j];
sum[i]+=scor[i][j];
}/* 找出最高分和最低分 */
ave[i]=(sum[i]-max-min)/8;
printf("%.2f\t",ave[i]);
}
avemax=avetwo=avethird=ave[0];
a=b=c=0;
for(k=1;k<N;k++)
{
if(avemax<ave[k])
{
avemax=ave[k];
a=k+1;
}
}
for(k=1;k<N;k++)
{
if(avetwo<ave[k]&&avetwo<avemax&&avemax!=ave[k])
{
avetwo=ave[k];
b=k+1;
}
}
for(k=1;k<N;k++)
{ if(avethird<ave[k]&&avethird<avemax&&avethird<avetwo&&avemax!=ave[k]&&avetwo!=ave[k])
{
avethird=ave[k];
c=k+1;
}
}/* 找出第一名第二名第三名 */
printf("本届比赛冠军为%d号!恭喜!!\n",a);
printf("本届比赛亚军为%d号!恭喜!!\n",b);
printf("本届比赛季军为%d号!恭喜!!\n",c);
getch();
}