最新c c++语言程序设计(西电版第6章 结构体、共用体与枚举(共75张ppt课件).pptx
《最新c c++语言程序设计(西电版第6章 结构体、共用体与枚举(共75张ppt课件).pptx》由会员分享,可在线阅读,更多相关《最新c c++语言程序设计(西电版第6章 结构体、共用体与枚举(共75张ppt课件).pptx(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1第六章第六章 结构结构(jigu)(jigu)体、共用体和枚举体、共用体和枚举第一页,共七十五页。26.1 结构体类型的声明结构体类型的声明 6.2 结构体变量结构体变量(binling)的定义、引用和初始的定义、引用和初始化化 6.3 结构体数组结构体数组6.4 结构体与指针结构体与指针6.5 结构体与函数结构体与函数6.6 共用体共用体6.7 枚举类型枚举类型6.8 类型定义语句类型定义语句typedef6.9 小结小结第二页,共七十五页。3 一个学生的信息有一个学生的信息有学号学号、姓名姓名、性别性别(xngbi)(xngbi)、年年龄龄、住址住址、成绩成绩等。等。 一本图书的信息有一
2、本图书的信息有分类编号分类编号、书名书名、作者作者、出版出版社社、出版日期出版日期、价格价格、库存量库存量等。等。 如何描述这些类型不同的相关数据?如何描述这些类型不同的相关数据? 信息管理信息管理结构体结构体一种构造数据类型一种构造数据类型 结构体结构体由若干不同类型由若干不同类型(lixng)(lixng)的数据项组成,的数据项组成, 构成结构体的各个数据项称为构成结构体的各个数据项称为结构体成员。结构体成员。 第三页,共七十五页。4 lstructstruct为关键字,不能为关键字,不能省略;省略;l结构体名结构体名是该结构体类是该结构体类型型(lixng)(lixng)的名称,命名应的
3、名称,命名应符合标识符的定义要求。符合标识符的定义要求。 成员成员可以是任何类型的变量,包括基本数据类型和构可以是任何类型的变量,包括基本数据类型和构造数据类型,如整型、浮点型和字符型,数组和指针等,造数据类型,如整型、浮点型和字符型,数组和指针等,也可以是另一个结构体类型的结构体变量或自身结构体的也可以是另一个结构体类型的结构体变量或自身结构体的指针,还可以是共用体变量。指针,还可以是共用体变量。struct 结构体名结构体名 数据类型数据类型1 成员名成员名1; 数据类型数据类型2 成员名成员名2; 数据类型数据类型n 成员名成员名n; ;第四页,共七十五页。5例例6.16.1一个学生的基
4、本信息由学号、姓名、性别、一个学生的基本信息由学号、姓名、性别、成绩组成,声明相应成绩组成,声明相应(xingyng)(xingyng)的结构体类型。的结构体类型。struct student int num ; /* 学号是整型学号是整型 */ char name20; /* 姓名是字符数组类型姓名是字符数组类型 */ char sex; /* 性别是字符型性别是字符型 */ float score; /* 成绩是实型成绩是实型*/ ;第五页,共七十五页。6例如图书类型的定义:例如图书类型的定义: struct bookcard char num10; /*图书分类编号是字符数组类型图书分类
5、编号是字符数组类型*/ char name30; /*书名是字符数组类型书名是字符数组类型*/ char author30; /*作者作者(zuzh)是字符数组类型是字符数组类型*/ char publisher60; /*出版社是字符数组类型出版社是字符数组类型*/ float price; /*价格是单精度实型价格是单精度实型*/ int n; /*库存量是整型库存量是整型*/ ;第六页,共七十五页。日期,声明学生信息结构体类型。日期,声明学生信息结构体类型。struct date int year; int month; int day; ;7struct student int num
6、;char name20;char sex; struct date birthday; /* birthday成员为成员为date 结构结构(jigu)体类型体类型*/float score;第七页,共七十五页。说明:说明:struct date int year,month,day;8第八页,共七十五页。int x,y; /*基本数据类型变量基本数据类型变量*/struct point int x, y; /*结构体结构体point中的一个成员中的一个成员 */;9第九页,共七十五页。 struct invalid int n; struct invalid iv; ;10struct i
7、nvalid int n; struct invalid *iv; ;第十页,共七十五页。11struct student stu1,stu2,*p,stu10; struct 结构体名结构体名 若干成员说明若干成员说明; struct 结构体名结构体名 结构体变量名表结构体变量名表;第十一页,共七十五页。12#define STU struct studentstruct student int num; char name20; char sex; float score; ;STU stu1,stu2; 第十二页,共七十五页。13例如例如(lr)(lr):struct student i
8、nt num; char name20; char sex; float score; stu1,stu2;struct 结构体名结构体名 若干成员说明若干成员说明 结构体变量名表结构体变量名表;第十三页,共七十五页。14例如例如(lr)(lr):struct char name20 ; char sex; int num; float score; stu1,stu2;struct 若干成员说明若干成员说明 结构体变量名表结构体变量名表;第十四页,共七十五页。15 l结构体变量中的成员可以单独使用,它的作用结构体变量中的成员可以单独使用,它的作用与地位与地位(dwi)相当于普通变量。相当于普
9、通变量。 第十五页,共七十五页。16 结构体变量结构体变量a的各成员可分别表示为的各成员可分别表示为a.num、a.name、a.sex、a.birthday、a.score struct date int year, month, day; struct student int num;char name20, sex; struct date birthday; float score; a;a.birthday.yeara.birthday.montha.birthday.day 结构体变量名结构体变量名. .成员名成员名第十六页,共七十五页。17 printf(%d,%s,%c,%f,
10、 stu1);第十七页,共七十五页。18第十八页,共七十五页。19【例例6.3】结构体变量的初始化、赋值、输入和输出结构体变量的初始化、赋值、输入和输出(shch) 。 #include stdio.hstruct student /*定义结构体定义结构体*/ int num; char *name; char sex; float score; stu1, stu2,stu3=102,Zhang ping,M,78.5; 如果初值个数少于结构体成员个数,如果初值个数少于结构体成员个数,则将无初值对应的成员赋以则将无初值对应的成员赋以0 0值。值。 如果初值个数多于结构体成员个数,如果初值个数
11、多于结构体成员个数,则编译出错。则编译出错。 struct struct 结构体名结构体名 结构体变量结构体变量=初始化列表初始化列表 ;第十九页,共七十五页。20void main()stu1.num=102; stu1.name=Zhang ping;printf(input sex and scoren);scanf(%c%f,&stu1.sex,&stu1.score); printf(stu1:Number=%dnName=%sn,stu1.num,stu1.name); printf(Sex=%cnScore=%.2fn,stu1.sex,stu1.score); stu2=stu
12、3; printf(stu2:Number=%dnName=%sn,stu2.num,stu2.name); printf(Sex=%cnScore=%.2fn,stu2.sex,stu2.score); 第二十页,共七十五页。21struct student int num; char name20; char sex; float score; stu3; 第二十一页,共七十五页。22for(i=0;i3;i+) scanf(%d,&stui.num); fflush(stdin); gets(stui.name); scanf(%c%f,&stui.sex,&stui.score); 结
13、构结构(jigu)体数组名体数组名下标下标.成员名成员名第二十二页,共七十五页。23struct student int num; char *name; char sex; float score; stu3= 101,Zhao lei,M,45,102,Sun hui,M,62.5,103,Li fang,F,92.5stu0stu1stu2101Zhao leiM45102Sun huiM62.5103Li fangF92.5第二十三页,共七十五页。24 元素的个数可以省略,根据赋初值时结构体元素的个数可以省略,根据赋初值时结构体常量的个数确定数组元素的个数常量的个数确定数组元素的个数
14、。 内层的大括号只是为了阅读程序的方便,内层的大括号只是为了阅读程序的方便,可以省略。可以省略。 结构体数组名是结构体数组存储的首地址,结构体数组名是结构体数组存储的首地址,可以通过数组名利用可以通过数组名利用(lyng)(lyng)指针法或下标法访问数指针法或下标法访问数组元素。组元素。第二十四页,共七十五页。25#include stdio.hstruct student int num; char name15; int score3; stu=1,David,80,78,92,2,Lily,90,84,89,3,Alice,79,78,96;第二十五页,共七十五页。26void mai
15、n( ) int i,j,number; printf(input students number:); scanf(%d,&number); /*输入学生的编号输入学生的编号(bin ho)*/ for(i=0;i3;i+) /*查询学生信息查询学生信息*/ if(number=stui.num) break; printf(name=%sn ,stui.name); for(j=0;jyear p-month p-day“-”是指向结构体成员运是指向结构体成员运算符,优先级为一级算符,优先级为一级 p=&d.year(*结构体指针变量结构体指针变量).成员名成员名 或:或:结构体指针变量结
16、构体指针变量-成员名成员名 第三十页,共七十五页。31pstu-num:得到:得到pstu指向的结构体变量中的指向的结构体变量中的成员变量成员变量num的值。的值。pstu-num+:得到:得到pstu指向的结构体变量中的指向的结构体变量中的成员变量成员变量num的值,先使用,后使的值,先使用,后使num加加1。+pstu-num:得到:得到pstu指向的结构体变量中指向的结构体变量中的成员变量的成员变量num的值,使的值,使num先加先加1,再使用。,再使用。第三十一页,共七十五页。32指向结构体变量的指针指向结构体变量的指针(zhzhn)使用使用 #include stdio.hstruc
17、t student int num; char *name; char sex; float score; stu1=102,Zhang ping,M,78.5,*pstu; 第三十二页,共七十五页。33void main() pstu=&stu1; printf(Number=%dnName=%sn,stu1.num,stu1.name); printf(Sex=%cnScore=%fnn,stu1.sex,stu1.score); printf(Number=%dnName=%sn,(*pstu).num,(*pstu).name); printf(Sex=%cnScore=%fnn,(*
18、pstu).sex,(*pstu).score); printf(Number=%dnName=%sn,pstu-num,pstu-name); printf(Sex=%cnScore=%fnn,pstu-sex,pstu-score); 第三十三页,共七十五页。34 l定义结构体数组的指针和定义其他数组的指针的方法是定义结构体数组的指针和定义其他数组的指针的方法是一样的一样的 第三十四页,共七十五页。35 struct list int i; char name4; float w; tab4=1,H,1.008,2,He,4.0026, 3,Li,6.941,4,Be,9.01218;第三
19、十五页,共七十五页。2022-7-336main( ) struct list *p,tab4; p r i n t f ( N o t N a m e t A t o m i c Weightn); for (p=tab; pi, p-name, p-w); ppppp1 H 1.0082 He 4.00263 Li 6.9414 Be 9.01218第三十六页,共七十五页。37 #include stdio.h struct student int num; char *name; char sex; float score; stu3= 101,Zhao lei,M,45,102,Sun
20、 hui,M,62.5,103,Li fang,F,92.5;第三十七页,共七十五页。38第三十八页,共七十五页。39第三十九页,共七十五页。40 struct code int i; char c; a =100,A,200,B, 300,C,400,D;第四十页,共七十五页。41main( ) struct code *p=a; printf(%dt,+p-i); printf(%ct,(+p)-c); printf(%dt,(p+)-i); printf(%ct,+p-c); printf(%dt,p-i+); printf(%dn,p-i); p101301101B200D300301
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新c c+语言程序设计西电版第6章 结构体、共用体与枚举共75张ppt课件 最新 c+ 语言程序设计 西电版第 结构 共用 枚举 75 ppt 课件
限制150内