构造数据类型精选文档.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《构造数据类型精选文档.ppt》由会员分享,可在线阅读,更多相关《构造数据类型精选文档.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、构造数据类型2022/10/251本讲稿第一页,共七十七页9.1 结构体数据类型结构体数据类型 前面介绍的变量都只包含一种类型前面介绍的变量都只包含一种类型,但在实际问题,但在实际问题中,常常要求把一些属于不同类型的数据作为一个整体中,常常要求把一些属于不同类型的数据作为一个整体来处理。来处理。如:一个职员的编号、姓名、年龄、性别、身份证号码、如:一个职员的编号、姓名、年龄、性别、身份证号码、民族、文化程度、职务、住址、联系电话等等。民族、文化程度、职务、住址、联系电话等等。由一些不同类型的数据组合而成的数据整体,由一些不同类型的数据组合而成的数据整体,C语言语言称之为称之为“结构体结构体”类
2、型类型,结构体中所包含的数据元素称之为,结构体中所包含的数据元素称之为成员成员。2022/10/252本讲稿第二页,共七十七页9.1.2 结构的概念与定义使用结构来表示通讯录信息:struct friends_list char name10;/*姓名姓名*/int age;/*年龄年龄*/char telephone13;/*联系电话联系电话*/;结构:结构:构造数据类型构造数据类型,把有内在联系的,把有内在联系的不同类型的数不同类型的数据据统一成一个整体,使它们相互关联统一成一个整体,使它们相互关联结构又是变量的集合,可以单独使用其成员结构又是变量的集合,可以单独使用其成员2022/10/
3、253本讲稿第三页,共七十七页结构的定义结构类型定义的一般形式为:结构类型定义的一般形式为:struct 结构名结构名 类型名类型名 结构成员名结构成员名1;类型名类型名 结构成员名结构成员名2;类型名类型名 结构成员名结构成员名n;;结构的定义以分号结束,结构的定义以分号结束,被看作一条语句被看作一条语句 关键字关键字struct和它后面的和它后面的结构名一起组成一个新的结构名一起组成一个新的数据类型名数据类型名 2022/10/254本讲稿第四页,共七十七页结构体类型的特点:结构体类型的特点:结构体名为任何合法的标识符,建议用具有结构体名为任何合法的标识符,建议用具有一定意义的单词或组合作
4、为结构体名。一定意义的单词或组合作为结构体名。虽然成员的类型定义形式同简单变量,但虽然成员的类型定义形式同简单变量,但不不能直接使用能直接使用。定义结构体类型只是定义结构体类型只是定义类型定义类型而不是定义变而不是定义变量。量。2022/10/255本讲稿第五页,共七十七页结构定义示例定义平面坐标结构:struct point double x;double y;虽然x、y的类型相同,也可以用数组的方式表示,但采用结构体描述整体性更强,增加了程序的可读性,使程序更清晰。2022/10/256本讲稿第六页,共七十七页9.1.3 结构的嵌套定义在实际生活中,一个较大的实体可能由多个成员构成,而这些
5、成员中有些又有可能是由一些更小的成员构成的实体。在手机通讯录中,增加“通信地址”姓名性别年龄 通信地址联系电话电子邮箱城市街道门牌号邮编2022/10/257本讲稿第七页,共七十七页结构的嵌套定义struct address char city10;char street20;int code;int zip;struct nest_friendslist char name10;int age;struct address addr;char telephone13;nest_friend;在定义嵌套的结构类型时,必须先定义成员的在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构
6、类型。结构类型,再定义主结构类型。姓名性别年龄 通信地址联系电话电子邮箱城市街道门牌号邮编2022/10/258本讲稿第八页,共七十七页9.2 结构变量 9.2.1 结构变量的定义和初始化结构变量的定义和初始化9.2.2 结构变量的使用结构变量的使用2022/10/259本讲稿第九页,共七十七页9.2.1结构变量的定义和初始化三种定义结构变量的方式:1.单独定义单独定义先定义结构类型结构类型,再定义具有这种结构类型的变量 struct friends_list char name10;/*姓名*/int age;/*年龄*/char telephone13;/*联系电话*/;struct fr
7、iends_list friend1,friend2;2022/10/2510本讲稿第十页,共七十七页结构变量的定义2.混合定义混合定义在定义结构体类型的同时定义结构体变量 struct friends_listchar name10;int age;char telephone13;friend1,friend2;3.无类型名定义无类型名定义在定义结构体变量时省略结构体名struct char name10;int age;char telephone13;friend1,friend2;2022/10/2511本讲稿第十一页,共七十七页结构变量的初始化 struct friends_lis
8、t friend1=Zhang,26,0571-85171880 ;name age telephone Zhang260571-852718802022/10/2512本讲稿第十二页,共七十七页9.2.2 结构变量的使用1.结构变量成员的引用结构变量名结构变量名.结构成员名结构成员名friend1.age=26;strcpy(friend1.name,Zhang San);nest_friend.addr.zip2022/10/2513本讲稿第十三页,共七十七页2、将结构体变量作为一个整体来使用。、将结构体变量作为一个整体来使用。可以将一个结构体变量作为一个整体赋给另一个结构体变可以将一个结
9、构体变量作为一个整体赋给另一个结构体变量,条件是这两个变量必须量,条件是这两个变量必须具有相同的结构体类型具有相同的结构体类型。例如:例如:struct friend_list doctor=“Li Ming”,24,88753540;struct friend_list teacher;teacher=doctor;/*将结构体变量将结构体变量doctor的值赋给的值赋给teacher*/这样,变量这样,变量teacher中各成员的值均与中各成员的值均与doctor 的成员的值相同。的成员的值相同。2022/10/2514本讲稿第十四页,共七十七页【例例9-1】阅读下面的程序,了解结构体成员
10、的使用阅读下面的程序,了解结构体成员的使用/*exam9_1.c 结构体成员的使用结构体成员的使用*/#include#include struct scoreint math;int eng;int comp;struct stu char name12;char sex;long StuClass;struct score sub;2022/10/2515本讲稿第十五页,共七十七页main()struct stu student1=Li Ming,M,990324,88,80,90;struct stu student2;student2=student1;student2.name0=H
11、;student2.name1=u;student2.StuClass=990325;student2.sub.math=83;printf(Record1-%s,%c,%ld,%d,%d,%dn,student1.name,student1.sex,student1.StuClass,student1.sub.math,student1.sub.eng,p);printf(Record2-%s,%c,%ld,%d,%d,%dn,student2.name,student2.sex,student2.StuClass,student2.sub.math,student2.sub.eng,p);
12、程序运行结果程序运行结果:Record1-Li Ming,M,990324,88,80,90Record1-Hu Ming,M,990325,83,80,90 2022/10/2516本讲稿第十六页,共七十七页9.1.5 结构型变量成员的输入结构型变量成员的输入/输出输出 对变量的成员进行输入对变量的成员进行输入/输出,如下所示:输出,如下所示:scanf(“%s%s%ld”,stud.name,stud.addr,&stud.zip);printf(“%s,%s,%ldn”,stud.name,stud.addr,stud.zip);也可以用也可以用gets函数和函数和puts函数输入和输出
13、一个结构变量中字符数组函数输入和输出一个结构变量中字符数组成员。如:成员。如:gets(stud.name);/*输入一个字符串给输入一个字符串给stud.name*/puts(stud.name);/*将将stud.name数组中的字符串输出到显数组中的字符串输出到显示器示器*/2022/10/2517本讲稿第十七页,共七十七页9.2 结构体数组结构体数组 结构体数组结构体数组,亦即数组中每一个元素都是一个,亦即数组中每一个元素都是一个结构体变量。结构体变量。9.2.1 结构体数组的定义结构体数组的定义 结构体数组的定义方法与结构体变量的定义方法相同。结构体数组的定义方法与结构体变量的定义方
14、法相同。一、一、先先定义定义结构体结构体,再再定义结构体定义结构体数组数组:struct ;struct ;2022/10/2518本讲稿第十八页,共七十七页二、在定义结构体的二、在定义结构体的同时同时,定义结构体数组:,定义结构体数组:struct ;三、直接定义结构体变量而不定义结构体名;三、直接定义结构体变量而不定义结构体名;struct ;2022/10/2519本讲稿第十九页,共七十七页9.2.2 结构体数组成员的初始化和引用结构体数组成员的初始化和引用 结构体数组成员的值也可以初始化,初始化结构体数组成员的值也可以初始化,初始化的形式与的形式与二维数组二维数组的初始化形式类似。的初
15、始化形式类似。例如:例如:struct student stu30=“LiFei”,“DongFeng Road 14”,430038,“LiMing”,“zhongshan Road 378”,430082,“LiYong”,“Xiao Shan Road 25”,430001;2022/10/2520本讲稿第二十页,共七十七页 结构体数组的引用完全类似于结构体变量的引用,只结构体数组的引用完全类似于结构体变量的引用,只是用是用结构体数组元素结构体数组元素来代替来代替结构体变量结构体变量,其他规则不变,其他规则不变,如下面所示:如下面所示:*/引用某一元素的成员引用某一元素的成员 */stu
16、0.namestu0.agestu0=stu2;*/将结构体数组元素作为一个整体来使将结构体数组元素作为一个整体来使用用*/2022/10/2521本讲稿第二十一页,共七十七页9.3 结构体变量与函数结构体变量与函数 一、函数的形参与实参为结构型一、函数的形参与实参为结构型【例例9-2】下面的程序是计算四种书的购书情况,并输出统计下面的程序是计算四种书的购书情况,并输出统计结果。结果。分析分析,定义一个结构体类型定义一个结构体类型BookLib,用来描述购书的信息用来描述购书的信息,还定义了一个函数还定义了一个函数list,它的参数为结构型变量它的参数为结构型变量,函数的作函数的作用是计算购书
17、的总费用并输出所有信息。用是计算购书的总费用并输出所有信息。在主程序中,定义了一个临时字符数组变量在主程序中,定义了一个临时字符数组变量temp15,用于将,用于将用户输入的两个数值:一个是书的数目用户输入的两个数值:一个是书的数目num,另一个是书,另一个是书的价格的价格price作为字符串来接收,然后通过作为字符串来接收,然后通过atoi()函数和函数和atof()函数将函数将temp转成整型值和实型值。转成整型值和实型值。2022/10/2522本讲稿第二十二页,共七十七页/*exam9_2.c 函数的参数为结构类型函数的参数为结构类型*/#include#include#include
18、 struct BookLib char name12;int num;float price;float SumMoney;2022/10/2523本讲稿第二十三页,共七十七页main()void list(struct BookLib StuBook);struct BookLib Book4;int i;char temp15;for(i=0;i4;i+)printf(Please input data of book(%d):Name Number Pricen,i+1);gets(Booki.name);gets(temp);Booki.num=atoi(temp);gets(tem
19、p);Booki.price=atof(temp);2022/10/2524本讲稿第二十四页,共七十七页printf(-n);printf(name num price SumMoneyn);for(i=0;i4;i+)list(Booki);void list(struct BookLib StuBook)StuBook.SumMoney=StuBook.num*StuBook.price;printf(%-12s%5d%6.2f%9.2fn,StuBook.name,StuBook.num,StuBook.price,StuBook.SumMoney);2022/10/2525本讲稿第二十
20、五页,共七十七页程序运行结果程序运行结果:Please input data of book:Name Number PriceComputer 300 18.6 Please input data of book:Name Number PriceMathematics 600 15.5 Please input data of book:Name Number PriceEnglish 360 22.8 Please imput data of book:Name Number PriceChemistry 150 14.2 2022/10/2526本讲稿第二十六页,共七十七页-name
21、num price SumMoneyComputer 300 18.60 5580.00Mathematics 600 15.50 9300.00English 360 22.80 8208.00Chemistry 150 14.20 2130.002022/10/2527本讲稿第二十七页,共七十七页二、函数的返回值类型为结构型二、函数的返回值类型为结构型 C标准中还允许函数的返回值为结构体类型的值。标准中还允许函数的返回值为结构体类型的值。【例例9-3】把上面这个程序例子稍作修改,将数据输入用一个把上面这个程序例子稍作修改,将数据输入用一个函数函数NewBook()来实现。来实现。/*exa
22、m9_3.c 函数的返回值为结构类型函数的返回值为结构类型*/#include#include#include 2022/10/2528本讲稿第二十八页,共七十七页struct BookLibchar name12;int num;float price;float SumMoney;void list(struct BookLib StuBook)StuBook.SumMoney=StuBook.num*StuBook.price;printf(%-12s%5d%6.2f%9.2fn,StuBook.name,StuBook.num,StuBook.price,StuBook.SumMone
23、y);2022/10/2529本讲稿第二十九页,共七十七页struct BookLib NewBook()struct BookLib book;char temp15;printf(Please input data of book:Name Number Pricen);gets(book.name);gets(temp);book.num=atoi(temp);gets(temp);book.price=atof(temp);return(book);2022/10/2530本讲稿第三十页,共七十七页main()struct BookLib Book4;int i;for(i=0;i4;
24、i+)Booki=NewBook();printf(-n);printf(name num price SumMoneyn);for(i=0;i4;i+)list(Booki);程序中定义了两个函数:无返回值的函数程序中定义了两个函数:无返回值的函数list(),返回值为,返回值为结构体类型变量的函数结构体类型变量的函数NewBook()用来给结构体变量数组赋用来给结构体变量数组赋值。值。2022/10/2531本讲稿第三十一页,共七十七页例例9-4 构建简单的手机通讯录构建简单的手机通讯录联系人的基本信息:姓名、年龄和联系电话联系人的基本信息:姓名、年龄和联系电话最多容纳最多容纳50名联系人
25、的信息名联系人的信息 具有新建和查询功能具有新建和查询功能2022/10/2532本讲稿第三十二页,共七十七页程序解析程序结构程序结构程序结构主函数主函数main:程序的总体控制:程序的总体控制函数函数new_friend:新建联系人功能:新建联系人功能函数函数search_friend:查询联系人功能:查询联系人功能 main()new_friend()search_friend()2022/10/2533本讲稿第三十三页,共七十七页程序解析数据类型程序解析数据类型/变量变量数据类型数据类型/变量变量结构类型结构类型struct friends_list:在程序首部定义,其:在程序首部定义,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 构造 数据类型 精选 文档
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内