c9-7.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #include <stdio.h>
  2. #define N 3 // 学生数为3
  3. struct student // 建立结构体类型struct student
  4. {int num; // 学号
  5. char name[20]; // 姓名
  6. float score[3]; // 3门课成绩
  7. float aver; // 平均成绩
  8. };
  9. int main()
  10. {void input(struct student stu[]); // 函数声明
  11. struct student max(struct student stu[]); // 函数声明
  12. void print(struct student stu); // 函数声明
  13. struct student stu[N],*p=stu; // 定义结构体数组和指针
  14. input(p); // 调用input函数
  15. print(max(p)); // 调用print函数,以max函数的返回值作为实参
  16. return 0;
  17. }
  18. void input(struct student stu[]) // 定义input 函数
  19. {int i;
  20. printf("请输入各学生的信息:学号、姓名、三门课成绩:\n");
  21. for(i=0;i<N;i++)
  22. {scanf("%d %s %f %f %f",&stu[i].num,stu[i].name,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]); // 输入数据
  23. stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0; // 求各人平均成绩
  24. }
  25. }
  26. struct student max(struct student stu[]) // 定义max 函数
  27. {int i,m=0; // 用m存放成绩最高的学生在数组中的序号
  28. for(i=0;i<N;i++)
  29. if (stu[i].aver>stu[m].aver) m=i; // 找出平均成绩最高的学生在数组中的序号
  30. return stu[m]; // 返回包含该生信息的结构体元素
  31. }
  32. void print(struct student stud) // 定义print函数
  33. { printf("\n成绩最高的学生是:\n");
  34. printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",stud.num,stud.name,stud.score[0],stud.score[1],stud.score[2],stud.aver);
  35. }