加入收藏 | 设为首页 | 会员中心 | 我要投稿 海南站长网 (https://www.0898zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C语言结构体数组详解 带实例演练

发布时间:2022-07-01 12:26:37 所属栏目:语言 来源:互联网
导读:所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。 在C语言中,定义结构体数组和定义结构体变量的方式类似,请看下面的例子: struct st
  所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。
 
  在C语言中,定义结构体数组和定义结构体变量的方式类似,请看下面的例子:
  struct stu{
      char *name;  //姓名
      int num;  //学号
      int age;  //年龄
      char group;  //所在小组
      float score;  //成绩
  }class[5];
  表示一个班级有5个学生。
 
  结构体数组在定义的同时也可以初始化,例如:
  struct stu{
      char *name;  //姓名
      int num;  //学号
      int age;  //年龄
      char group;  //所在小组
      float score;  //成绩
  }class[5] = {
      {"Li ping", 5, 18, 'C', 145.0},
      {"Zhang ping", 4, 19, 'A', 130.5},
      {"He fang", 1, 18, 'A', 148.5},
      {"Cheng ling", 2, 17, 'F', 139.0},
      {"Wang ming", 3, 17, 'B', 144.5}
  };
  当对数组中全部元素赋值时,也可不给出数组长度,例如:
  struct stu{
      char *name;  //姓名
      int num;  //学号
      int age;  //年龄
      char group;  //所在小组
      float score;  //成绩
  }class[] = {
      {"Li ping", 5, 18, 'C', 145.0},
      {"Zhang ping", 4, 19, 'A', 130.5},
      {"He fang", 1, 18, 'A', 148.5},
      {"Cheng ling", 2, 17, 'F', 139.0},
      {"Wang ming", 3, 17, 'B', 144.5}
  };
 
  结构体数组的使用也很简单,例如,获取 Wang ming 的成绩:
  class[4].score;
 
  修改 Li ping 的学习小组:
  class[0].group = 'B';
 
 
  【示例】计算全班学生的总成绩、平均成绩和以及 140 分以下的人数。
  #include <stdio.h>
  struct{
      char *name;  //姓名
      int num;  //学号
      int age;  //年龄
      char group;  //所在小组
      float score;  //成绩
  }class[] = {
      {"Li ping", 5, 18, 'C', 145.0},
      {"Zhang ping", 4, 19, 'A', 130.5},
      {"He fang", 1, 18, 'A', 148.5},
      {"Cheng ling", 2, 17, 'F', 139.0},
      {"Wang ming", 3, 17, 'B', 144.5}
  };
  int main(){
      int i, num_140 = 0;
      float sum = 0;
      for(i=0; i<5; i++){
          sum += class[i].score;
          if(class[i].score < 140) num_140++;
      }
      printf("sum=%.2fnaverage=%.2fnnum_140=%dn", sum, sum/5, num_140);
      return 0;
  }
  运行结果:
  sum=707.50
  average=141.50
  num_140=2
  关注公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。

(编辑:海南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!