第7章结构体和共用体电子课件 C语言程序设计.pptx





《第7章结构体和共用体电子课件 C语言程序设计.pptx》由会员分享,可在线阅读,更多相关《第7章结构体和共用体电子课件 C语言程序设计.pptx(57页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第7章结构体和共用体第7章 结构体和共用体前面的章节介绍了最基本的数据类型,即使是批量处理数据时使用的数组,也是用来存放相同数据类型的数据,然而这些类型的变量或数组基本上无内在联系。但在现实生活中,一些密切相关且数据类型不一样的数据在被处理时,用先前的数据类型都无法实现,所以C语言引入另一种构造数据类型结构体,将属于一个事物的多个数据组织起来以体现其内部联系。本章将结合经典案例学习结构体和共用体的相关知识,涉及的案例与知识要点如图7-1所示。第7章 结构体和共用体(1)掌握结构体数据类型的定义。(2)掌握结构体类型变量的定义、初始化和引用。(3)理解并掌握结构体数组和指针的编程。(4)掌握共用
2、体变量的定义、初始化和引用。学习目标CONTENTS案例1:计算平均分案例2:记录电话费案例3:指针实现成绩输出案例4:猜猜运行结果案例1:计算平均分输入学生的信息,计算该学生的平均分,并输出该学生的信息。案例1:计算平均分案例描述相关知识结构体类型的定义结构体变量的定义、初始化和引用1.结构体类型的定义结构体类型是一种构造类型,它是由若干成员组成的,每个成员可以是一个基本数据类型或又是一个构造类型。结构体类型的名字是由一个关键字struct和结构体名组成的。结构体定义的一般形式如下。struct 结构体类型名 类型说明符1成员名1;类型说明符2成员名2;类型说明符n成员名n;案例1:计算平均
3、分例如:struct student int number;char name10;char gender;float score;struct是关键字,是结构体类型的标志。student为结构体变量名。案例1:计算平均分(1)struct是结构体关键字,不能省略。结构体类型名可以省略,成为无名结构体。结构体成员可以是任何基本数据类型,也可以是数组和指针类型。(2)定义结构体类型的语句要以“;”结束,不要遗漏“”后的“;”。(3)在编译时,系统不对定义的结构体类型分配内存空间。(4)结构体类型与变量一样,作用范围也有全局和局部之分。注意案例1:计算平均分2.结构体变量的定义、初始化和引用1)结
4、构体变量的定义(1)先定义结构体类型,再定义结构体变量。语法格式如下。struct 结构体类型的名称 结构体变量名的列表;(2)在定义结构体类型的同时定义结构体变量。语法格式如下。struct 结构体类型的名称 成员表列结构体变量名的列表;(3)直接定义结构体变量。语法格式如下。struct 成员表列变量名的列表;结构体类型与结构体变量是不同的概念。对变量可赋值、存取或运算,而不能对一个类型赋值、存取或运算。结构体类型中的成员名可以与程序中的变量名相同,但二者不代表同一对象。结构体变量中的成员可以单独使用,相当于普通变量。2)结构体变量的初始化和引用在定义结构体变量之后,如果要使用结构体变量的
5、值,需要对结构体变量进行初始化。(1)结构体变量的初始化。语法格式如下。struct 结构体类型的名称 结构体变量=初始化数据;初始化数据项必须是常量或常量表达式,数据项之间用逗号间隔。C语言编译系统将会依次把它们赋给对应的结构体变量的成员。案例1:计算平均分(2)结构体变量的引用。在程序中引用结构体变量时,只能对结构体变量的成员进行输入、输出或运算,而不能将结构体变量作为一个整体进行输入、输出或运算(赋值运算除外)。语法格式如下。结构体变量名.成员名其中,“.”是成员运算符,在所有的运算符中优先级最高。结构体变量的成员可以像普通变量一样进行各种运算。同类的结构体变量可以互相赋值。可以引用结构
6、体变量的成员的地址,也可以引用结构体变量的地址。结构体变量的地址主要用作函数参数,传递结构体变量的地址。案例1:计算平均分案例1:计算平均分案例实现算法分析流程图表达代码实现运行结果1.算法分析第一步:定义结构体。第二步:输入学生信息。第三步:遍历数组中的元素,累加求和,计算平均分。2.流程图表达程序算法流程如图7-2所示。案例1:计算平均分3.代码实现#include /标准输入/输出函数的头文件#include /system函数的头文件 struct student /定义结构体类型 int num;char name20;char classname20;double grade4;i
7、nt main()/主函数开始 struct student stu1;/定义所需变量double sum=0;double average;int i;案例1:计算平均分printf(请输入学生信息(学号姓名班级四门课的成绩)n);scanf(%d,&stu1.num);/向结构体变量中输入数据scanf(%s,stu1.name);scanf(%s,stu1.classname);scanf(%.2f%.2f%.2f%.2f,&stu1.grade0,&stu1.grade1,&stu1.grade2,&stu1.grade3);for(i=0;i 4;i+)/求解四门课程的总成绩 sum
8、+=stu1.gradei;average=sum/4;/求平均分printf(该生信息为:n);/向屏幕输出学生信息printf(学号:%dn,stu1.num);printf(姓名:%sn,stu1.name);printf(班级:%sn,stu1.classname);printf(课程1:%.lfn,stu1.grade0);案例1:计算平均分 printf(课程2:%.lfn,stu1.grade1);printf(课程3:%.lfn,stu1.grade2);printf(课程4:%.lfn,stu1.grade3);printf(平均分:%.lfn,average);system
9、(pause);/暂停屏幕,便于观察结果,按任意键退出 return 0;案例1:计算平均分4.运行结果程序运行结果如图7-3所示。案例1:计算平均分案例2:记录电话费手机已成为很多人形影不离的“朋友”,每个月会消耗多少电话费呢?输入你和你朋友的姓名、年龄和近3个月的话费账单并输出这些信息,记录一下你们的开销吧。案例2:记录电话费案例描述结构体数组是指数组的类型为结构体类型,即数组的每个元素都是该结构体类型的变量。定义结构体数组和定义结构体变量的方式相同。结构体数组的初始化和结构体变量的初始化方法相同,只是每个结构体数组元素的初始化值用“”括起来。下面用结构数组定义一个班级40个学生的姓名、性
10、别、年龄和住址。案例2:记录电话费相关知识struct char name8;char sex2;int age;char addr40;student40;结构体数组成员的访问是以数组元素为结构变量的,其形式为:结构数组元素.成员名例如:student0.name;student30.age。案例2:记录电话费案例2:记录电话费案例实现算法分析流程图表达代码实现运行结果1.算法分析第一步:定义结构体。第二步:循环输入消费者信息。第三步:循环输出消费者信息。2.流程图表达程序算法流程如图7-4所示。案例2:记录电话费3.代码实现#include /标准输入/输出函数的头文件#include /
11、system函数的头文件 struct consumer /定义结构体类型 char name20;int age;double cost3;int main()/主函数开始 struct consumer con2;/定义所需变量 int i;for(i=0;i2;i+)/输入数据 printf(请输入第%d个消费者信息:姓名、年龄、近三个月的账单n,i+1);scanf(%s,coni.name);scanf(%d,&coni.age);案例2:记录电话费 scanf(%lf%lf%lf,&coni.cost0,&coni.cost1,&coni.cost2);for(i=0;i成员名案例
12、3:指针实现成绩输出案例实现算法分析流程图表达代码实现运行结果1.算法分析第一步:定义结构体。第二步:定义结构体指针变量。第三步:输出消费者信息。2.流程图表达程序算法流程如图7-6所示。案例3:指针实现成绩输出3.代码实现#include /标准输入/输出函数的头文件#include /system函数的头文件 struct student /定义结构体类型 int num;char name20;char classname20;double grade4;int main()/主函数开始 struct student stu1=2018010,韩磊,计应1801,75,80,85,90;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第7章结构体和共用体电子课件 C语言程序设计 结构 共用 电子 课件 语言程序设计

限制150内