lesson 12 数据的组织结构二 结构体_第1页
lesson 12 数据的组织结构二 结构体_第2页
lesson 12 数据的组织结构二 结构体_第3页
lesson 12 数据的组织结构二 结构体_第4页
lesson 12 数据的组织结构二 结构体_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作学习目标学习目标:3 1学会使用结构体表达数据学会使用结构体表达数据2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体的概念结构体的概念2int x=1;int 表示一个类型:整数表示一个类型:整数x是这种类型的变量是这种类型的变量在在x中存放了一个整数中存放了一个整数12021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3

2、结构体的概念结构体的概念2abc在在C语言中能不能用一个变量来表示点语言中能不能用一个变量来表示点a b c2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体的概念结构体的概念2rect1rect2rect3在在C语言中能不能用一个变量来表示矩语言中能不能用一个变量来表示矩形:形:rect1 rect2 rect32021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体的概念结构体的概念2在在C语言中能不能用一个变量来表示语言中能不能用一个变量来表示angle 和刘德华和刘德华我叫我叫 刘德华刘德华

3、今年今年45岁岁 电话电话是是 54321 我叫我叫 angle 今今年年5岁岁 电话是电话是 12345 2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体的概念结构体的概念2分析以上信息包含的内容:分析以上信息包含的内容:1、点:横坐标、纵坐标、点:横坐标、纵坐标2、矩形:左上角的坐标、矩形:左上角的坐标 长、宽长、宽3、人物:姓名、年龄、电话、人物:姓名、年龄、电话总之:他们是一个组合体总之:他们是一个组合体2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体的概念结构体的概念2如果需要在如

4、果需要在C语言中表达这类信息:语言中表达这类信息:需要告诉需要告诉C语言他们是一个什么样的结语言他们是一个什么样的结构,即告诉构,即告诉C语言,他们包含哪些内容?语言,他们包含哪些内容?例如:如果需要在计算机中表达例如:如果需要在计算机中表达“点点”,则需要告诉计算机点是应该包含两部分:则需要告诉计算机点是应该包含两部分:横坐标、纵坐标横坐标、纵坐标2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体的概念结构体的概念2 结构体类型的概念结构体类型的概念 l结构体是一种可以将若干个不同数据类型的变量结构体是一种可以将若干个不同数据类型的变量组合在

5、一起的复合型数据类型。组合在一起的复合型数据类型。l人们常常借助于它将表达同一对象的不同属性封人们常常借助于它将表达同一对象的不同属性封装在一起,使之达到逻辑概念与程序变量一一对装在一起,使之达到逻辑概念与程序变量一一对应的目的。应的目的。l从而提高程序的清晰度,降低程序的复杂度,改从而提高程序的清晰度,降低程序的复杂度,改善程序的可维护性。善程序的可维护性。 2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体结构体3定义结构体类型定义结构体类型一般方法一般方法struct 结构体名结构体名 类型类型 成员成员1的名字;的名字; 类型类型 成员

6、成员2的名字的名字; . .;注意分号注意分号注意:只是告诉计算注意:只是告诉计算机,程序中定义了一机,程序中定义了一种新的类型种新的类型( (模板模板) ),这种类型的变量具有这种类型的变量具有这样的结构(组成)这样的结构(组成)2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体结构体3l例如:例如:struct point_type int x; /*x坐标坐标*/ int y; /*y坐标坐标*/;定义了一个类型定义了一个类型point_type,他包含两部分:他包含两部分:整型的整型的x 和整型的和整型的y2021-12-13电气与信息

7、工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体结构体3 例如:定义一个结构体类型例如:定义一个结构体类型stu,其组成应,其组成应该包含如下部分:该包含如下部分:姓名姓名(字符串字符串)学号学号(字符串字符串)班级班级(字符串字符串)年龄年龄(整数整数)成绩成绩(小数小数)2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体结构体3struct stu char name10; char no20; char class10; int age; float score; 注意:注意:1、每个组成部分都有名称、每个组成部分都

8、有名称2、每个组成部分都有类型、每个组成部分都有类型3、组成部分排名不分先后、组成部分排名不分先后4、组成部分的数量不受限、组成部分的数量不受限制,根据需要定义制,根据需要定义例如:例如:2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体结构体3l一个结构体一个结构体可以包含另一个结构体作为其成员可以包含另一个结构体作为其成员结构体类型:嵌套的结构体结构体类型:嵌套的结构体 例:如何定义结构体类型表示平面上的矩形例:如何定义结构体类型表示平面上的矩形顶点顶点lefttop顶点顶点rightbottom 例如:一个矩形可以使用左上角的顶点和右下例

9、如:一个矩形可以使用左上角的顶点和右下角的顶点表示,即只需要包含两个成员。角的顶点表示,即只需要包含两个成员。而这个成员又是一个点而这个成员又是一个点(point)类型类型2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体结构体3l用用point_type类型声明结构体类型:类型声明结构体类型:struct rectangle_type struct point_type lefttop; /*左上角坐标左上角坐标*/ struct point_type rightbottom; /*右下角坐标右下角坐标*/;struct point_type

10、 int x; /*x坐标坐标*/ int y; /*y坐标坐标*/;注意:注意:必须先定义必须先定义point_type结构结构体类型体类型2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3课堂练习课堂练习4 定义一个日期结构体类型,其组成结构为:定义一个日期结构体类型,其组成结构为:年、月、日年、月、日2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5程序中定义了结构体类型后,只是声明了一程序中定义了结构体类型后,只是声明了一种数据类型,定义了一个模板,在这个模种数据类型,定义了一

11、个模板,在这个模板中,规定了其数据的组成(包含结构)板中,规定了其数据的组成(包含结构)一定要使用结构体类型定义该类型的变量,一定要使用结构体类型定义该类型的变量,才可以表示、存储该类型的数据才可以表示、存储该类型的数据2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5struct 结构体名结构体名 变量名变量名 struct stu stu1;struct date d1,d2; 定定义结构体变量的方法:义结构体变量的方法:2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用

12、结构体使用5也可以直接在定义结构体类型时定义也可以直接在定义结构体类型时定义struct stu char name10; char no20; char class10; int age; int score; stu1,stu2; 结构体类型名称结构体变量名称2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5在在C语言中,允许用户为已经存在的数据类语言中,允许用户为已经存在的数据类型起一个别名,其说明格式为:型起一个别名,其说明格式为: typedef 原数据类型原数据类型 新数据类型名;新数据类型名; 2021-12-13

13、电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5注意:注意:“类型名类型名”必须是系统提供的数据类必须是系统提供的数据类型或用户已定义的数据类型。定义替代类型名型或用户已定义的数据类型。定义替代类型名的作用是:给已有的类型起个别名标识符的作用是:给已有的类型起个别名标识符例如:例如:typedef int INTEGER;int 和和INTEGER 完全等价完全等价INTEGER a;2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5 typedef struct point_ty

14、pe int x; int y;POINT;v在这里,在这里,POINT与与struct point_type完全等价完全等价POINT p1;2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5结构体变量的使用结构体变量的使用 使用结构体变量时,一般不能作为一个整体使用结构体变量时,一般不能作为一个整体使用,除了允许具有相同类型的结构变量相使用,除了允许具有相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括互赋值以外,一般对结构变量的使用,包括赋值、输入、输出、运算等都是通过结构变赋值、输入、输出、运算等都是通过结构变量

15、的成员来实现的。量的成员来实现的。 2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5结构体变量的使用结构体变量的使用使用方法:使用方法:变量名变量名.成员名成员名 struct point_type int x; int y;p1,p2;p1.x =2; /*p1的的x坐标赋值为坐标赋值为2*/p2.y=5;/*p2的的y坐标赋值为坐标赋值为5*/2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5struct point_type int x; int y;p1

16、,p2;xyp2xyp1结构体类型只是一个模板,只是结构体类型只是一个模板,只是规定了其内容的结构,该类型的规定了其内容的结构,该类型的变量具有和他一样的结构变量具有和他一样的结构p1和和p2的结构一样的结构一样,都有都有x,y 其中其中x和和y都是整型变量都是整型变量让让p1的的x等于等于3:p1.x=3;从键盘给从键盘给p2的的y输入输入scanf(“%d”,&p2.y);2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作struct stu char name10; char no20; char class10; int age; in

17、t score; struct stu s1,s2;把把”张吴波张吴波”放到放到s1的的name中中:strcpy(,”张吴波张吴波”);从键盘输入从键盘输入s1的的nogets(s1.no);输出输出s1和和s2的平均年龄的平均年龄printf(“%f”,(s1.age+s2.age)/2.0)2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5结构体型变量的基本操作结构体型变量的基本操作structstruct date d; date d; 1.1. 结构体型变量的输入:针对成员进行结构体型变量的输入:针对成员

18、进行 scanf(“%d%d%dscanf(“%d%d%d”, &d.year, &d.month, &d.day);”, &d.year, &d.month, &d.day);2.2. 结构体型变量的输出:针对成员进行结构体型变量的输出:针对成员进行 printf(“%dprintf(“%d %d %d”, d.year, d.month, %d %d”, d.year, d.month, d.day);d.day);2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5结构体型变量

19、的基本操作结构体型变量的基本操作 3.3.结构体型变量的赋值结构体型变量的赋值针对成员针对成员structstruct date d1,d2; date d1,d2;d1.year = 2005;d1.year = 2005;d1.month = 5;d1.month = 5;d1.day = 20;d1.day = 20;针对整体:将一个变量的值赋给另一个类针对整体:将一个变量的值赋给另一个类型完全相同的变量,型完全相同的变量,d2=d1;2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体使用结构体使用5结构体型变量的基本操作结构体型变量的基

20、本操作 4.4.结构体型变量的初始化结构体型变量的初始化struct point_type int x; int y;struct point_type p1=2,5;2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体应用结构体应用6例例1:编写程序,实现复数的加法:编写程序,实现复数的加法分析:定义一个新的类型,可以保存复数信息分析:定义一个新的类型,可以保存复数信息这个类型具有什么样的结构?这个类型具有什么样的结构?2 + 3i4 - 8i实部实部 虚部虚部2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张

21、吴波制作3结构体应用结构体应用6struct complex int real; int imge; c1,c2,c3; int main() printf(“请输入第一个复数请输入第一个复数”); scanf(“%d%d”,&c1.real,&c1.imge); printf(“请输入第二个复数请输入第二个复数”); scanf(“%d%d”,&c2.real,&c2.imge); c3.real=c1.real+c2.real; c3.imge=c1.imge+c2.imge; pirntf(“复数和复数和:%d +%di”,c3.real,c3.imge)

22、; return 0;分别运算分别运算在定义类型时定义变量在定义类型时定义变量lesson15_01.c2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3课堂练习课堂练习7使用结构体的方法计算两个坐标点的距离使用结构体的方法计算两个坐标点的距离坐标点使用结构体表示坐标点使用结构体表示2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体数组结构体数组8结构体数组结构体数组与一般变量可以构成数组一样与一般变量可以构成数组一样结构体类型也有数组结构体类型也有数组struct date d10; int a10定义方法:类型定义方法:类型 数组名数组名 长度长度 2021-12-13电气与信息工程学院计算机系张吴波制作电气与信息工程学院计算机系张吴波制作3结构体数组结构体数组8结构体数组的初始化结构体数组的初始化struct point_type int x; int y;struct point_type p3=2,5,5,6,7,9;25p056p179p22021-12-13电气与信息工程学院计算机系张吴

温馨提示

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

评论

0/150

提交评论