第09章用户自己建立数据类型

上传人:平*** 文档编号:46527061 上传时间:2018-06-27 格式:PPT 页数:150 大小:3.42MB
返回 下载 相关 举报
第09章用户自己建立数据类型_第1页
第1页 / 共150页
第09章用户自己建立数据类型_第2页
第2页 / 共150页
第09章用户自己建立数据类型_第3页
第3页 / 共150页
第09章用户自己建立数据类型_第4页
第4页 / 共150页
第09章用户自己建立数据类型_第5页
第5页 / 共150页
点击查看更多>>
资源描述

《第09章用户自己建立数据类型》由会员分享,可在线阅读,更多相关《第09章用户自己建立数据类型(150页珍藏版)》请在金锄头文库上搜索。

1、第第9 9章章 用户自己建立数据类型用户自己建立数据类型9.1 定义和使用结构体变量9.2 使用结构体数组9.3 结构体指针9.4 用指针处理链表9.5 共用体类型9.6 使用枚举类型9.7 用typedef声明新类型名9.1 9.1 定义和使用结构体变量定义和使用结构体变量9.1.1 自己建立结构体类型9.1.2 定义结构体类型变量9.1.3 结构体变量的初始化和引用9.1.1 9.1.1 自己建立结构体类型自己建立结构体类型用户自己建立由不同类型数据组成的组 合型的数据结构,它称为结构体 例如,一个学生的学号、姓名、性别、 年龄、成绩、家庭地址等项,是属于同 一个学生的,因此组成一个组合数

2、据, 如student_1的变量,反映它们之间的 内在联系9.1.1 9.1.1 自己建立结构体类型自己建立结构体类型struct Student int num; char name20; char sex; int age; float score; char addr30; ;u由程序设计者指定了 一个结构体类型 struct Student u它包括 num,name,sex,age, score,addr等不同类 型的成员9.1.1 9.1.1 自己建立结构体类型自己建立结构体类型声明一个结构体类型的一般形式为:struct 结构体名 成员表列 ; 类型名 成员名;9.1.1 9.1

3、.1 自己建立结构体类型自己建立结构体类型说明:(1)结构体类型并非只有一种,而是可以设 计出许多种结构体类型,例如struct Teacherstruct Workerstruct Date等结构体类型u各自包含不同的成员9.1.1 9.1.1 自己建立结构体类型自己建立结构体类型说明:(2) 成员可以属于另一个结构体类型。struct Date int month; int day; int year; ;struct Stu int num;char name20;char sex;int age;struct Date birthday; char addr30; ;9.1.1 9.1

4、.1 自己建立结构体类型自己建立结构体类型说明:(2) 成员可以属于另一个结构体类型。 numnamesexagebirthdayaddr monthdayyear9.1.2 9.1.2 定义结构体类型变量定义结构体类型变量前面只是建立了一个结构体类型,它相当 于一个模型,并没有定义变量,其中并无 具体数据,系统对之也不分配存储单元。相当于设计好了图纸,但并未建成具体的 房屋。为了能在程序中使用结构体类型的 数据,应当定义结构体类型的变量,并在 其中存放具体的数据。9.1.2 9.1.2 定义结构体类型变量定义结构体类型变量1. 先声明结构体类型,再定义该类型变量声明结构体类型struct S

5、tudent,可 以用它来定义变量struct Student student1,student2;结构体类型名结构体变量名 9.1.2 9.1.2 定义结构体类型变量定义结构体类型变量1. 先声明结构体类型,再定义该类型变量声明结构体类型struct Student,可 以用它来定义变量struct Student student1,student2;10001Zhang XinM 1990.5Shanghaistudent110002Wang LiF2098Beijingstudent29.1.2 9.1.2 定义结构体类型变量定义结构体类型变量2.在声明类型的同时定义变量struct S

6、tudent int num; char name20; char sex; int age; float score; char addr30; student1,student2;9.1.2 9.1.2 定义结构体类型变量定义结构体类型变量3. 不指定类型名而直接定义结构体类型变量其一般形式为:struct 成员表列 变量名表列; 指定了一个无名的结构体类型 。9.1.2 9.1.2 定义结构体类型变量定义结构体类型变量(1) 结构体类型与结构体变量是不同的概 念,不要混同。只能对变量赋值、存取或 运算,而不能对一个类型赋值、存取或运 算。在编译时,对类型是不分配空间的, 只对变量分配空间

7、。9.1.2 9.1.2 定义结构体类型变量定义结构体类型变量(2) 结构体类型中的成员名可以与程序中的 变量名相同,但二者不代表同一对象。(3) 对结构体变量中的成员(即“域”), 可以单独使用,它的作用与地位相当于普 通变量。例9.1 把一个学生的信息(包括学号、姓名 、性别、住址)放在一个结构体变量中,然 后输出这个学生的信息。解题思路:u自己建立一个结构体类型,包括有关学生信息 的各成员u用它定义结构体变量,同时赋以初值u输出该结构体变量的各成员9.1.3 9.1.3 结构体变量的初始化和引用结构体变量的初始化和引用#include int main() struct Student

8、long int num; char name20;char sex; char addr20;a=10101,“Li Lin”,M,“123 Beijing Road”; printf(“NO.:%ldnname:%snsex:%cnaddress:%sn“,a.num,a.name,a.sex,a.addr);return 0; #include int main() struct Student long int num; char name20;char sex; char addr20;a=10101,“Li Lin”,M,“123 Beijing Road”; printf(“NO

9、.:%ldnname:%snsex:%cnaddress:%sn“,a.num,a.name,a.sex,a.addr);return 0; #include int main() struct Student long int num; char name20;char sex; char addr20;a=10101,“Li Lin”,M,“123 Beijing Road”; a.num=10010; 对printf(“%sn”,a); 不对#include int main() struct Student long int num; char name20;char sex; cha

10、r addr20;a=10101,“Li Lin”,M,“123 Beijing Road”; b=a; 对struct Student b;b.num+; 对#include int main() struct Student long int num; char name20;char sex; char addr20;a=10101,“Li Lin”,M,“123 Beijing Road”; scanf(%ld, 对printf(%o, 对scanf(“%ld,%s,%c,%sn”, 错#include int main() struct Date int month; int day

11、; int year; ;struct Stu int num;char name20;char sex;int age;struct Date birthday; char addr30; a,b;a.birthday.month=12; 对 a.age=10; b.age=9; 对 sum=a.age+b.age; 对例9.2 输入两个学生的学号、姓名和成绩 ,输出成绩较高学生的学号、姓名和成绩解题思路:(1)定义两个结构相同的结构体变量student1 和student2;(2)分别输入两个学生的学号、姓名和成绩;(3)比较两个学生的成绩,如果学生1的成绩高 于学生2,就输出学生1的全部

12、信息,如果学 生2的成绩高于学生1,就输出学生2的全部信 息。如果二者相等,输出2个学生的全部信息#include int main() struct Student int num;char name20;float score;student1,student2; scanf(“%d%s%f“, scanf(“%d%s%f”, 不能加if (student1.scorestudent2.score)printf(“%d %s %6.2fn“,student1.num,student1.name, student1.score);else if (student1.score #includ

13、e struct Person char name20; int count; leader3=“Li”,0,“Zhang”,0,“Sun”,0; 全局的结构体数组name count leader0Li0 Zhang0 Sun0int main() int i,j; char leader_name20; for (i=1;i struct Student int num; char name20; float score; ; int main() struct Student stu5=10101,“Zhang“,78 ,10103,“Wang“,98.5,10106,“Li“, 86

14、,10108,“Ling”, 73.5,10110,“Fun”, 100 ; struct Student temp; const int n = 5 ; int i,j,k;常变量若人数变为3030#include struct Student int num; char name20; float score; ; int main() struct Student stu5=10101,“Zhang“,78 ,10103,“Wang“,98.5,10106,“Li“, 86 ,10108,“Ling”, 73.5,10110,“Fun”, 100 ; struct Student temp; const int n = 5 ; int i,j,k;#define N 5注意temp的类型printf(“The order is:n“);for(i=0;istuk.score) k=j;temp=stuk;stuk=stui; stui=temp; for(i=0;i #include int main() struct Student lo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号