user-0 提问: 请大神帮我看看，为什么会一直报错，C语言的程序设计

回复:
user: user-0
content: 引用 2 楼 顾球球循环的回复:#include <stdio.h> #include <stdlib.h> #define N 3 //定义学生人数 N 为 3  struct student //建立结构体类型 struct student   {  int num; //学生的学号  char name[10]; //学生的姓名  float score[3]; //三门课程的成绩  float aver; //课程平均成绩  };  void input(struct student stu[])  //定义input()函数，用于输入学生的信息 { int i; printf("请输入各学生的信息：学号、姓名、三门课程的成绩：\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.0; //求课程的平均成绩 stu[i].aver  } }   void student_max(struct student stu[])  //错误在这里，不过因为我也是个半吊子不太会改了orz你看看你会不会改。  {   int i, m = 0; for(i=1; i<N; i++) if(stu[i].aver > stu[m].aver)  m=i; return stu[m]; }  void print_aver_max(struct student stud) { printf("\n成绩最高的学生是：\n"); printf("学号 姓名 成绩1 成绩2 成绩3 平均成绩\n"); printf("%5d %20s %5.1f %5.1f %5.1f %6.2f\n",stud.num, stud.name, stud.score[0], stud.score[1], stud.score[2], stud.aver);  }   void  print_all(struct student stud[]) { int i; printf("\n所有学生是：\n"); printf("学号 姓名 成绩1 成绩2 成绩3 平均成绩\n"); for(i=0; i<N; i++) printf("%5d %10s %5.1f %5.1f %5.1f %6.2f\n",stud[i].num, stud[i].name, stud[i].score[0], stud[i].score[1], stud[i].score[2],stud[i].aver);  }  void print_aver(struct student stu[])//sort改成print  { int i,j,k; struct student t; for(i=0;i<N-1;i++) printf("%5d %10s %5.1f %5.1f %5.1f %6.2f\n",stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2],stu[i].aver);  }  void sort_aver(struct student stu[]) { int i,j,k; struct student t; for(i=0;i<N-1;i++) { k = i; for(j = i + 1; j < N; j++) if(stu[j].aver > stu[k].aver) k = j; t = stu[k]; stu[k] = stu[i]; stu[i] = t;   } }  int main() { struct student stu[N],stumax,*p; p = stu;  input(p); student_max(p); print_aver_max(stumax); sort_aver(p); print_all(p);  system("pause"); return 0;   }   我只会改到这了orz其实没改啥都是细节问题，编译完了好好检查下啊喂。 结构体忘得差不多了，标出来的那个地方，你可以查一下关于“函数返回值是数组”的帖子，我基础知识忘太多了看不懂了TvT 谢谢谢谢，谢谢谢谢，谢谢

user: user-1
content: #include <stdio.h> #include <stdlib.h> #define N 3 //定义学生人数 N 为 3  struct student //建立结构体类型 struct student   {  int num; //学生的学号  char name[10]; //学生的姓名  float score[3]; //三门课程的成绩  float aver; //课程平均成绩  };  void input(struct student stu[])  //定义input()函数，用于输入学生的信息 { int i; printf("请输入各学生的信息：学号、姓名、三门课程的成绩：\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.0; //求课程的平均成绩 stu[i].aver  } }   void student_max(struct student stu[])  //错误在这里，不过因为我也是个半吊子不太会改了orz你看看你会不会改。  {   int i, m = 0; for(i=1; i<N; i++) if(stu[i].aver > stu[m].aver)  m=i; return stu[m]; }  void print_aver_max(struct student stud) { printf("\n成绩最高的学生是：\n"); printf("学号 姓名 成绩1 成绩2 成绩3 平均成绩\n"); printf("%5d %20s %5.1f %5.1f %5.1f %6.2f\n",stud.num, stud.name, stud.score[0], stud.score[1], stud.score[2], stud.aver);  }   void  print_all(struct student stud[]) { int i; printf("\n所有学生是：\n"); printf("学号 姓名 成绩1 成绩2 成绩3 平均成绩\n"); for(i=0; i<N; i++) printf("%5d %10s %5.1f %5.1f %5.1f %6.2f\n",stud[i].num, stud[i].name, stud[i].score[0], stud[i].score[1], stud[i].score[2],stud[i].aver);  }  void print_aver(struct student stu[])//sort改成print  { int i,j,k; struct student t; for(i=0;i<N-1;i++) printf("%5d %10s %5.1f %5.1f %5.1f %6.2f\n",stu[i].num, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2],stu[i].aver);  }  void sort_aver(struct student stu[]) { int i,j,k; struct student t; for(i=0;i<N-1;i++) { k = i; for(j = i + 1; j < N; j++) if(stu[j].aver > stu[k].aver) k = j; t = stu[k]; stu[k] = stu[i]; stu[i] = t;   } }  int main() { struct student stu[N],stumax,*p; p = stu;  input(p); student_max(p); print_aver_max(stumax); sort_aver(p); print_all(p);  system("pause"); return 0;   }   我只会改到这了orz其实没改啥都是细节问题，编译完了好好检查下啊喂。 结构体忘得差不多了，标出来的那个地方，你可以查一下关于“函数返回值是数组”的帖子，我基础知识忘太多了看不懂了TvT

user: user-1
content: 第3行define写错了，第19行漏了分号，第53行结构体名称写错。其他的我再看看。