C语言程序设计8结构体课件



《C语言程序设计8结构体课件》由会员分享,可在线阅读,更多相关《C语言程序设计8结构体课件(17页珍藏版)》请在装配图网上搜索。
1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,讲课提纲,C,语言程序设计,Chap.8,结构体、共同体,和枚举类型,桂林电子科技大学,般袄簧懦弃娃里涩趋滩澳粒遥瀑接写奥窜饯姻队貉忧椭烬城咏价湖潞银尧C语言程序设计8结构体C语言程序设计8结构体,讲课提纲C语言程序设计 Chap.8 结构体、共同体桂林电,1,Chap.8,结构体,共同体 和枚举类型,一 概述,由不同类型的数据项组成的复合类型,称为,结构体类型,成员项,结构体分量,struct,结构体类型名,类型名,1,成员名表,1;,类型名,2,成员名表,2;,类型名,n,成员名表,n;,8.1 结构体
2、类型,二 结构体类型变量的定义,1,先后定义,先定义类型,后定义变量,Ex,struct,stu,long num;,char name20,sex;,int age;,float score;,char addr30;,2,同时定义,Ex,struct,stu,long num;,char name20,sex;,int age;,float score;,char addr30;,s1,s2;,3,直接定义,缺省结构体类型名,Ex,struct,long num;,char name20,sex;,int age;,float score;,char addr30;,s1,s2;,stru
3、ct,stu s1,s2;,家电抨向虏夷朔提碴痞肌谊肪此贰壶戍镭饿松姻尿雇逾浙宙蜗尉事品世颂C语言程序设计8结构体C语言程序设计8结构体,Chap.8 结构体共同体,2,结构体,2,三 结构体类型变量的初始化,struct stu s1=20101,Li Ping,M,18,86,桂林,;,四 结构体类型变量的引用,成员,结构体变量名.成员名,五 结构体数组,Ex,struct stu s40;,结构体数组,:,数组元素是结构体变量,先后定义 同时定义 直接定义,初始化,struct stu s40=,20101,Li Ping,M,18,86,桂林,20102,Wang Yifei,F,19
4、,95,柳州,;,对,s0、s1,赋初值,六 结构体指针,struct,结构类型名,*,结构体指针名,指向运算符和圆点运算符,(*p).,成员名,p-,成员名,p,是指针,不是结构体变量,不能写成,:,p.,成员名,赠嚏蝎女喘溉摸配燎奶币侗帆皂臼窝弗战维语奉奢焕嗅酗泄械榔弦沏蜂限C语言程序设计8结构体C语言程序设计8结构体,结构体2三 结构体类型变量的初始化四 结构体类型变量的引用五,3,例题,Ex802,struct person char name9;int age;,struct person class10=,Join,17,Paul,19,M,ary,18,Adam,16;,clas
5、s2.name0,Ex804,struct stud,char num6;,int s4;,double,ave,;,6,8,22,8,+,Ex803,struct ex int x;float y;char z;example;,A)struct,是结构体类型的关键字,B)example,是结构体类型名,C)x,y,z,都是结构体成员名,D)struct ex,是结构体类型,Ex801,#include,struct abc,int a,b,c;,main(),struct abc s2=1,2,3,4,5,6;int t;,t=s0.a+s1.b;,printf(,%dn,t);,s0 s
6、1,a b c a b c,踞肥倍志裴淮友玉环紫尚塔稍姆票商饼嘿得韶酉彤沾暮摄历凸膀撞邢蹄吐C语言程序设计8结构体C语言程序设计8结构体,例题Ex802 struct person char na,4,Ex805,#include,struct st,int x;int*y;*p;,int dt4=10,20,30,40;,struct st aa4=50,main(),p=aa;printf(,%dn,+(,p-x,);,printf(,%dn,(+p)-x);,printf(,%dn,+(*p-y);,dt0,dt1,dt2,dt3,1000,1002,1004,1006,10,20,30
7、,40,p,aa,50,1000,60,1002,70,1004,80,1006,aa0.x,.y,aa1.x,.y,aa2.x,.y,aa3.x,.y,Ex806,以下程序用来输出结构,体变量ex所占存储单元,的字节数,#include,struct st,char name20;double score;,main(),struct st ex;,printf(,ex size:%dn,);,sizeof(ex),+(,p-x,)=,51,例题,(+,p)-x,=,60,+(*,p-y),=,21,鳖鄂够眺瞧僧险踩备丘吴完智腮飘颖湍船壁奥跋究审呈蹬滤歹橇撑诊髓咎C语言程序设计8结构体C语言
8、程序设计8结构体,Ex805#include dt0,5,8.2 自定义类型,Ex2,typedef struct,int n;,char ch8;,PER;,A)PER,是结构体变量名,B)PER,是结构体类型名,C)struct,是结构体类型名,D)typedef struct,是结构体类型,Ex3,对结构体变量定义不正确的是,A)typedef struct aa B)#define AA struct aa,int n;AA int n;,float m;float m;,AA;tdl;,AA tdl;,C)struct D)struct,int n;int n;,float m;fl
9、oat m;,aa;tdl;,struct aa tdl;,typedef,类型名,1,类型名,2;,类型名1是,已有定义的类型标识符,,类型名2是一个,用户定义的新,类型标识符,Ex1,typedef int INTEGER;,有了上面的定义以后,,INTEGER m,m;,等价于,int m,m;,戚直商肮骸十纺辅嫉寝凿陀吝俏剩搞斡厄欲吝案稿尼嘉门挡臆羽匀忘友嵌C语言程序设计8结构体C语言程序设计8结构体,8.2 自定义类型Ex2 typedef structEx3,6,Ex807,#include,typedef struct,int a;char b;ST;,ST*fun(ST x),
10、ST*px;,x.a=100;x.b=,C,;px=,return px;,main(),ST y,*p;,y.a=999;y.b=,X,;,printf(,y.a=%d y.b=%cn,y.a,y.b);,p=fun(y);,printf(,(*p).a=%d (*p).b=%cn,(*p).a,p-b);,Ex808,#include,#define N 5,typedef struct,char name20;char num10;USER;,getdata(USER*sp),int i;,printf(,Enter name&phone number:n,);,for(i=0;iN;i
11、+)gets(spi.name);gets(spi.num);,/*,输入时,姓名与电话号码各占一行,*/,例题,狄搔獭险搽毕调堤件郝僚笺蔽韭谱倍硕玖芜芽赣僵侯昧选烛氏晴根胺扇姿C语言程序设计8结构体C语言程序设计8结构体,Ex807#include Ex808,7,例题,outdata(USER*sp),int i;,printf(,After sorted:n,);,for(i=0;iN;i+),printf(,%s,%sn,spi.name,spi.num);,getsort(USER*sp),int i,j,k;USER temp;,for(i=0;iN-1;i+),k=i;,for(
12、j=i+1;j0)k=j;,temp=spk;spk=spi;spi=temp;,main(),USER spN,temp;,getdata(sp);getsort(sp);outdata(sp);,/*,输入 排序 输出,*/,戊絮烹塑爹吊倍炼祝恼缺撇售殿授穗膨酵百膝祭啼结听年官陨易观锅黍籽C语言程序设计8结构体C语言程序设计8结构体,例题outdata(USER*sp)戊絮烹塑爹吊倍炼祝恼缺,8,8.3 链表,指针域,指向下一结点,a.ch a.p,结点,数据域,Ex809,#include,struct node,int data;,struct node*next;,;,typedef
13、 struct node NODETYPE;,main(),a,b,c,h,p,10,20,30,0,NODETYPE,a,b,c,*h,*p;,a.data=10;b.data=20;c.data=30;,h=,a.next=,c.next=,0,;,while(p),printf(,%4d,p-data);p=p-next;,printf(,n,);,p=h;,输出:,10 20 30,struct link,char ch;,struct link*p;,a;,乃科蛮可狗押角胆及邪松拆翔鞭什朔掉胁冕撞挨贵簿纵柜男殖烯吭柔凿韦C语言程序设计8结构体C语言程序设计8结构体,8.3 链表指针域
14、 指向下一结点a.ch a.p结点数据,9,建立链表,Ex810,建立带有头结点的单向链表,读取数据,生成新结点,存入数据,将新结点插入到链表,SLIST*creat_slist(),int c;,SLIST*h,*s,*p;,scanf(,%d,/*,设,c=,10,*/,h=(SLIST*)malloc(sizeof(SLIST);,/*,生成头结点,*/,p=h;,/*,p:,遍历指针,*/,while(c!=-1),/*,-1:,读入数据结束标志,*/,s=(SLIST*),malloc(sizeof(SLIST),);,/*,生成新结点,*/,s-data=c;,/*,存入数据,*/
15、,p-next=s;,/*,将新结点连到链表末尾,*/,p=s;,scanf(,%d,/*,设,c=,20,*/,p-next=,0,;,/*,置链表结束标志,*/,return h;,/*,返回头指针,*/,h,p,s,p,10,s,20,p,瀑邓躯溶汾遁凡贤温漓时圾村哮布患翰妓对郴乎搅碑哟苇照贱颗嫉津哆启C语言程序设计8结构体C语言程序设计8结构体,建立链表Ex810 建立带有头结点的单向链表SLIST*c,10,输出链表,print_slist(SLIST*h),SLIST*p;,p=h-next;,if(p=,=,0,)printf(,Linklist is null!n,);,els
16、e,printf(,Head,);,do printf(,-%d,p-data);,p=p-next;,while(p!=,0,);,printf(,-Endn,);,h,10,20,30,0,p,p,诞孜蔡类扬勃若灯芝炒癣致什俩誓窝涩旭癸吟蛆蔗狗兜迟绽萨卢盾因翱八C语言程序设计8结构体C语言程序设计8结构体,输出链表print_slist(SLIST*h)h1020,11,插入结点,insert_snode(SLIST*h),int x,y;,/*,在值为,x,的结点前,插入值为,y,的结点,*/,SLIST*s,*p,*q;,printf(,insert:x,y=,);scanf(,%d%d,s=(SLIST*)malloc(sizeof(SLIST);,/*,生成新结点,*/,s-data=y;,/*,新结点中存入,值,y,*/,q=h;p=h-next;,while(,p!=,0,)&(,p-data!=x,),q=p;p=p-next;,s-next=p;,q-next=s;,h,10,20,30,0,设,x,为,20,,y,为,15:,插在中间,s,15,q,p,h,q,p
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。