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

 更新时间:2016年08月24日 09:41:04   投稿:lqh  
本文主要介绍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 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语言结构体数组的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

相关文章

  • C语言中初始、增加和删除进程信号的操作方法简介

    C语言中初始、增加和删除进程信号的操作方法简介

    这篇文章主要介绍了C语言中初始、增加和删除进程信号的操作方法简介,分别是sigemptyset函数、sigaddset函数和sigdelset函数的用法,需要的朋友可以参考下
    2015-09-09
  • Opencv 马赛克和毛玻璃效果与图片融合的实现

    Opencv 马赛克和毛玻璃效果与图片融合的实现

    这篇文章主要为大家详细介绍了通过OpenCV实现马赛克和毛玻璃滤镜效果与图片的融合,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • vscode实现本地代码自动同步到远程机器的步骤

    vscode实现本地代码自动同步到远程机器的步骤

    这篇文章主要介绍了vscode实现本地代码自动同步到远程机器的步骤,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • QT使用QChart绘制柱状图

    QT使用QChart绘制柱状图

    在Qt中使用QChart类可以快速绘制一个图表出来,比如折线图、饼图、柱状图等,本文就来为大家介绍一下如何利用QChart绘制简单的柱状图吧
    2024-11-11
  • VSCode配置C/C++并添加非工作区头文件的方法

    VSCode配置C/C++并添加非工作区头文件的方法

    这篇文章主要介绍了VSCode配置C/C++并添加非工作区头文件的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • C++知识点之inline函数、回调函数和普通函数

    C++知识点之inline函数、回调函数和普通函数

    这篇文章主要给大家介绍了关于C++知识点之inline函数、回调函数和普通函数的相关使用方法,以及回调函数和普通函数的区别小结,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • C++回溯算法中的全排列问题分析探讨

    C++回溯算法中的全排列问题分析探讨

    递归中遇到一个问题全排列的问题,我看见回溯特别神奇,特此记录一下。对比一下深度优先搜索与广度优先搜索,个人感觉这里的回溯像是一种递归树中的深度优先搜索的算法,他不断构造往下延伸的深度,使其达到完全编列
    2023-03-03
  • C语言 详细讲解#pragma的使用方法

    C语言 详细讲解#pragma的使用方法

    #pragma 指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的, 且对于每个编译器都是不同的
    2022-04-04
  • C语言二维数组应用之扫雷游戏

    C语言二维数组应用之扫雷游戏

    这篇文章主要为大家详细介绍了C语言二维数组应用之扫雷游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 最大对称字符串的算法

    最大对称字符串的算法

    题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
    2013-03-03

最新评论