首页 > 编程 > C > 正文

C语言 结构体数组详解及示例代码

2020-01-26 14:27:36
字体:
来源:转载
供稿:网友

所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。

定义结构体数组和定义结构体变量的方式类似,请看下面的例子:

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 average, sum = 0;  for(i=0; i<5; i++){    sum += class[i].score;    if(class[i].score < 140) num_140++;  }  printf("sum=%.2f/naverage=%.2f/nnum_140=%d/n", sum, sum/5, num_140);  return 0;}

运行结果:

sum=707.50
average=141.50
num_140=2

以上就是对C语言结构体数组的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选