当前课程知识点:C语言程序设计 >  第11章 复杂数据类型 >  11.4 结构体数组 >  结构体数组

返回《C语言程序设计》慕课在线视频课程列表

结构体数组在线视频

下一节:指向结构体类型数据的指针

返回《C语言程序设计》慕课在线视频列表

结构体数组课程教案、知识点、字幕

同学们好

在这一节中

我们将和大家探讨

定义了会使用结构体变量的基础上

学习如何应对批量数据

解决复杂批量数据的

存储方法之一是结构体数组

所以我们这节课

一个重要的内容是结构体数组

请同学们多练习

这是大数据时代必备的技能之一

同学们大家已经学习了

结构体类型的定义

用自己定义的新类型

可以定义结构体变量

使用结构体变量中可以存放

一组数据如一个学生的学号

姓名

成绩等数据

那么如果有10个学生的数据

需要参加运算

我们要如何存储呢

使用10个变量吗

很显然显然应该用数组

这就是结构体数组

结构体数组与以前介绍过的数值型数组

不同之处在于每个数组元素

都是一个结构体类型的数据

它们都分别包括各个成员(分量)项

首先我们研究以下结构体数组定义

和定义结构体变量的方法相仿

只需说明其为数组即可

定义结构体数组一般形式是

struct 结构体名成员表列

数组名数组长度

与结构体类型数组名数组长度

例如

以下3段代码

上面这两个实例都是定义

两种方式的结构体数据

我们可以在定义的同时

使用如下程序语句对它进行初始化

在内存当中我们就可以得到

一个如下图的结构体数组

结构体数组应用举例

下面举一个简单的例子来说明

结构体数组的定义和使用

例如

对候选人得票的统计程序

设有3个候选人

每次输入一个名字

要求最后输出各人得票结果

程序如下

程序定义了一个全局的结构体数组 leader

它有3个元素

每一元素包含两个成员

name和coun

在定义数组时使之初始化

使3位候选人的票数都先置零

其内存结构如图

在主函数中定义字符数组 leader-name

它代表被选人的姓名

在10次循环中每次先输入

一个被选人的具体人名

然后把它与3个候选人姓名相比

看它和哪一个候选人的名字相同

注意 leader-name和 leader

[j].name相比

leader[j]是数组 leader的第j个元素

它包含两个成员项

leader_name应该和 leader数组第j

个元素的name成员相比

若i为某一值时

输入的姓名与 leader[j].name相等

就执行leader[j].coun++

由于成员运算符.

优先于自增运算符 ++

因此它相当于( leader[j].count)++

使 leader[j]的成员 count的值加1

在输入和统计结束之后

将3人的名字和得票数输出

下图我们可以看到某特定输入的输出结果

今天的内容就讲到这里

在这一节中

我们和大家探讨

定义了会使用结构体变量的基础上

学习如何应对批量数据

解决批量数据的存储方法之一是数组

所以我们这节课一个重要的内容是数组

请同学们多练习

这是大数据时代必备的技能之一

同学们

我们下次课再见

C语言程序设计课程列表:

第1章 C语言程序设计预备知识

-计算思维与计算机

--计算思维与计算机

--计算思维与计算机

--计算思维和计算机

第2章 C语言程序设计基础

-2.1 程序设计语言的发展及其特点和应用

--程序设计语言的发展及其特点和应用

--程序设计语言的特点及发展

- 2.2 C语言程序的基本结构及编制C语言程序的基本步骤

-- C语言程序的基本结构及编制C语言程序的基本步骤

--C语言程序的结构和编制步骤

第3章 基本数据类型、运算符与表达式

-3.1 C语言的数据类型

--C语言的数据类型

--C语言的数据类型

-3.2 常量

--常量

--常量

-3.3 什么是变量

--什么是变量

--什么是变量

-3.4 如何进行算术运算

--如何进行算术运算

--如何进行算术运算

-3.5 赋值运算符和逗号运算符

--赋值运算符和逗号运算符

--赋值运算符和逗号运算符

-3.6 数据类型转换

--数据类型转换

--数据类型转换

第4章 基本输入输出和顺序程序设计

-4.1 格式化输出printf

--格式化输出printf

--格式化输出

-4.2 格式化输入scanf及字符数据的非格式化输入输出

--格式化输入scanf及字符数据的非格式化输入输出

--格式化输入

第5章 选择结构程序设计

-5.1 关系运算符和关系表达式

--关系运算符和关系表达式

--关系运算符和关系表达式

-5.2 逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

--逻辑运算符和逻辑表达式

-5.3 条件运算符和条件表达式

--条件运算符和条件表达式

--条件运算符和条件表达式

-5.4 if语句

--if语句

--if语句

-5.5 switch语句

--switch语句

--switch语句

第6章 循环结构程序设计

-6.1 while语句

--while语句

--while语句

--do-while语句

-6.2 for语句

--for语句

--for语句

-6.3 循环的嵌套

--循环的嵌套

--循环的嵌套

-6.4 break语句和continue语句

--break语句和continue语句

--break和continue语句

第7章 数组

-7.1 一维数组的定义和引用

--一维数组的定义和引用

--一维数组的定义和引用

-7.2 一维数组的赋值

--一维数组的赋值

--一维数组的赋值

-7.3 二维数组的定义和引用

--二维数组的定义和引用

--二维数组的定义和引用

-7.4 二维数组的赋值

--二维数组的赋值

--二维数组的赋值

-7.5 字符串的本质

--字符串的本质

--字符串的本质

-7.6 字符串操作的常用函数

--字符串操作的常用函数

--字符串常用函数

-7.7 字符串数组

--字符串数组

--字符串数组

第8章 函数

-8.1 函数概述

--函数概述

--函数概述

-8.2 有参函数

--有参函数

--有参函数

-8.3 函数参数的传递方式

--函数参数的传递形式

--函数参数的传递方式

-8.4 变量的作用域和生存期

--变量的作用域和生存期

--变量的作用域和生存期

-8.5 变量的存储类型

--变量的存储类型

--变量的存储类型

-8.6 函数的嵌套和递归调用

--函数的嵌套和递归调用

--函数的嵌套和递归调用

-8.7 函数的作用域与封装

--函数的作用域与封装

--函数的作用域与封装

第9章 指针

-9.1 指针变量的概念(上)

--指针变量的概念(上)

--指针变量的概念(上)

-9.2 指针变量的概念(下)

--指针变量的概念(下)

--指针变量的概念(下)

-9.3 指向一维数组的指针变量

--指向一维数组的指针变量

--指向一维数组的指针变量

-9.4 指向二维数组的指针变量(上)

--指向二维数组的指针变量

--指向二维数组的指针变量(上)

-9.5 指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

--指向二维数组的指针变量(下)

-9.6 动态内存分配

--动态内存分配

--动态内存分配

第10章 预处理命令

-10.1 编译预处理

--编译预处理

第11章 复杂数据类型

-11.1 用户自己建立数据类型

--用户自己建立数据类型

--用户自己建立数据类型

-11.2 定义结构体类型变量

--定义结构体类型变量

--定义结构体类型变量

-11.3 结构体变量的引用与初始化

--结构体变量的引用与初始化

-11.4 结构体数组

--结构体数组

--结构体数组

-11.5 指向结构体类型数据的指针

--指向结构体类型数据的指针

--指向结构体类型数据的指针

第12章 文件

-12.1 文件的基本概念和文件指针

--文件的基本概念和文件指针

--文件的基本概念和文件指针

-12,2 文件的打开和关闭

--文件的打开和关闭

--文件的打开和关闭

-12.3 文本文件读写

--文本文件读写

--文本文件读写

-12.4 二进制文件读写

--二进制文件读写

--二进制文件读写

结构体数组笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。