您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > lesson15数据的组织结构二结构体
2019/9/10电气与信息工程学院计算机系制作Lesson15数据的组织结构2019/9/10电气与信息工程学院计算机系制作学习目标:31学会使用结构体表达数据2019/9/10电气与信息工程学院计算机系制作3结构体的概念2intx=1;int表示一个类型:整数x是这种类型的变量在x中存放了一个整数12019/9/10电气与信息工程学院计算机系制作3结构体的概念2abc在C语言中能不能用一个变量来表示点abc2019/9/10电气与信息工程学院计算机系制作3结构体的概念2rect1rect2rect3在C语言中能不能用一个变量来表示矩形:rect1rect2rect32019/9/10电气与信息工程学院计算机系制作3结构体的概念2在C语言中能不能用一个变量来表示angle和刘德华我叫刘德华今年45岁电话是54321我叫angle今年5岁电话是123452019/9/10电气与信息工程学院计算机系制作3结构体的概念2分析以上信息包含的内容:1、点:横坐标、纵坐标2、矩形:左上角的坐标长、宽3、人物:姓名、年龄、电话总之:他们是一个组合体2019/9/10电气与信息工程学院计算机系制作3结构体的概念2如果需要在C语言中表达这类信息:需要告诉C语言他们是一个什么样的结构,即告诉C语言,他们包含哪些内容?例如:如果需要在计算机中表达“点”,则需要告诉计算机点是应该包含两部分:横坐标、纵坐标2019/9/10电气与信息工程学院计算机系制作3结构体的概念2结构体类型的概念结构体是一种可以将若干个不同数据类型的变量组合在一起的复合型数据类型。人们常常借助于它将表达同一对象的不同属性封装在一起,使之达到逻辑概念与程序变量一一对应的目的。从而提高程序的清晰度,降低程序的复杂度,改善程序的可维护性。2019/9/10电气与信息工程学院计算机系制作3结构体3定义结构体类型一般方法struct结构体名{类型成员1的名字;类型成员2的名字;….….};注意分号注意:只是告诉计算机,程序中定义了一种新的类型(模板),这种类型的变量具有这样的结构(组成)2019/9/10电气与信息工程学院计算机系制作3结构体3例如:structpoint_type{intx;/*x坐标*/inty;/*y坐标*/};定义了一个类型point_type,他包含两部分:整型的x和整型的y2019/9/10电气与信息工程学院计算机系制作3结构体3例如:定义一个结构体类型stu,其组成应该包含如下部分:姓名(字符串)学号(字符串)班级(字符串)年龄(整数)成绩(小数)2019/9/10电气与信息工程学院计算机系制作3结构体3structstu{charname[10];charno[20];charclass[10];intage;floatscore;};注意:1、每个组成部分都有名称2、每个组成部分都有类型3、组成部分排名不分先后4、组成部分的数量不受限制,根据需要定义例如:2019/9/10电气与信息工程学院计算机系制作3结构体3一个结构体可以包含另一个结构体作为其成员结构体类型:嵌套的结构体例:如何定义结构体类型表示平面上的矩形顶点lefttop顶点rightbottom例如:一个矩形可以使用左上角的顶点和右下角的顶点表示,即只需要包含两个成员。而这个成员又是一个点(point)类型2019/9/10电气与信息工程学院计算机系制作3结构体3用point_type类型声明结构体类型:structrectangle_type{structpoint_typelefttop;/*左上角坐标*/structpoint_typerightbottom;/*右下角坐标*/};structpoint_type{intx;/*x坐标*/inty;/*y坐标*/};注意:必须先定义point_type结构体类型2019/9/10电气与信息工程学院计算机系制作3课堂练习4定义一个日期结构体类型,其组成结构为:年、月、日2019/9/10电气与信息工程学院计算机系制作3结构体使用5程序中定义了结构体类型后,只是声明了一种数据类型,定义了一个模板,在这个模板中,规定了其数据的组成(包含结构)一定要使用结构体类型定义该类型的变量,才可以表示、存储该类型的数据2019/9/10电气与信息工程学院计算机系制作3结构体使用5struct结构体名变量名structstustu1;structdated1,d2;定义结构体变量的方法:2019/9/10电气与信息工程学院计算机系制作3结构体使用5也可以直接在定义结构体类型时定义structstu{charname[10];charno[20];charclass[10];intage;intscore;}stu1,stu2;结构体类型名称结构体变量名称2019/9/10电气与信息工程学院计算机系制作3结构体使用5在C语言中,允许用户为已经存在的数据类型起一个别名,其说明格式为:typedef原数据类型新数据类型名;2019/9/10电气与信息工程学院计算机系制作3结构体使用5注意:“类型名”必须是系统提供的数据类型或用户已定义的数据类型。定义替代类型名的作用是:给已有的类型起个别名标识符例如:typedefintINTEGER;int和INTEGER完全等价INTEGERa;2019/9/10电气与信息工程学院计算机系制作3结构体使用5typedefstructpoint_type{intx;inty;}POINT;在这里,POINT与structpoint_type完全等价POINTp1;2019/9/10电气与信息工程学院计算机系制作3结构体使用5结构体变量的使用使用结构体变量时,一般不能作为一个整体使用,除了允许具有相同类型的结构变量相互赋值以外,一般对结构变量的使用,包括赋值、输入、输出、运算等都是通过结构变量的成员来实现的。2019/9/10电气与信息工程学院计算机系制作3结构体使用5结构体变量的使用使用方法:变量名.成员名structpoint_type{intx;inty;}p1,p2;p1.x=2;/*p1的x坐标赋值为2*/p2.y=5;/*p2的y坐标赋值为5*/2019/9/10电气与信息工程学院计算机系制作3结构体使用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);2019/9/10电气与信息工程学院计算机系制作structstu{charname[10];charno[20];charclass[10];intage;intscore;};structstus1,s2;namenoclassagescorenamenoclassagescore把””放到s1的name中:strcpy(s1.name,””);从键盘输入s1的nogets(s1.no);输出s1和s2的平均年龄printf(“%f”,(s1.age+s2.age)/2.0)2019/9/10电气与信息工程学院计算机系制作3结构体使用5结构体型变量的基本操作structdated;1.结构体型变量的输入:针对成员进行scanf(“%d%d%d”,&d.year,&d.month,&d.day);2.结构体型变量的输出:针对成员进行printf(“%d%d%d”,d.year,d.month,d.day);2019/9/10电气与信息工程学院计算机系制作3结构体使用5结构体型变量的基本操作3.结构体型变量的赋值•针对成员structdated1,d2;d1.year=2005;d1.month=5;d1.day=20;•针对整体:将一个变量的值赋给另一个类型完全相同的变量,d2=d1;2019/9/10电气与信息工程学院计算机系制作3结构体使用5结构体型变量的基本操作4.结构体型变量的初始化structpoint_type{intx;inty;};structpoint_typep1={2,5};2019/9/10电气与信息工程学院计算机系制作3结构体应用6例1:编写程序,实现复数的加法分析:定义一个新的类型,可以保存复数信息这个类型具有什么样的结构?2+3i4-8i实部虚部2019/9/10电气与信息工程学院计算机系制作3结构体应用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.c2019/9/10电气与信息工程学院计算机系制作3课堂练习7使用结构体的方法计算两个坐标点的距离坐标点使用结构体表示2019/9/10电气与信息工程学院计算机系制作3结构体数组8结构体数组与一般变量可以构成数组一样结构体类型也有数组structdated[10];inta[10]定义方法:类型数组名[长度]2019/9/10电气与信息工程学院计算机系制作3结构体数组8结构体数组的初始化structpoint_type{intx;inty;};structpoint_typep[3]={{2,5},{5,6},{7,9}};25p[0]56p[1]79p[2]2019/9/10电气与信息工程学院计算机系制作3结构体数组8例2:输入如下的5个学生的信息并输出张三2011230111T1123-11998李四2011230112T1123-11967王五2011230113T1123-12088赵六2011230210T1123-21978刘七2011230219T1123-221802019/9/10电气与信息工程学院计算机系制作structstu{charname[10];charno[20];charclass[10];intage;intscore;};2019/9/10电气与信息工程学院计算机系制作intmain(){structstus[10];inti;for(i=0;i5;i++)scanf(“%s%s%s%d%d”,s[i].name,s[i].no,s[i].class,&(s[i].age),&(s[i].score));for(i=0;i5;i++)printf(“%s%s%s%d%d\n”,s[i].name,s[i].no,s[i].class,s[i].age,s[i].score);return0;}lesson15_02.c2019/9/10电气与信息工程学院计算机系制作3课后练习9定义一个书籍的结构体类型,具体信息包括:书名、作者、出版日期、价格。从键盘输入5本书的信息后输出。
本文标题:lesson15数据的组织结构二结构体
链接地址:https://www.777doc.com/doc-841655 .html