(篇十)用结构体数组处理学生成绩、结构体类型函数求平均值

朴灿烈づ我的快乐病毒、 2023-07-24 09:13 125阅读 0赞

文章目录

        • 一、结构体变量
        • 二、用结构体数组处理学生成绩
        • 三、结构体类型函数求平均值

用C语言学好结构化编程逻辑!本篇主要分析结构体数组和结构体类型的函数,对于二级C语言来说,主要是考处理学生多个成绩上和求平均值上。两个实例的参考代码里面都有相应的注释,就不在外面分析了

一、结构体变量

C语言结构体(Struct)从本质上讲是一种自定义的数据类型,只不过这种数据类型比较复杂,是由 int、char、float 等基本类型组成的。你可以认为结构体是一种聚合类型。
在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再定义多个变量了,将它们都放到结构体中即可。
结构体

二、用结构体数组处理学生成绩

1、参考代码:

  1. #include <stdio.h>
  2. #define N 5
  3. int main()
  4. {
  5. struct student{
  6. char number[7];
  7. char name[7];
  8. int age;
  9. float score[3];
  10. };
  11. int i;
  12. struct student s[N]= { { "130101","Lily",20,78,86,66},
  13. { "130105","Poul",18,85,92,66},
  14. { "134522","Dev",16,83,83,66},
  15. { "103247","Jaun",21,75,94,66},
  16. { "130105","Chen",23,96,72,66} };
  17. printf(" 学号 姓名 年龄 数学 语文 英语\n");
  18. for(i=0; i<N; i++)
  19. {
  20. printf("%6s %6s %4d %6.1f %5.1f %5.1f\n",s[i].number, s[i].name, s[i].age, s[i].score[0], s[i].score[1], s[i].score[2]);
  21. }
  22. getchar();
  23. }

2、参考结果:
结构体学生成绩

三、结构体类型函数求平均值

1、参考代码:

  1. #include <stdio.h>
  2. #define N 5
  3. struct student{
  4. char number[7];
  5. char name[7];
  6. int age;
  7. float score[3];
  8. };
  9. struct score average(struct student *p, int n); //申明结构体类型函数
  10. struct score{
  11. float sx; //数学,语文,英语
  12. float yw;
  13. float yy;
  14. };
  15. main()
  16. {
  17. struct student s[N]= { { "130101","Lily",20,78,86,66},
  18. { "130105","Poul",18,85,92,66},
  19. { "134522","Dev",16,83,83,66},
  20. { "103247","Jaun",21,75,94,66},
  21. { "130105","Chen",23,96,72,66} };
  22. struct score as;
  23. as=average(s,5); //传入结构体数组和学生个数
  24. printf("数学平均成绩:%4.1f\n",as.sx);
  25. printf("语文平均成绩:%4.1f\n",as.yw);
  26. printf("英语平均成绩:%4.1f\n",as.yy);
  27. getchar();
  28. }
  29. struct score average(struct student * p, int n) //结构体类型函数,接受结构体类型数组和学生个数 ,用于返回结构日类型数组s
  30. {
  31. struct score s= { 0,0,0}; //结构体类型数组赋初值
  32. int i;
  33. for(i=0; i<n; i++)
  34. {
  35. s.sx+= (p+i)->score[0]; //利用线性链表,指针每向右移动 i 个,将其内的score数组内的语数英成绩加到对应的s.sx, s.yw, s.yy上
  36. s.yw+= (p+i)->score[1];
  37. s.yy+= (p+i)->score[2];
  38. }
  39. s.sx /= 5; //将总分除5求得平均值
  40. s.yw /= 5;
  41. s.yy /= 5;
  42. return s; //返回结构体数组 struct student s
  43. }

2、参考结果:
平均值

发表评论

表情:
评论列表 (有 0 条评论,125人围观)

还没有评论,来说两句吧...

相关阅读