内容正文:
课程单元教案
本课编号
23
本课课时
2学时
内容提要
项目8 自定义数据类型应用
任务1结构体类型
教学目的
1.了解什么是结构体;
2.掌握结构体类型、变量定义和应用的方法。
知识能力
结构
1.掌握结构体类型定义的方法;
2.初步掌握结构体变量定义及应用。
教学重点
难点
重点:结构体类型、结构体变量定义定义和应用。
难点:结构体类型的用法。
教学手段
方法
教学方法:任务驱动教学法、启发式
教学手段:课堂讲授法、多媒体教学
思考题与
习题
1.什么是结构体类型?
2.结构体类型和基本类型的区别是什么?
教学内容进程设计
任务导入:综合实践8 学生成绩管理系统结构体应用设计
学生成绩管理系统文结构体应用设计:应用结构体数组(或结构体指针)实现多名学生成绩信息(包括学号、姓名、5门成绩、总分、平均分等基本信息)的输入、输出及处理。并用结构体数组(或结构体指针)作为函数参数实现综合实践6中的各项功能。
任务1结构体类型
1.1结构体类型定义
有以下表格信息,如何存放一组相关的数据:结构体
学号
姓名
性别
成绩
8001
王帅
m
88.5
8002
张宇
m
90
8003
李响
f
83.5
结构体是一种构造数据类型,它是由若干“成员”组成,每一个成员可以是一个基本数据类型或者又是一个构造类型。
定义格式:struct 结构体名{
数据类型 成员名1;
数据类型 成员名2;
……
数据类型 成员名n;};
说明:(1)结构体类型名称由关键字struct和结构体名组合而成,结构体名由用户指定。
(2)大括号内是结构体的成员,对各个成员都要进行类型声明。
(3)结构体类型并非一种,而是用户根据需求设计出许多种结构体类型。
(4)同名的成员变量可以属于不同的结构体类型,互不影响。
(5)定义一个结构体类型后,并不分配内存空间。
举例:
struct student{
int num;
char name[20],sex;
float score; };
以上定义表示结构体类型名为struct student,有4个成员变量。
1.2结构体变量定义及应用
1.结构体变量定义
结构体的定义仅描述了一个结构体的形式。它相当于一个模型,其中并无具体数据,系统也不会为它分配实际的内存空间。如果要在程序里使用结构体,需要声明结构体类型的变量。定义结构体类型的变量有以下3种方法:
(1)先定义结构体类型,再定义该类型的变量, 例如:
struct student{
int num;
char name[20],sex;
float score; };
struct student stu1,stu2;
(2)在定义结构体类型的同时定义结构体变量,例如:
struct student{
int num;
char name[20],sex;
float score; }struct student stu1,stu2;
(3)直接定义结构体变量,例如:
struct{
int num;
char name[20],sex;
float score; }stu1,stu2;
说明:(1)不可以对结构体类型进行赋值、存取等操作。
(2)结构体成员名可以与普通变量同名,但两者并不代表同一存储单元。
(3)省略结构体名不能再次定义该种类型变量。
(4)结构体类型定义可以在函数的内部,也可以在函数的外部。在函数内部定义的结构体,其作用域仅限于该函数内部,而在函数外部定义的结构体,其作用域是从定义处开始到本文件结束。
2.结构体变量的内存分配
在定义了结构体变量后,系统会分配对应的内存空间。
例如:struct student stu;
变量stu存储分配如图所示:
注意:结构体变量stu所占字节数的计算方法:4+20+1+4=29,即29个字节。(变量stu用sizeof()测试得到的字节数是32,因为计算机对内存的管理是以4字节为单位,开辟空间都是4的倍数, 因此结果是32,而不是29)
3.结构体变量初始化
格式:结构体类型 结构体变量={成员变量初始值列表};
例如:struct student stu={1001,”李明”,’m’,88.5};
说明:(1)初始化列表是用大括号括起来的一些常量,常量按照成员变量的顺序依次赋给结构体变量中的各个成员,要求常量的类型和成员变量的类型一致。
(2)初始化是对结构体变量进行的,而不是结构体类型。
(3)可以只对结构体变量的其中一部分成员初始化,按照常量的前后顺序依次对前面的成员初始化,后面的成员可以空余,而不是按数据类型自动去匹配。
4.结构体变量应用
(1)成员变量引用格式
结构体变量名.成员名
“.”是结构体成员运算符,运算级别最高,运算顺序自左向右。例如:stu1.num、stu2.name分别代表stu1的num成员和name成员。
(2)整体引用
同类型的结构体变量,可以将一个结构体变量整体赋值给另一个结构体变量。
例如:struct student stu1={1001, “李明”, ‘m’, 88.5},stu2;
stu2 =stu1;
通过赋值,结构体变量stu1中每个成员的值分别赋给stu2每个成员变量。
举例:定义结构体变量赋值后并输出其值。
随堂练习:
定义结构体类型(包含姓名、性别、年龄、家庭住址、电话号码等基本信息),输入两名同学的信息并输出。
教学小结
1.结构体类型定义的方法。
2、结构体变量定义和初始化的方法。
3、结构体变量引用的方法。
4、结构体类型的应用。
学科网(北京)股份有限公司
$$