请各位前辈帮忙纠错!
请各位前辈帮忙纠一下错,另外,不知道为什么,最后显示1、2、3名的时候会出现他们的随机名字,请指点!/*编写程序处理10个学生的信息,每个学生的信息包括:学号、姓名、三门成绩。要求从键盘输入学生的数据用一个函数实现,输出成绩表(包括每个学生的学号、姓名、三门成绩及平均分数)用一个函数,再用一个函数输出平均分在前3名的学生姓名及平均分。*/
#include"stdio.h"
struct STUDENT
{
int number;
char name[10];
int chinese;
int math;
int english;
float average;
};
void main()
{
int i,j;
float x;
char n[20];
struct STUDENT student[10];
printf("请输入学号 姓名 语文 数学 英语:\n");
for(i=0;i<10;i++)
{
scanf("%d %s %d %d %d",&student[i].number,&student[i].name,&student[i].chinese,&student[i].math,&student[i].english);
student[i].average=(student[i].chinese+student[i].math+student[i].english)/3;
}
for(i=0;i<10;i++)
{
printf("学号 姓名 语文 数学 英语 平均分\n");
printf("%d %s %d %d %d %f\n",student[i].number,student[i].name,student[i].chinese,student[i].math,student[i].english,student[i].average);
}
for(i=0;i<10;i++)
{
for(j=0;j<9-i;j++)
{
if(student[j].average<student[j+1].average)
{
x=student[j].average;
student[j].average=student[j+1].average;
student[j+1].average=x;
n[20]=*student[j].name;
*student[j].name=*student[j+1].name;
*student[j+1].name=n[20];
}
}
}
printf("\n\n\n\n");
for(i=0;i<3;i++)
printf("第%d名的姓名:%s 平均成绩:%f\n",i+1,student[i].name,student[i].average);
}