c语言第4章 构体_第1页
c语言第4章 构体_第2页
c语言第4章 构体_第3页
c语言第4章 构体_第4页
c语言第4章 构体_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、本章需实现的系统功能二、结构类型三、类型定义一、本章需实现的系统功能1、每次运行只能录入一个学生的成绩及相关信息,如果需、每次运行只能录入一个学生的成绩及相关信息,如果需要录入多个学生的成绩及相关信息,怎么办?如何存储?要录入多个学生的成绩及相关信息,怎么办?如何存储?2、学生的成绩及相关信息相互独立地存在,没有作为一个、学生的成绩及相关信息相互独立地存在,没有作为一个整体,没有反映这些数据之间的联系。整体,没有反映这些数据之间的联系。解决思路:把一个学生的成绩及相关信息看作一条成绩记录,解决思路:把一个学生的成绩及相关信息看作一条成绩记录,这些信息逻辑上是一个整体。使用结构类型来保持成绩

2、记录,这些信息逻辑上是一个整体。使用结构类型来保持成绩记录,使用结构数组来保持多条成绩记录。使用结构数组来保持多条成绩记录。 1、使用结构保存学生的成绩及相关信息(即成绩记录),修改输入/输出源程序,实现多条成绩记录的录入和显示。 任务明确,全力以赴!任务明确,全力以赴!二、结构类型 如何把具有不同类型的且相互联系的数据组织在一起?比如:学生成绩记录。 现实中复杂的对象往往是多个属性的集合,C语言可以利用结构(structure)把各个属性组织成一个逻辑整体,每一个属性称为成员(member)。学生成绩记录包括以下属性:学号、姓名、年龄、成果、总分、平均分、排序。结构声明的一般形式:struc

3、t 结构名 类型成员名1;类型成员名2;;说明:(1)结构名和成员名遵守标识符的命名规则。(2)结构声明只是定义了一种特殊的数据类型。学生成绩记录:struct StudentScoreRecord char no20; char name40; short age; short score3; short sum; float average; int order;struct addr struct addr char name20; char name20; char department30; char department30; char address30; char addres

4、s30; long int zip; long int zip; long int phone; long int phone; char 30;char 30; ;struct score char grade20; /*班级班级*/long int number; /*学号学号*/char name20; /*姓名姓名*/char sex; /*性别性别*/ float maths; /*数学成绩数学成绩*/float database; /*数据库成绩数据库成绩*/float english; /*英语成绩英语成绩*/; 1、先声明结构,再定义结构变量。struct StudentSco

5、reRecord char no20; char name40; short age; short score3; short sum; float average; int order;struct StudentScoreRecord stuSco;2、声明结构的同时定义结构变量。struct StudentScoreRecord char no20; char name40; short age; short score3; short sum; float average; int order; stuSco;3、直接定义结构变量。struct char no20; char name

6、40; short age; short score3; short sum; float average; int order; stuSco;说明:说明:(1) 结构与结构变量的区别;结构与结构变量的区别;(2) 编译时,不对结构分配空间,编译时,不对结构分配空间,只对结构变量分配空间;只对结构变量分配空间;(3) 结构中的成员可以与程序中结构中的成员可以与程序中的变量同名,但两者代表不同的变量同名,但两者代表不同的对象。的对象。考虑:考虑:(1) StudentScoreRecord结构结构变量在变量在VC6.0中占用多少字节?中占用多少字节?(2) 定义结构变量的第定义结构变量的第3种

7、方式种方式有何缺点?建议使用第有何缺点?建议使用第1种方式。种方式。 ?问题:如何操作结构变量的成员? 对结构变量中各个成员的访问,用操作符“.”表示,其格式为:结构变量名.成员名 操作符“.”称为成员运算符,具有最高优先级。 可以在定义结构变量的同时,对结构变量中的各个成员进行初始化。初始化时注意数据类型一致性。 struct StudentScoreRecord stuSco = 201903010101, Zhang, 18, 98, 100, 99, 0,0. 0, 1; C允许直接赋值给一个结构变量成员,而不能将一个结构变量作为一个整体进行输入和输出。例如:输入一条学生成绩记录sca

8、nf(%s, stuScore.no); scanf(%s, stuS); scanf(%hd,&stuScore.age); stuScore.sum = 0; for(i=0; i3; i+)scanf(%hd,&stuScore.scorei);stuScore.sum = stuScore.sum + stuScore.scorei;stuScore.average = (float) stuScore.sum / 3;结构的嵌套结构的嵌套 结构类型的嵌套结构就是成员也可以是一个结构变量,即允许结构类型的嵌套结构就是成员也可以是一个结构变量,即允许“嵌

9、套的结构类型。例如图嵌套的结构类型。例如图7.67.6所示的结构类型。所示的结构类型。struct subjectstruct subject float maths; float maths; float database; float database; float english;float english;struct score struct score char grade20; char grade20; long int number; long int number; char name20; char name20; char sex; char sex; struct s

10、ubject course struct subject course stu1,stu2; stu1,stu2; 由于成员本身又属一个结构类型,在访问成员时,则要用若干个由于成员本身又属一个结构类型,在访问成员时,则要用若干个成员运算符,逐级找到最低一级的成员。系统只能对最低的成员成员运算符,逐级找到最低一级的成员。系统只能对最低的成员进行赋值或存储以及运算。例如,对上面定义的进行赋值或存储以及运算。例如,对上面定义的struct scorestruct score结结构变量构变量stu1stu1,可以这样访问各成员:,可以这样访问各成员:stu1.course.mathsstu1.course.mathsstu1.course.databasestu1.course.databasestu1.course.Englishstu1.course.English不能是不能是stu1.subjectstu1.subject,因为,因为subjectsubject本身是一个结构变量。同理本身是一个结构变量。同理,下面语句是正确的:,下面语句是正确的:sum = stu1.course.maths + stu2.course.maths;sum = stu1.course.maths +

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论