C语言程序设计课程课件之第五章复杂构造数据类型.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C语言程序设计课程课件之第五章复杂构造数据类型.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 课程 课件 第五 复杂 构造 数据类型
- 资源描述:
-
1、Rose第五章 复杂构造数据类型济南大学Rose 1 概述在解决实际问题时,有时需要将多个不同的数据类型组合在一起表达一个整体的信息。例如:描述一个学生的完整信息时,有学号、姓名、年龄、成绩、家庭地址等项。这些项目之间是彼此联系的,应组织定义成一个组合项,统一表示和使用,见下例:济南大学Rose结构体类型举例学号学号姓名姓名性别性别年龄年龄成绩成绩家庭地址家庭地址intnumcharname8charsexintagefloatscorecharaddr209001 李华李华女女2086济南济南某一个学生的具体信息表示:某一个学生的具体信息表示:济南大学Rose结构体类型定义 这种由若干个不同
2、类型的数据项组成的这种由若干个不同类型的数据项组成的组合类型,在组合类型,在C C语言中叫做结构体类型,相当语言中叫做结构体类型,相当于其它语言中描述的于其它语言中描述的“记录记录”。结构体类型在使用之前应先定义其类型结构体类型在使用之前应先定义其类型结构,然后再定义该类型变量,才能使用。结构,然后再定义该类型变量,才能使用。如上实例:如上实例:济南大学Rose结构体类型定义结构体类型定义 struct student int num;char name8;char sex;int age;float score;char addr20;结构体描述:结构体描述:学号学号姓名姓名性别性别年龄年龄
3、成绩成绩家庭地家庭地址址intnumcharname8charsexintagefloatscorecharaddr20济南大学Rose定义有定义有n n个成员的结构体类型的一般形式:个成员的结构体类型的一般形式:struct结构体类型名结构体类型名类型标识符类型标识符1成员名成员名1;类型标识符类型标识符2 成员名成员名2;.类型标识符类型标识符n 成员名成员名n;说明:说明:1、用、用 将成员扩起来。将成员扩起来。2、成员的类型可以是任意类型,称、成员的类型可以是任意类型,称为一个域或一个数据项。为一个域或一个数据项。3、注意最后的分号不能忽略。、注意最后的分号不能忽略。济南大学Rose2
4、定义结构体变量注意前面定义的注意前面定义的student同同int、char等一样只是类等一样只是类型的名字,不是结构体变量,不能直接使用,需由此型的名字,不是结构体变量,不能直接使用,需由此类型继续定义结构体变量才能使用,类型继续定义结构体变量才能使用,步骤步骤:先定义一个结构体类型,再定义变量。先定义一个结构体类型,再定义变量。struct 结构体类型名结构体类型名 变量名列表;变量名列表;注:关键字注:关键字struct 与结构体类型标识符一起使用。与结构体类型标识符一起使用。例:例:struct student stu1,stu2,stu50;已定义的已定义的类型名类型名济南大学Ros
5、e定义了结构体变量后,系统为之分配内存定义了结构体变量后,系统为之分配内存单元,结构体的各成员在内存中是单元,结构体的各成员在内存中是按顺序按顺序连续连续存放的,所以结构体变量在内存中占据的字节存放的,所以结构体变量在内存中占据的字节数是各个成员的长度和,如数是各个成员的长度和,如stu1stu1变量占据内存变量占据内存字节数为字节数为2+8+1+2+4+20=372+8+1+2+4+20=37。学号学号姓名姓名性别性别年龄年龄成绩成绩家庭地家庭地址址intnumcharname8charsexintagefloatscorecharaddr20济南大学Rose2 2、定义类型的同时定义结构体
6、变量、定义类型的同时定义结构体变量:例例 如如:struct 结构体类型名结构体类型名 类型标识符类型标识符1 成员名成员名1;类型标识符类型标识符2 成员名成员名2;类型标识符类型标识符n 成员名成员名n;变量名表变量名表;例例:structstruct note note char name20;char name20;char sex;char sex;char addr20;char addr20;char tel8;char tel8;济南大学Rose3 3、直接定义结构体类型变量、直接定义结构体类型变量:例例 如如:struct 类型标识符类型标识符1 成员名成员名1;类型标识符类
7、型标识符2 成员名成员名2;类型标识符类型标识符n 成员名成员名n;变量名表变量名表;例例:structstruct char name20;char name20;char sex;char sex;char addr20;char addr20;char tel8;char tel8;注意:不出注意:不出现类型名现类型名济南大学Rosestruct date int month;int day;int year;struct student int num;char name8;char sex;int age;struct date birthday;stu1,stu2;济南大学Rose
8、3 结构体变量的引用结构体变量的引用 一般来说,在程序设计中不直接引用结构体变量,而是引用 结构体变量的某个成员变量1 1、成员的引用形式为、成员的引用形式为:成员成员运算符运算符优先级优先级最高。最高。济南大学Rose例例:struct student stu1;引用成员引用成员 stu1.num=9002;gets(stu1.name);stu1.sex=m;printf(“%d,%d”,stu1.num,stu1.name);济南大学Rose2 2、结构体变量使用说明、结构体变量使用说明1.结构体变量通常不能整体使用,不能整体输入、输出,只能对单个成员分别引用。但当结构体变量作为函数参数
9、或赋初值时,可以整体输入;或者两个相同类型的结构体变量,如果一个已经赋值,可以对另外一个整体赋值。济南大学Rose2、结构体变量使用说明2.如果成员本身又属于一个结构体类型,则这个成员也不能整体赋值,要用若干各成员运算符引用,如前面的birthday成员本身又是date类型的变量,则需 stu1.birthday.month=4;stu1.birthday.day=5;stu1.birthday.year=1998;济南大学Rose举例:举例:编程输入一个班级的编程输入一个班级的3030名同学信息,名同学信息,统计来自山东的学生人数。学生信息统计来自山东的学生人数。学生信息由以下几项组成:由以
10、下几项组成:学号,姓名,性别,籍贯学号,姓名,性别,籍贯济南大学Rose程序主要步骤:程序主要步骤:1 1、定义数据类型,结构体类型、定义数据类型,结构体类型studentstudent。2 2、定义该类型的数组、定义该类型的数组cai0801cai0801,长度,长度3030。3 3、循环程序,输入、循环程序,输入3030名同学信息。名同学信息。循环次数:循环次数:3030次,固定次数的循环。次,固定次数的循环。循环体内容:循环体内容:依次为每个元素的各个成员依次为每个元素的各个成员 输入数据。输入数据。比较籍贯成员项的数据是否为比较籍贯成员项的数据是否为 “山东山东”,如果是,则计数器加,
11、如果是,则计数器加1.1.4 4、输出统计后的、输出统计后的countcount值。值。济南大学Rosestruct student char num11;char name8;char sex;char addr20;;main()struct student cai080110;int i,count=0;printf(“input 30 students information:n”);for(i=0;i.num=89101;strcpy(p-.name,Li Lin);/*观察观察name的赋值方式的赋值方式*/p-.sex=M;p-.score=89;济南大学Rose7 7、结构体数
12、组应用举例、结构体数组应用举例 例例11.2 对候选人得票的统计程序。设有对候选人得票的统计程序。设有3个候选人,个候选人,每次输入一个得票的候选人的名字,要求最后输出每次输入一个得票的候选人的名字,要求最后输出各人的得票结果。各人的得票结果。程序定义一个全局结构体数组程序定义一个全局结构体数组leader,并初始化。,并初始化。struct person char name20;int count;leader3=li,0,zhang,0,fu,0;循环循环10次,每次输入一个选举者输入的候选人名次,每次输入一个选举者输入的候选人名字,然后再依次与字,然后再依次与3个候选人比较,是谁的名字就
13、让个候选人比较,是谁的名字就让其得票数加其得票数加1,最后输出统计结果。,最后输出统计结果。济南大学Rose补充:结构体指针对结构体数组的访问补充:结构体指针对结构体数组的访问 struct student int num;char name20;char sex;float score;main()struct student stu3=10101,Li Lin,M,87.5,10102,Zu Feng,F,98,10103,Wang Mi,M,78;struct student*p;for(p=stu;pnum,p-name,p-sex,p-score);济南大学Rose补充:结构体做为函
展开阅读全文