编写程序, 输入10个学生3门课的成绩, 计算每个学生的平均成绩,按平均成绩降序排列并打印出结果??

#include"string.h"
#define M 3
#define N 3
main()
{
int i,j,t;
float total=0;
char name[M][5];
char change[1][5];
int score[M][N];
float average[M];
for(i=0;i<M;i++)
{ printf("name:");
scanf("%s",name[i]);
printf("score:");
for(j=0;j<N;j++)
{
scanf("%d",&score[M][N]);
total+=score[M][N];

}
average[i]=total/N;

}

for(i=0;i<M-1;i++)
{
for(j=0;j<M-1-i;j++)
if(average[j]<average[j+1])
{
t=average[j];average[j]=average[j+1];average[j+1]=t;
strcpy(change[1],name[j]);
strcpy(name[j],name[j+1]);
strcpy(name[j+1],change[1]);

}

}
for(i=0;i<M;i++)
{
printf("%s:",name[i]);
printf("%5d",average[i]);

}

getch();
}
我写得代码 语法没错 帮我看下逻辑···

#include"string.h"
#define M 10 /*10个学生*/
#define N 3
main()
{
int i,j; /*t的精度不够高 必须为float型*/
float t;
float total=0;
char name[M][5];
char change[1][5];
float score; /*这个就可以, 若是int score[M][N] 最大到score[M-1][N-1]*/
float average[M];

clrscr();
for(i=0;i<M;i++)
{
total = 0; /*here*/
printf("name:");
scanf("%s",name[i]);
printf("score:");
for(j=0;j<N;j++)
{
scanf("%f",&score); /*分数可能有小数 用%f*/
total+=score;

}
average[i] = total/N;
}

for(i=0;i<M-1;i++)
{
for(j=0;j<M-1-i;j++)
if(average[j]<average[j+1])
{
t=average[j];average[j]=average[j+1];average[j+1]=t;
strcpy(change[0],name[j]); /*由于是change[1]最大到change[0]*/
strcpy(name[j],name[j+1]);
strcpy(name[j+1],change[0]);
}

}
for(i=0;i<M;i++)
{
printf("%s:",name[i]);
printf("%f\n",average[i]);/*按%f输出*/
}

getch();
}


温馨提示:答案为网友推荐,仅供参考
相似回答