C语言课件:第十章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言课件:第十章.ppt》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 第十
- 资源描述:
-
1、共 40 页 第 1 1 页共 40 页 第 2 2 页 掌握结构类型数据的定义和引用;掌握结构类型数据的定义和引用; 了解共用体类型数据的定义和引用。了解共用体类型数据的定义和引用。共 40 页 第 3 3 页 如果将这些属性分别定义为互相独立的简单变量,则难以如果将这些属性分别定义为互相独立的简单变量,则难以反映相互间的反映相互间的内在联系内在联系( (同一个学生的属性同一个学生的属性) ) 可采用可采用结构体数据结构结构体数据结构描述上述信息描述上述信息, ,将不同类型的数据将不同类型的数据组合成一个有机的整体,这些数据是相互联系的。组合成一个有机的整体,这些数据是相互联系的。问题:问题
2、:l结构是逻辑上相互联系的一组分量的集合。结构是逻辑上相互联系的一组分量的集合。l结构中的分量可以是不同类型的数据,结构中的分结构中的分量可以是不同类型的数据,结构中的分量称为结构的成员量称为结构的成员一个学生有学号一个学生有学号/姓名姓名/性别性别/年龄年龄/地址等属性地址等属性在使用结构之前,首先要对结构的组成进行描述,称为在使用结构之前,首先要对结构的组成进行描述,称为结构结构的定义的定义。结构定义说明了该结构的组成成员,以及每个成员。结构定义说明了该结构的组成成员,以及每个成员的类型。的类型。n u mn am esexageaddr1 0 0 1 0L i m inM1 8D ali
3、an共 40 页 第 4 4 页例例: :structstruct student student int int num; num; char name20; char name20; char sex; char sex; int int age; age; char addr30; char addr30; ; 定义一个结构体类型定义一个结构体类型的一般形式为:的一般形式为:struct 结构体结构体类型名类型名 成员表列成员表列 ;对各成员都要进行类型说明;对各成员都要进行类型说明;成员名定名规则与变量名同。成员名定名规则与变量名同。共 40 页 第 5 5 页方法一:方法一:先定义结
4、构体类型再定义变量名先定义结构体类型再定义变量名structstruct student studentintint num; num; char name20; char name20; char sex; char sex; int int age; age; char addr30; char addr30; ;structstruct student student1, student2; student student1, student2;定义定义studet1和和sudent2为为struct student类型变量类型变量不能只指定一个变不能只指定一个变量为量为“struct型
5、型”而不而不指定结构体名指定结构体名共 40 页 第 6 6 页可用符号常量代表一个结构体类型,如:可用符号常量代表一个结构体类型,如:#define #define STUDENTSTUDENT struct struct student studentSTUDENTSTUDENTintint num; num; char name20; char name20; char sex; char sex; int int age; age; char addr30; char addr30;这样,可直接用这样,可直接用STUDENT定义变量,如:定义变量,如:STUDENT student1,
6、 student2;此时,不必再写关键字此时,不必再写关键字struct共 40 页 第 7 7 页方法二:方法二:在定义类型的同时定义变量,在定义类型的同时定义变量,如:如:structstruct student studentintint num; num; char name20; char name20; char sex; char sex; int int age; age; char addr30; char addr30;student1, student2;student1, student2;一般形式:一般形式:struct 结构体名结构体名 成员表列成员表列 变量名表列
7、;变量名表列;共 40 页 第 8 8 页方法三:方法三:直接定义结构类型变量。直接定义结构类型变量。其一般形式是:其一般形式是:structstruct 成员表列成员表列 变量名表列;变量名表列;此时,不出现结构体名此时,不出现结构体名共 40 页 第 9 9 页几点说明:几点说明:1. 1. 类型与变量是不同概念,不要混淆;类型与变量是不同概念,不要混淆;2. 2. 结构体中的成员,可以单独使用,其作用与结构体中的成员,可以单独使用,其作用与地位相当于普通变量;地位相当于普通变量;3. 3. 成员也可以是一个结构体变量;例如:成员也可以是一个结构体变量;例如:struct date int
8、 month; int day; int year; ;Struct studentint num;char name20;int age;struct date birthday;student1,student2;4. 成员名可以与程序中的变量名相同,二者不成员名可以与程序中的变量名相同,二者不代表同一对象。代表同一对象。共 40 页 第 1010 页10.1.3 10.1.3 结构体变量的引用结构体变量的引用规则:规则:1.1. 不能将一个结构体变量作为一个整体进行赋值和不能将一个结构体变量作为一个整体进行赋值和输出;只能对其各个成员分别输出输出;只能对其各个成员分别输出 引用形式为:引
9、用形式为:结构体变量名结构体变量名. .成员名成员名printfprintf(“(“.”,student1);.”,student1);printfprintf(“ %d”, student1.num); (“ %d”, student1.num); 输出输出 1001010010错!正确!2 . 若成员本身又属一个结构体类型,只能对最低若成员本身又属一个结构体类型,只能对最低级的成员进行赋值或存取以及运算。级的成员进行赋值或存取以及运算。 如:如:student1.birthday.year=2010共 40 页 第 1111 页3.3. 对成员变量可以象普通变量一样进行各种运算,对成员变量
10、可以象普通变量一样进行各种运算,如:如: sumagesumage=student1.age+student2.age;=student1.age+student2.age;4.4. 可以引用成员的地址,也可以引用结构体变量的可以引用成员的地址,也可以引用结构体变量的地址地址, ,如如 scanf(“%d”,&student1.num);scanf(“%d”,&student1.num); printf(“%o”,&student1); printf(“%o”,&student1); scanf(“%d,%s,%c,%d,%s”,&student1); scanf(“%d,%s,%c,%d,%
11、s”,&student1);错!错!输入输入student1.num的值的值输出输出student1的首地址的首地址共 40 页 第 1212 页 10.1.4 10.1.4 结构体变量的初始化结构体变量的初始化main( )main( ) struct struct student student long int long int num; num; char name20; char name20; char sex; char sex; char addr20; char addr20; a=9801,”Wang hong”,W,”2 Linggong a=9801,”Wang hon
12、g”,W,”2 Linggong Road”;Road”;printf(“No.:%ldnname:%snsex:%cnaddress:%sprintf(“No.:%ldnname:%snsex:%cnaddress:%sn”,a.num,a.name,a.sex,a.addrn”,a.num,a.name,a.sex,a.addr);); 运行结果为:No.:9801name:Wang hongsex:Waddress:2 Linggong Road共 40 页 第 1313 页l 在结构体在结构体中中使用使用数组数组类型类型作为作为结构的一个结构的一个成员成员;l 用结构体用结构体类型类型
13、作为作为数组元素的数组元素的基类型构成数组基类型构成数组。结构与数组的关系结构与数组的关系例:例:structstruct student student int xh int xh; ; char xm14; char xm14; char xb char xb; ; float sx float sx; ; xscj96; xscj96;96个元素都具有结构数据类型共 40 页 第 1414 页 结构体数组是一个数组,数组中的每一个元素结构体数组是一个数组,数组中的每一个元素都是结构类型。都是结构类型。 说明结构数组的方法:先定义一个结构,再用说明结构数组的方法:先定义一个结构,再用结构类
14、型说明一个数组变量。结构类型说明一个数组变量。例例:为记录为记录100个人的基本情况,说明一个有个人的基本情况,说明一个有100个元个元素的数组。数组的素的数组。数组的基类型为结构基类型为结构 structstruct person person char name 30; char sex; struct date birthday manman100100 ;(;(数组名与结构体名可以不同数组名与结构体名可以不同) )man就是有就是有100个元素的结构数组,数组的每个个元素的结构数组,数组的每个元素为元素为 person 型。型。10.2.110.2.1结构体数组的定义结构体数组的定义共
15、 40 页 第 1515 页例如:structstruct student studentintint num; num; char name20; char name20; char sex; char sex; int int age; age; char addr30; char addr30; struct struct student stu3; student stu3;struct student int num; stu3;或或struct int num; stu3;一般形式:structstruct 结构体类型名结构体类型名 元素元素 ;structstruct 结构体类型
16、名结构体类型名 结构体数组名结构体数组名; ;共 40 页 第 1616 页strcpy ( man3.name, Fangjinstrcpy ( man3.name, Fangjin” );” );man3.sex = M;man3.sex = M;man3.birthday.year = 1963;man3.birthday.year = 1963;man3.birthday.month = 9;man3.birthday.month = 9;man3.birthday.day = 13;man3.birthday.day = 13;例如:例如:要将数组要将数组manman中的中的3 3号
17、元素赋值为:号元素赋值为:FangjinFangjin, M, 1963, 9, 13, M, 1963, 9, 13,使用下列语句:使用下列语句:为数组中一个元素的每个成员赋值为数组中一个元素的每个成员赋值共 40 页 第 1717 页结构数组存放在连续的内存区域中,所占结构数组存放在连续的内存区域中,所占内内存大小存大小为为结构类型的大小结构类型的大小乘以数组元素的乘以数组元素的数数量量。structstruct person man100: 37 person man100: 37* *100 = 100 = 37003700字节字节301 222301 222301 222.ns ym
18、dns ymdns ymdman0man1man99 将将“FangjFangji in n”改为改为“FangjFangju un n”: manman3 3.name.name5 5 = = u u;/ /* *为数组中元素的数组成员中的一个字符赋值为数组中元素的数组成员中的一个字符赋值* */ /共 40 页 第 1818 页10.2.3 10.2.3 结构体数组的初始化结构体数组的初始化structstruct student studentintint num; num; char name20; char name20; char sex; int char sex; int ag
19、e; age; char addr30; char addr30; stu3=111,”Li”,M,18,”Dalian”, stu3=111,”Li”,M,18,”Dalian”,;也可采用:也可采用:structstruct student student int int num; num; ; ; struct student stu struct student stu=,;结构体数组的初始化的一般形式是在结构体数组的初始化的一般形式是在定义数组后面加上:定义数组后面加上:=初值表列初值表列;共 40 页 第 1919 页例:设有三个候选人,每次输入一个得票的候选人的名字,要例:设有三
20、个候选人,每次输入一个得票的候选人的名字,要求最后输出各人得票结果。求最后输出各人得票结果。#include “string.h#include “string.h”structstruct person person char name20; char name20; int int count; count; leader3=“Li”,0,”zhang”,0,”Liu”,0; leader3=“Li”,0,”zhang”,0,”Liu”,0;main( )main( ) int int i, j; i, j; char leader_name20; char leader_name20;
21、for( i= for( i=1 1;i=10;i+);i=10;i+) scanf(“%s”,leader_name scanf(“%s”,leader_name);); for(j=0;j3;j+) for(j=0;j3;j+) if(strcmp(leader_name,leaderj.name if(strcmp(leader_name,leaderj.name)=0) )=0) leaderj.count leaderj.count+;+; for(i for(i=0;i3;i+)=0;i3;i+) printf(“%5s:%dn”,leaderi.name,leaderi.coun
展开阅读全文