这个问题这样写为什么不出结果?

有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)

#include
struct STUDENT
{
    char num[10];
    char name[10];
    int sort1;
    int sort2;
    int sort3;
};
void input(struct STUDENT *stu,int n)
{
    int i;
    for(i=0;iscanf("%s%s%d%d%d",&stu[i].num,&stu[i].name,&stu[i].sort1,&stu[i].sort2,&stu[i].sort3);
}
void output(struct STUDENT *stu,int n)
{
    int i,*p,p1=0,p2=0,p3=0,t=0;
    for(i=0;ifor(i=1;iif(p[t]printf("%d %d %d\n",p1/n,p2/n,p3/n);
    printf("%s %s %d %d %d\n",stu[t].num,stu[t].name,stu[t].sort1,stu[t].sort2,stu[t].sort3);
}
int main()
{
    int N;
    scanf("%d",&N);
    struct STUDENT student[N];
    input(student,N);
    output(student,N);
    return 0;
}



#include<stdio.h>
struct STUDENT
{
    char num[10];
    char name[10];
    int sort1;
    int sort2;
    int sort3;
};
void input(struct STUDENT *stu,int n)
{
    int i;
    for(i=0;i<n;i++)
    scanf("%s%s%d%d%d",stu[i].num,stu[i].name,&stu[i].sort1,&stu[i].sort2,&stu[i].sort3);//字符串不要加&
}
void output(struct STUDENT *stu,int n)
{
    int i,p[100],p1=0,p2=0,p3=0,t=0;
    for(i=0;i<n;i++)
    {
        p[i]=stu[i].sort1+stu[i].sort2+stu[i].sort3;//这里多了逗号,而且p没有分配内存
        p1=p1+stu[i].sort1;
        p2=p2+stu[i].sort2;
        p3=p3+stu[i].sort3; 
    }
    for(i=1;i<n;i++)
        if(p[t]<p[i])t=i;
    printf("%d %d %d\n",p1/n,p2/n,p3/n);
    printf("%s %s %d %d %d\n",stu[t].num,stu[t].name,stu[t].sort1,stu[t].sort2,stu[t].sort3);
}
int main()
{
    int N;
    struct STUDENT student[100];//除非C99,否则不支持变量作为字符串长度
    //所有的定义应该在其他代码之前
    scanf("%d",&N);
    input(student,N);
    output(student,N);
    return 0;
}
 
 

struct STUDENT student[N];

定义一个数组,要用一个静态的数值,例如 100, 不能用输入来的 N 值,你改为 100 试试看。

建议输入字符串类型的使用strcpy函数