程序编译有错误,但是不知道错误在哪,希望比我厉害指导指导我?

#include<stdio.h>
#define N 3
struct student
{
int num;
char name[20];
float score[3],aver;
}a;
int main()
{
void input(struct student stu[]);
void print(struct student stu[]);
struct student max(struct student stu[]);
struct student stu[N];
input(stu);
a=max(stu);
print(a);
return 0;
}
void input (struct student stu[])
{
int i;
printf("请输入各学生的信息:学号,姓名,3门课成绩:\n");
for(i=0;i<N;i++)
{
scanf("%d %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;
}
}
struct student max(struct student stu[])
{
int m=0;
int i;
for(i=0;i<N;i++)
if(stu[i].aver>stu[m].aver)
m=i;
return stu[m];
}
void print(struct student stu[])
{
printf("成绩最高的学生是:");
printf("学号:%d\n姓名:%s\n三门成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.1f",stu.num,stu.name,stu.score[0],stu.score[1],stu.score[2],stu.aver);

}

错误太多:

  1. 最后的printf里面逗号是中文的,改成英文。
  2. main函数里面print(a),这句话是错误的,c语言没有print
  3. 还有好多错,好好学习吧。
#include <stdio.h>
#define N 3
struct student
{
   int num;
   char name[20];
   float score[3], aver;
} a;
int main()
{
   void input(struct student stu[]);
   void print(struct student stu);
   struct student max(struct student stu[]);
   struct student stu[N];
   input(stu);
   a = max(stu);
   print(a);
   return 0;
}
void input(struct student stu[])
{
   int i;
   printf("请输入各学生的信息:学号,姓名,3门课成绩:\n");
   for (i = 0; i < N; i++)
   {
      scanf("%d %s %f %f %f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
      stu[i].aver = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3;
   }
}
struct student max(struct student stu[])
{
   int m = 0;
   int i;
   for (i = 0; i < N; i++)
   {
          if (stu[i].aver > stu[m].aver)
          {
              m = i;
          }
   }
   return stu[m];
}
void print(struct student stu)
{
   printf("成绩最高的学生是:");
   printf("学号:%d\n姓名:%s\n三门成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.1f",stu.num, stu.name, stu.score[0], stu.score[1], stu.score[2], stu.aver);
}

你的问题主要有一下几点

  1. print函数里面第2行是中文逗号
  2. print函数不应该接受一个数组,而是接受一个结构体
  3. 其实按照命名规范print改名成printMax会更合适一点

改了一下你的代码,现在可以直接运行

#include <stdio.h>
#define N 3
struct student
{
   int num;
   char name[20];
   float score[3], aver;
} a;
int main()
{
   void input(struct student stu[]);
   void print(struct student stu);
   struct student max(struct student stu[]);
   struct student stu[N];
   input(stu);
   a = max(stu);
   print(a);
   return 0;
}
void input(struct student stu[])
{
   int i;
   printf("请输入各学生的信息:学号,姓名,3门课成绩:\n");
   for (i = 0; i < N; i++)
   {
      scanf("%d %s %f %f %f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
      stu[i].aver = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3;
   }
}
struct student max(struct student stu[])
{
   int m = 0;
   int i;
   for (i = 0; i < N; i++)
      if (stu[i].aver > stu[m].aver)
         m = i;
   return stu[m];
}
void print(struct student stu)
{
   printf("成绩最高的学生是:");
   printf("学号:%d\n姓名:%s\n三门成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.1f",stu.num, stu.name, stu.score[0], stu.score[1], stu.score[2], stu.aver);
}

#include<stdio.h>
#define N 3
struct student
{
int num;
char name[20];
float score[3], aver;
}a;
int main()
{
void input(struct student stu[]);
void print(struct student stu[]);
struct student max(struct student stu[]);
struct student stu[N];
input(stu);
a = max(stu);
print(&a);
return 0;
}
void input(struct student stu[])
{
int i;
printf("请输入各学生的信息:学号,姓名,3门课成绩:\n");
for (i = 0; i < N; i++)
{
scanf("%d %s %f %f %f", &stu[i].num, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
stu[i].aver = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3;
}
}
struct student max(struct student stu[])
{
int m = 0;
int i;
for (i = 0; i < N; i++)
if (stu[i].aver > stu[m].aver)
m = i;
return stu[m];
}
void print(struct student stu[])
{
printf("成绩最高的学生是:");
printf("学号:%d\n姓名:%s\n三门成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.1f",stu->num, stu->name, stu->score[0], stu->score[1], stu->score[2], stu->aver);

}