1
0

20_comprehensive.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * 示例20:综合练习(Comprehensive)
  3. * 功能:综合运用前面学到的知识,实现一个简单的学生成绩管理系统
  4. * 包含:结构体、数组、函数、循环、条件判断、输入输出
  5. */
  6. #include <stdio.h>
  7. #include <string.h>
  8. // 定义学生结构体
  9. typedef struct {
  10. char name[20]; // 姓名
  11. int score; // 成绩
  12. } Student;
  13. // 函数:输入学生信息
  14. void inputStudents(Student students[], int n) {
  15. for (int i = 0; i < n; i++) {
  16. printf("请输入第 %d 个学生的姓名:", i + 1);
  17. scanf("%s", students[i].name);
  18. printf("请输入 %s 的成绩:", students[i].name);
  19. scanf("%d", &students[i].score);
  20. }
  21. }
  22. // 函数:显示所有学生信息
  23. void showStudents(Student students[], int n) {
  24. printf("\n=== 学生成绩列表 ===\n");
  25. printf("序号\t姓名\t成绩\n");
  26. for (int i = 0; i < n; i++) {
  27. printf("%d\t%s\t%d\n", i + 1, students[i].name, students[i].score);
  28. }
  29. }
  30. // 函数:计算平均分
  31. float averageScore(Student students[], int n) {
  32. int sum = 0;
  33. for (int i = 0; i < n; i++) {
  34. sum += students[i].score;
  35. }
  36. return (float)sum / n;
  37. }
  38. // 函数:找出最高分的学生
  39. void findTopStudent(Student students[], int n) {
  40. int maxIndex = 0;
  41. for (int i = 1; i < n; i++) {
  42. if (students[i].score > students[maxIndex].score) {
  43. maxIndex = i;
  44. }
  45. }
  46. printf("最高分学生:%s,成绩:%d\n",
  47. students[maxIndex].name, students[maxIndex].score);
  48. }
  49. int main() {
  50. int num;
  51. printf("请输入学生人数:");
  52. scanf("%d", &num);
  53. // 创建学生数组
  54. Student students[100];
  55. // 输入学生信息
  56. inputStudents(students, num);
  57. // 显示学生信息
  58. showStudents(students, num);
  59. // 计算并显示平均分
  60. float avg = averageScore(students, num);
  61. printf("\n平均分:%.2f\n", avg);
  62. // 找出最高分学生
  63. findTopStudent(students, num);
  64. return 0;
  65. }