请问我这个代码有什么问题呢

//定义一个存放学生信息的结构体类型,(包含:学生姓名,学号,三科成绩),将10个学生的信息保存在变量中,
//定义一个按成绩排序的函数,将学生按总成绩的排名排序,在主函数中按成绩的高底顺序输出所有学生的信息。
#include
#include
struct student
{
char name[10];
int num;
int grade1;
int grade2;
int grade3;
};
void f(struct student stu[],int n);
int main()
{
int i;
struct student stu[10]={"li",101,90,90,90,"wang",102,80,80,80,"zhang",103,80,87,88,"liu",104,60,70,80,"fang",105,90,80,77,"hai",106,99,80,77,
"hu",107,70,70,70,"he",108,80,86,77,"tai",109,60,60,60,"gang",110,80,86,88 };
f(stu,10);
for(i=0;i {
printf("%s%4d%4d%4d%4d",stu[i].name ,stu[i].num ,stu[i].grade1,stu[i].grade2,stu[i].grade3);
printf("\n");
}
return 0;
}
void f(struct student stu[],int n)
{
int i,j;
struct student s1;
int sum[10];
for(i=0;i {
sum[i]=stu[i].grade1+stu[i].grade2+stu[i].grade3;
}
for(i=0;i for(j=1;j if(sum[j-1]>sum[j])
{
s1=stu[j-1];
stu[j-1]=stu[j];
stu[j]=s1;
}
}

https://wenwen.sogou.com/z/q762159532.htm