欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    C程序设计第9章自定义数据类型.ppt

    • 资源ID:5426173       资源大小:352KB        全文页数:22页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C程序设计第9章自定义数据类型.ppt

    1,C程序设计第9章 自定义数据类型,主讲教师:鲁 萍西安建筑科技大学 理学院,2,第9章 自定义数据类型,小 结,习 题,结构体变量结构体数组结构体与指针指针与链表共用体枚举,3,结构体类型的定义,例1 学生信息:学号,姓名,成绩,成绩,成绩,平均成绩要求计算平均成绩,并输出学生的学号,姓名和平均成绩 问题:学生信息包含不同类型的数据例2 对一个班的若干学生进行管理,实现插入新生信息和删除转学学生信息的功能。问题:新数据无法和已有数据连续存储,结构体 链表,4,结构体类型的定义,例1学生信息:学号,姓名,成绩,成绩,成绩,平均成绩要求计算平均成绩,并输出学生的学号,姓名和平均成绩,struct studentint num;char name20;float score1;float score2;float score3;float aver;,结构体类型:不同类型的数据的有序集合 struct 类型名称 成员表列;结构体变量:用结构体类型说明的变量(定义结构体类型不分配内存单元!定义结构体变量时分配存储单元),/定义个结构体变量struct student stu1,stu2;struct student stu3;/定义3个元素的结构体数组,5,结构体变量的初始化,定义时初始化:将各元素初值放在“”里赋值给变量。例:struct student int num;char name20;float score1;float score2;float score3;float aver;stu3=001,zhang3,80,88,75,002,li4,90,83,84,003,wang5,50,62,65;,可以这样定义结构体变量,6,结构体变量的定义,struct studentint num;char name20;float score1;float score2;float score3;float aver;stu1,stu2;,存储:(1)结构体的所有成员各自占用不同的内存单元(2)一共占用多少字节存储单元?sizeof(struct student),stu3;,stu0stu1stu2,int numchar name20float score1float score2float score3float aver,int numchar name20float score1float score2float score3float aver,7,for(i=0;i3;i+)aver=score1+score2+score3;aver/=3;,结构体 变量引用,例11-1要求计算平均成绩,并输出学生的学号,姓名和平均成绩,struct student int num;char name20;float score1;float score2;float score3;float aver;stu3=001,zhang3,80,88,75,002,li4,90,83,84,003,wang5,50,62,65;,stui.stui.stui.stui.stui.,成员的引用方式:结构体变量名.成员名,numname20score1score2score3aver,numname20score1score2score3aver,8,输出学生的所有信息 printf(”%d,%s,%f,%f,%f,%fn”,stud1);不能对结构体变量整体输入输出,只能对各个成员分别输入输出printf(”%d,%s,%f,%f,%f,%fn”,stud1.num,stu1.name,stu1.score1,stu1.score2,stu1.score3,stu1.aver);(),结构体变量引用,A0901:学生信息:学号,姓名,成绩,成绩,成绩,平均成绩要求计算平均成绩,并输出学生的学号,姓名和平均成绩,for(i=0;i3;i+)printf(%5d%20s%8.2fn,stui.num,stui.name,stui.aver);,9,结构体例题,A0901:#includestruct studentint num;char name20;float score1;float score2;float score3;float aver;void main()struct student stu3=001,zhang3,80,88,75,002,li4,90,83,84,003,wang5,50,62,65;int i;for(i=0;i3;i+)stui.aver=stui.score1+stui.score2+stui.score3;stui.aver/=3;for(i=0;i3;i+)printf(%5d%20s%8.2fn,stui.num,stui.name,stui.aver);,10,指向结构体变量的指针,A0901:#includestruct studentint num;char name20;float score1;float score2;float score3;float aver;stu=001,zhang3,80,88,75;struct student*p=,p-,p-,p-,p-,p-,(*p).,(*p).,(*p).,1、结构体类指针变量的定义:结构体类型名称*指针变量名2、通过指针变量引用成员:1)结构体类指针变量名-成员名(常用)2)(*结构体类指针变量名).成员名,11,指向结构体数组的指针,A0901:#includestruct studentint num;char name20;float score1;float score2;float score3;float aver;stu3=001,zhang3,80,88,75,002,li4,90,83,84,003,wang5,50,62,65;struct stud*p=stu;for(p=stu;paver=p-score1+p-score2+p-score3;p-aver/=3;for(p=stu;pnum,p-name,p-aver);,p+指向数组中的下一个元素,12,用指针构成链表,1249 1356 1475,新 增加 一个学生?数组不能动态定义!新增信息存储单元不连续,每个结构中的最后一个是指针,指向下一个节点的首地址,形成链式结构,struct student int num;char name20;float score1;float score2;float score3;float aver;,struct student*next;,不行!,链表:可以使物理上不连续的存储单元在逻辑上连续访问,13,构建链表,A0902例 建立如下链表,由3个学生数据的结点组成。输出各结点中的数据,并计算学生成绩的平均值。,struct student int num;float score;struct student*next;,=NULL,标记链表的结束,链表的起始,14,构建链表,struct student int num;float score;struct student*next;,void main()struct student a,b,c,*head,*p;a.num=001;a.score=89.5;b.num=002;b.score=90;c.num=004;c.score=85;head=,a b c,00189.5,00290,00485,NULL,p!=NULL,15,链表操作:插入、删除,next,head,1.malloc 函数:内存动态存储区中分配一个长度为size的连续空间2.free函数 释放空间,/动态申请一个节点空间 struct student*d;int len=sizeof(struct student);d=(struct student*)malloc(len);/为节点赋值 scanf(%d,/释放空间,d-,16,结构体数组练习,A0903:有10人投票,对3个候选人得票进行统计。每此输入一个候选人的名字,要求输出最后统计结果。【程序思路分析】将输入的后选人的名字与结构体中的初始名字比较,若两者相等,则将该后选人的票数加1;投票人数通过循环方式进行控制;有多少人就循环多少次,但每次只能投一个人的票。结构定义:struct person char name20;int count;pers3=Zhang,0,Wang,0,Li,0;,17,main()struct person char name20;int count;pers3=Zhang,0,Wang,0,Li,0;int i=0,j=0;char nam20;for(;i10;i+)/*控制投票人数*/scanf(“%s”,nam);/*输入候选人姓名*/for(j=0;j3;j+)/*控制候选人数*/if(strcmp(nam,persj.name)=0)persj.count+;printf(n);for(i=0;i3;i+)printf(%6s%d,persi.name,persi.count);,18,结构体变量嵌套,struct clock int hour,minute,second;struct date int year,month,day;struct clock time;today,nextday;1.单独引用结构体变量的成员 today.year=2004;today.time.second=15;2.结构体变量作为一个整体引用 nextday=today;,成员也可以是一个结构变量。,19,共用体,共用体类型定义使几种不同类型的变量存放到同一内存单元中,相互覆盖。union 类型名称 成员表列;变量定义:方法同结构体变量引用 共用体变量名.成员名称,地址100010001000,union data int i;char ch;float f;;共用体变量所占内存长度等于最长的成员的长度,a,b,c;,例:a.i=1;a.ch=A;a.f=10.50;完成上述赋值操作后,有效的成员是a.f,20,枚举类型,一、枚举类型的定义格式:enum 枚举类型名称 枚举类成员名例:enum weekdaysun,mon,tue,wed,thu,fri,sat;0 1 2 3 4 5 6枚举元素从数值0开始编号,按常量处理,例:main()enum weekdaysun,mon,tue,wed,thu,fri,sat;enum weekday today=mon;printf(“today=%d,today);运行结果:today=1,21,小结自定义数据类型,结构体:结构体变量的引用结构体数组用指针访问结构体构建链表共用体枚举,struct studentint num;char name20;float score1;float score2;float score3;float aver;stu,s3;,22,习 题,B0901(习题9.1)定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年的问题B0902(习题9.5)有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求计算每个学生的平均成绩,并输出平均分最高的学生的所有信息。(该程序可扩展为对任意一个班的学生),

    注意事项

    本文(C程序设计第9章自定义数据类型.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开