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

下载本文档

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

文档简介

Lesson15数据的组织结构2022/11/29学习目标:31学会使用结构体表达数据2022/11/293结构体的概念2intx=1;int表示一个类型:整数x是这种类型的变量在x中存放了一个整数12022/11/293结构体的概念2abc在C语言中能不能用一个变量来表示点abc2022/11/293结构体的概念2rect1rect2rect3在C语言中能不能用一个变量来表示矩形:rect1rect2rect32022/11/293结构体的概念2在C语言中能不能用一个变量来表示angle和刘德华我叫刘德华今年45岁电话是54321我叫angle今年5岁电话是123452022/11/293结构体的概念2分析以上信息包含的内容:1、点:横坐标、纵坐标2、矩形:左上角的坐标长、宽3、人物:姓名、年龄、电话总之:他们是一个组合体2022/11/293结构体的概念2如果需要在C语言中表达这类信息:需要告诉C语言他们是一个什么样的结构,即告诉C语言,他们包含哪些内容?例如:如果需要在计算机中表达“点”,则需要告诉计算机点是应该包含两部分:横坐标、纵坐标2022/11/293结构体的概念2结构体类型的概念

结构体是一种可以将若干个不同数据类型的变量组合在一起的复合型数据类型。人们常常借助于它将表达同一对象的不同属性封装在一起,使之达到逻辑概念与程序变量一一对应的目的。从而提高程序的清晰度,降低程序的复杂度,改善程序的可维护性。2022/11/293结构体3定义结构体类型一般方法struct结构体名{

类型成员1的名字;类型成员2的名字;….….};注意分号注意:只是告诉计算机,程序中定义了一种新的类型(模板),这种类型的变量具有这样的结构(组成)2022/11/293结构体3例如:structpoint_type{intx;/*x坐标*/inty;/*y坐标*/};定义了一个类型point_type,他包含两部分:整型的x和整型的y2022/11/293结构体3

例如:定义一个结构体类型stu,其组成应该包含如下部分:姓名(字符串)学号(字符串)班级(字符串)年龄(整数)成绩(小数)2022/11/293结构体3structstu{charname[10];charno[20];charclass[10];intage;floatscore;};注意:1、每个组成部分都有名称2、每个组成部分都有类型3、组成部分排名不分先后4、组成部分的数量不受限制,根据需要定义例如:2022/11/293结构体3一个结构体可以包含另一个结构体作为其成员结构体类型:嵌套的结构体

例:如何定义结构体类型表示平面上的矩形顶点lefttop顶点rightbottom

例如:一个矩形可以使用左上角的顶点和右下角的顶点表示,即只需要包含两个成员。而这个成员又是一个点(point)类型2022/11/293结构体3用point_type类型声明结构体类型:structrectangle_type{structpoint_typelefttop;/*左上角坐标*/structpoint_typerightbottom;/*右下角坐标*/};structpoint_type{intx;/*x坐标*/inty;/*y坐标*/};注意:必须先定义point_type结构体类型2022/11/293课堂练习4

定义一个日期结构体类型,其组成结构为:年、月、日2022/11/293结构体使用5程序中定义了结构体类型后,只是声明了一种数据类型,定义了一个模板,在这个模板中,规定了其数据的组成(包含结构)一定要使用结构体类型定义该类型的变量,才可以表示、存储该类型的数据2022/11/293结构体使用5struct结构体名变量名structstustu1;structdated1,d2;定义结构体变量的方法:2022/11/293结构体使用5也可以直接在定义结构体类型时定义structstu{charname[10];charno[20];charclass[10];intage;intscore;}stu1,stu2;结构体类型名称结构体变量名称2022/11/293结构体使用5在C语言中,允许用户为已经存在的数据类型起一个别名,其说明格式为:

typedef原数据类型新数据类型名;

2022/11/293结构体使用5注意:“类型名”必须是系统提供的数据类型或用户已定义的数据类型。定义替代类型名的作用是:给已有的类型起个别名标识符例如:typedefintINTEGER;int和INTEGER完全等价INTEGERa;2022/11/293结构体使用5

typedefstructpoint_type{intx;inty;}POINT;

在这里,POINT与structpoint_type完全等价POINTp1;2022/11/293结构体使用5结构体变量的使用

使用结构体变量时,一般不能作为一个整体使用,除了允许具有相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括赋值、输入、输出、运算等都是通过结构变量的成员来实现的。2022/11/293结构体使用5结构体变量的使用使用方法:变量名.成员名structpoint_type{intx;inty;}p1,p2;p1.x=2;/*p1的x坐标赋值为2*/p2.y=5;/*p2的y坐标赋值为5*/2022/11/293结构体使用5structpoint_type{intx;inty;}p1,p2;xyp2xyp1结构体类型只是一个模板,只是规定了其内容的结构,该类型的变量具有和他一样的结构p1和p2的结构一样,都有x,y

其中x和y都是整型变量让p1的x等于3:p1.x=3;从键盘给p2的y输入scanf(“%d”,&p2.y);2022/11/29structstu{charname[10];charno[20];charclass[10];intage;intscore;};structstus1,s2;把””放到s1的name中:strcpy(,””);从键盘输入s1的nogets(s1.no);输出s1和s2的平均年龄printf(“%f”,(s1.age+s2.age)/2.0)2022/11/293结构体使用5结构体型变量的基本操作structdated;结构体型变量的输入:针对成员进行

scanf(“%d%d%d”,&d.year,&d.month,&d.day);结构体型变量的输出:针对成员进行

printf(“%d%d%d”,d.year,d.month,d.day);2022/11/293结构体使用5结构体型变量的基本操作

3.结构体型变量的赋值针对成员structdated1,d2;d1.year=2005;d1.month=5;d1.day=20;针对整体:将一个变量的值赋给另一个类型完全相同的变量,d2=d1;2022/11/293结构体使用5结构体型变量的基本操作

4.结构体型变量的初始化structpoint_type{intx;inty;};structpoint_typep1={2,5};2022/11/293结构体应用6例1:编写程序,实现复数的加法分析:定义一个新的类型,可以保存复数信息这个类型具有什么样的结构?2+3i4-8i实部虚部2022/11/293结构体应用6structcomplex{intreal;intimge;}c1,c2,c3;intmain(){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);return0;}分别运算在定义类型时定义变量lesson15_01.c2022/11/293课堂练习7使用结构体的方法计算两个坐标点的距离坐标点使用结构体表示2022/11/293结构体数组8结构体数组与一般变量可以构成数组一样结构体类型也有数组structdated[10];inta[10]定义方法:类型数组名[长度]2022/11/293结构体数组8结构体数组的初始化structpoint_type{intx;inty;};structpoint_typep[3]={{2,5},{5,6},{7,9}};25p[0]56p[1]79p[2]2022/11/293结构体数组8例2:输入如下的5个学生的信息并输出张三2011230111T1123-11998李四2011230112T1123-11967王五2011230113T1123-12088赵六2011230210T1123-21978刘七2011230219T1123-221802022/11/29structstu{charname[10];charno[20];charclass[10];intage;intscore;};2022/11/29intmain(){structstus[10];inti;for(i=0;i<5;i++)scanf(“%s%s%s%d%d”,s[i].name,s[i

温馨提示

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

评论

0/150

提交评论