欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    C程序设计与实践第5章(课件).ppt

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

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

    C程序设计与实践第5章(课件).ppt

    程序设计与实践,目录 第5章 结构体 5.1 概述 5.2 结构体应用实例 5.3 结构体类型的定义 5.4 结构体变量和结构体数组的定义 5.5 结构体变量的使用方法 5.6 结构体应用 5.7 本章小结,第5章 结构体 5.1 概述 数组只能保存一批类型相同的数据,但在很多场合下,会有一组类型不同的信息,例如:关于学生的一组信息,包括学生姓名(字符串)、学号(字符串)、课程成绩(实数)等,无法用数组来表示。这里可以使用C语言提供的另外一种构造数据类型来实现,就是结构体类型,也称之为结构数据类型。,5.2 结构体应用实例 例5.1 图书销售清单打印,其中图书信息包括:书名、价格、册数等。 #include void main() struct booktype /说明结构类型struct booktype,包含三个成员 char name100;/书名,字符串型 float price;/价格,实型 int number;/册数,整型 ;,/分别定义结构体变量book1、book2、book3,并赋初值 struct booktype book1 ”Learn C Programming”, 40.4, 20; struct booktype book2 ”c programming language”, 43.1, 15; struct booktype book3 ”History of C Programming Language ”, 37.8, 28; /定义中间变量用于计算部分金额和总金额 float part1, part2, part3, total; printf(” 书名 单价 数量 金额nn”); part1 book1.price * book1.number;/结构变量字段值的应用,计算第一类书book1的金额,printf(”%35s%6.2f%4d%7.2fn”, book1.name, book1.price, book1.number, part1); part2 book2.price * book2.number; /计算第一类书book2的金额 printf(”%35s%6.2f%4d%7.2fn”, book2.name, book2.price, book2.number, part2); part3 book3.price * book3.number; /计算第一类书book3的金额 printf(”%35s%6.2f%4d%7.2fn”, book3.name, book3.price, book3.number, part3); total part1 part2 part3; /计算三类书的总金额 printf(”ntotal %53.2fn”, total);, 程序输出结果: 图51 例5.1程序运行结果 程序中定义了图书的信息,包括:字符数组类型的书名name、实数类型的价格price、整数类型的册数number等三个字段,涉及三种数据类型。在这个程序中,我们看到了结构类型booktype的定义(struct booktype ;部分),结构类型booktype的结构体变量book1.book2、book3的定义并赋初值,如:(struct booktype book1”Learn C Programming”,40.4,20;),结构体变量字段的引用如:(part1book1.price*book1.number;)。 本程序中共有三类书的信息,制表输出每一类书的书名、单价、数量、金额,最后输出所有书的总价格。,5.3 结构体类型的定义 结构体类型是一种新的数据类型,与基本类型不同的是,结构体类型本身需要定义,而基本类型是C语言已经定义过的,不需要程序设计人员来定义。结构体类型的定义包含如下信息:结构体类型名字(可以没有)、结构体全部成员的名字及其类型,结构体的成员有时也称之为字段,它们的类型可以相同也可以不同。结构体类型定义以后,就可以使用结构体类型名字来定义该结构体类型的变量了。 结构体类型定义的一般形式: struct 结构体类型名 成员列表;,; 例如结构体“图书”类型的定义如下: struct booktype char name100;/书名,字符数组类型 float price;/单价,实数类型 int number;/数量,整数类型 ; 结构体成员的类型可以是简单类型,可以是数组类型,还可以是其他的结构体类型,也就是说,结构体类型的定义可以嵌套。例如: struct date int year, month, day;,; struct booktype char name100; /书名,字符数组类型 float price; /单价,实数类型 int number; /数量,整数类型 struct date delivery;/交付时间 ; 在结构体中,各成员都占有自己的内存空间,一个结构体变量的长度等于所有成员长度之和。 例5.2 检测结构体类型占用的内存空间大小。,解题思路:直接使用sizeof运算符,对于结构体类型struct booktype求值。 #include void main() struct booktype char name100; float price; int number; ;,printf(”%d”, sizeof(struct booktype); 输出结果是108。 说明:某些编译程序(如:VC6.0),为结构体类型分配空间时,可能会比其所有成员所占空间之和略长,例如:如果把“char name100;”改为“char name97;”、“char name98;”、“char name99;”程序结果都是108。占用空间值为4的倍数,并大于或等于各字段字节数之和。,5.4 结构体变量和结构体数组的定义 结构体类型变量可以是普通变量或者是数组元素,结构体类型的数组元素是指其元素的数据类型是结构体类型的数组,简称为结构体数组。 结构体变量、结构体数组定义有三种形式: struct 结构体类型名 变量、数组列表; struct 结构体类型名 成员列表 变量、数组列表; struct 成员列表 变量、数组列表; 上述三种形式中,我们推荐使用第一种形式,它的特点是类型定义和变量定义分离,也便于对变量赋初值,结构清晰。下面分别介绍三种形式的写法和实例。,1.先定义结构体类型,再定义结构体变量或结构体数组,必要时还可以进行初始化 例5.3 对于例5.1程序的改进,注意结构体类型定义、结构体数组定义、结构体数组初始化、输出格式控制等用法。 #include void main() struct booktype /说明结构体类型 char name100; float price;,int number; ; struct booktype books3 /定义结构体类型数组,并赋初值 ”Learn C Programming”, 40.4, 20, ”c programming language”, 43.1, 15, ”History of C Programming Language ”, 37.8, 28; int i; float part, total 0; printf(” 书名 单价 数量 金额nn”); for (i 0; i 3; i) ,part booksi.price * booksi.number; /结构体变量字段值的应用 printf(”%35s%6.2f%4d%7.2fn”, booksi.name, booksi.price, booksi.number, part); total part; printf(”ntotal %53.2fn”, total); 2.在定义结构体类型的同时定义结构体变量或结构体数组并初始化 例如:,struct booktype char name100;/书名,字符数组类型 float price;/单价,实数类型 int number;/数量,整数类型 struct date delivery;/交付时间 abook, books1000; 3.直接定义结构体变量或结构体数组并初始化 例如: struct char name100;/书名,字符数组类型,float price;/单价,实数类型 int number;/数量,整数类型 struct date delivery;/交付时间 abook, books1000;,5.5 结构体变量的使用方法 一、结构体变量的初始化 1.结构体变量的初始化 例如: struct booktype book1 ”Learn C Programming”,40.4, 20; 各字段依次获得初值,按字段类型对应的常量来书写,各常量之间用“,”分隔。 2.结构体数组的初始化 struct booktype books3 ”Learn C Programming”, 40.4, 20,”c programming language”, 43.1, 15, ”History of C Programming Language ”, 37.8, 28; 按层次来写,先来看外层,数组共有三个元素,对应有三组“”,每组“”对应一个数组元素,是一个结构体类型。根据结构体类型“struct booktype”的定义,结构体有三个字段,所以里层的每组“”中,包含三个常量。 二、结构体变量成员的表示方法 结构体变量成员的表示方法有两种: 结构体变量名.成员名 结构体数组名下标.成员名 例:,part1 book1.price * book1.number; printf(”%35s%6.2f%4d%7.2fn”, book3.name, book3.price, book3.number, part3); part booksi.price * booksi.number; printf(”%35s%6.2f%4d%7.2fn”, booksi.name,booksi.price,booksi.number,part); 嵌套结构体类型对于结构体成员的引用实例: struct date int year, month, day; ;,struct booktype char name100;/书名,字符数组类型 float price;/单价,实数类型 int number;/数量,整数类型 struct date delivery;/交付时间 abook; abook.delivery.year 2010; abook.delivery.month 4; abook.delivery.day 18;,三、结构体变量的赋值 对于结构体变量的赋值有两种方法,一种是对于成员变量分别引用,另一种是对于结构体变量整体赋值。 (1)对于结构体成员变量分别引用 如果结构体成员变量是简单类型,可以直接进行各种操作,例如:数据输入、输出、赋值、计算等。如果结构体成员变量是构造类型,如数组、结构体等,就需要根据数组、结构体等类型的具体要求来操作了。 (2)对于结构变量整体赋值 有些C编译环境(例如VC6.0)中允许两个结构体类型变量直接赋值,相当于它们对应的各成员变量的分别赋值。这种方法不推荐使用。,5.6 结构体应用 例 5.4 有一个班的学生,学生信息包括:姓名、性别和3门课程成绩。编写程序完成下列任务: (1)5名学生信息的录入; (2)计算并输出某门课程的最高分、最低分、平均分; (3)分别计算并输出男女同学中总分最高的同学的姓名和总成绩。 #include struct student char name20; char s; / M表示男,F表示女 float course1;,float course2; float course3; ; main() struct student stu5; float maxpoint,minpoint,avepoint,sumpoint5,maxsumpoint1,maxsum­ point2; int i,mstu1;,/* 录入学生数据 */ for(i0;i5;i) printf(”请输入第%d个学生的信息”,i1); scanf(”%s %c %f %f %f”,stui.name,&stuxi.s,&stui.course1,&stui.course2,&stui.course3); /*计算course1的最高分*/ maxpointstu0.course1;,for(i1;i maxpoint) maxpointstui.course1; printf(”course1的最高分是%f”,maxpoint); /*计算course1的最低分*/ minpointstu0.course1; for(i1;i5;i) ,if(stui.course1 minpoint) minpointstui.course1; printf(”course1的最低分是%f”,minpoint); /* 计算course1的平均分*/ avepointstu0.course1; for(i1;i5;i) avepointavepointstui.course1; ,printf(”course1的平均分是%f”,avepoint/5); for(i0;i5;i) sumpointistui.course1stui.course2stui.course3; /*计算男同学中总分最高的同学的姓名和总成绩*/ maxsumpoint10; for(i0;i5;i), if(stui.sF) continue; if(sumpointimaxsumpoint1) mstui; if(mstu1) printf(”名单中无男同学”); else printf(”男同学中总分最高的同学的姓名是%s 总成绩是%f”,stumstu.name,sumpointmstu);,/*计算女同学中总分最高的同学的姓名和总成绩的过程参照男同学的处理方法*/ ,5.7 本章小结 结构体与数组的明显不同是结构体的成员可以具有不同的数据类型。 注意结构体类型的定义、结构体变量的定义、结构体变量的初始化、结构体变量成员的引用方法等。还要学会结构体数组的定义和使用方法。 练习五 1.试利用结构体类型描述年、月、日,输入一个日期,统计该日期是本年度第多少天。 2.定义一个职员结构体类型,其中包括职员姓名,参加工作时间和薪水。使用定义的结构体类型,写一段程序,从键盘读入一个职员的信息,并通过显示器显示出来。,推荐资料,更多图书信息请见星图书业:http:/www.xtbook.org/ 计算机各级在线考试试题见前程在线考试网:http:/www.qcks.cn/,

    注意事项

    本文(C程序设计与实践第5章(课件).ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

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




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开