欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    chap2_用C语言编写程序1-3.ppt

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

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

    chap2_用C语言编写程序1-3.ppt

    Chap 9 结构,9.1 构建手机通讯录9.2 结构变量9.3 结构数组9.4 结构指针,本章要点,什么是结构?结构与数组有什么差别?有几种结构的定义形式,它们之间有什么不同?什么是结构的嵌套?什么是结构变量和结构成员变量,如何引用结构成员变量?结构变量如何作为函数参数使用?什么是结构数组,如何定义和使用结构数组?什么是结构指针,它如何实现对结构分量的操作?结构指针是如何作为函数的参数的?,9.1 构建手机通讯录,9.1.1 程序解析9.1.2 结构的概念与定义9.1.3 结构的嵌套定义,9.1.1 程序解析,例9-1 构建简单的手机通讯录联系人的基本信息:姓名、年龄和联系电话最多容纳50名联系人的信息 具有新建和查询功能,9.1.1 程序解析程序结构,程序结构主函数main:程序的总体控制函数new_friend:新建联系人功能函数search_friend:查询联系人功能,main(),new_friend(),search_friend(),程序解析数据类型/变量,数据类型/变量结构类型struct friends_list:在程序首部定义,其中的成员分别代表联系人的基本信息struct friends_list char name10; /* 姓名 */ int age; /* 年龄 */ char telephone13; /* 联系电话 */; 结构数组friends:每个元素就是一个结构变量,对应一个联系人struct friends_list friends50;,程序解析全局变量/函数参数,全局变量Count:记录当前的联系人总数 函数new_friend和search_friend的参数之一是结构数组:void new_friend(struct friends_list friends );void search_friend(struct friends_list friends , char *name); 结构数组名作为函数实参与普通数组名作函数参数一样,将数组首地址传递给函数形参,程序解析源程序,#include#include/*手机通讯录结构定义*/struct friends_list char name10; /* 姓名 */ int age; /* 年龄 */ char telephone13; /* 联系电话 */; int Count = 0; /* 全局变量记录当前联系人总数 */void new_friend(struct friends_list friends );void search_friend(struct friends_list friends , char *name);,源程序,int main(void) int choice; char name10; struct friends_list friends50; /* 包含50个人的通讯录 */ do printf("手机通讯录功能选项:1:新建 2:查询 0:退出n"); printf("请选择功能:"); scanf("%d", ,源程序,/*新建联系人*/void new_friend(struct friends_list friends ) struct friends_list f; if(Count = 50) printf("通讯录已满!n"); return; printf("请输入新联系人的姓名:"); scanf("%s", f.name); printf("请输入新联系人的年龄:"); scanf("%d", ,源程序,/*查询联系人*/void search_friend(struct friends_list friends , char *name) int i, flag = 0; if(Count = 0) printf("通讯录是空的!n"); return; for(i = 0; i < Count; i+) if(strcmp(name, friendsi.name) = 0) /* 找到联系人*/ flag=1; break; if(flag) printf("姓名: %st", friendsi.name); printf("年龄: %dt", friendsi.age); printf("电话: %sn", friendsi.telephone); else printf("无此联系人!");,9.1.2 结构的概念与定义,使用结构来表示通讯录信息:struct friends_list char name10; /*姓名*/ int age; /*年龄*/ char telephone13; /*联系电话*/; 结构:构造数据类型,把有内在联系的不同类型的数据统一成一个整体,使它们相互关联结构又是变量的集合,可以单独使用其成员,结构的定义,结构类型定义的一般形式为: struct 结构名 类型名 结构成员名1; 类型名 结构成员名2; 类型名 结构成员名n; ;,结构的定义以分号结束,被看作一条语句,关键字struct和它后面的结构名一起组成一个新的数据类型名,结构定义示例,定义平面坐标结构:struct point double x; double y; 虽然x、y的类型相同,也可以用数组的方式表示,但采用结构体描述整体性更强,增加了程序的可读性,使程序更清晰。,9.1.3 结构的嵌套定义,在实际生活中,一个较大的实体可能由多个成员构成,而这些成员中有些又有可能是由一些更小的成员构成的实体。在手机通讯录中,增加“通信地址”,结构的嵌套定义,struct address char city10; char street20; int code; int zip;,struct nest_friendslist char name10; int age; struct address addr; char telephone13; nest_friend;,在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。,9.2 结构变量,9.2.1 结构变量的定义和初始化9.2.2 结构变量的使用,9.2.1结构变量的定义和初始化,三种定义结构变量的方式: 1.单独定义先定义结构类型,再定义具有这种结构类型的变量 struct friends_list char name10; /* 姓名 */ int age; /* 年龄 */ char telephone13; /* 联系电话 */; struct friends_list friend1, friend2;,结构变量的定义,2. 混合定义在定义结构体类型的同时定义结构体变量 struct friends_listchar name10; int age; char telephone13; friend1, friend2; 3. 无类型名定义在定义结构体变量时省略结构体名struct char name10; int age; char telephone13; friend1, friend2;,结构变量的初始化,struct friends_list friend1 = "Zhang", 26, "0571-85171880 " ;,name age telephone ,9.2.2 结构变量的使用,1. 结构变量成员的引用结构变量名 .结构成员名friend1.age = 26;strcpy(friend1.name, "Zhang San"); nest_friend.addr.zip,例9-2 计算实发工资,在一个职工工资管理系统中,工资项目包括编号、姓名、基本工资、奖金、保险、实发工资。输入一个正整数n,再输入n个职工的前5项信息,计算并输出每位职工的实发工资。实发工资 = 基本工资+奖金保险。,例9-2 源程序,#includestruct employee int num; char name20; float jbgz, jj, bx, sfgz;int main(void) int i, n; struct employee e; printf("请输入职工人数n: "); scanf("%d", ,请输入职工人数n: 1请输入第1个职工的信息:102 Zhong 2200.5 800 85.2编号:102 姓名:Zhong 实发工资:2915.30,结构变量的使用整体赋值,2. 结构变量的整体赋值具有相同类型的结构变量可以直接赋值。将赋值符号右边结构变量的每一个成员的值都赋给了左边结构变量中相应的成员。 struct friends_list char name10; int age; char telephone13; friend1 = Zhang",26, “0571-85271880”, friend2;friend2 = friend1;,结构变量的使用函数参数,3. 结构变量作为函数参数当程序的规模较大,功能较多时,需要以函数的形式进行功能模块的划分和实现;如果在函数间传递结构数据,则需用结构变量作为函数的参数或返回值。,例9-3 结构变量做为函数参数,改写例9-2,要求使用结构变量作为函数参数。定义一个用于计算实发工资的函数: float count_sfgz(struct employee m) return m.jbgz + m.jj - m.bx; 再将主函数main中的语句: e.sfgz = e.jbgz + e.jj - e.bx; 改为: e.sfgz = count_sfgz(e);,一个结构变量只能表示一个实体的信息,如果有许多相同类型的实体,就需要使用结构数组。结构数组是结构与数组的结合,与普通数组的不同之处在于每个数组元素都是一个结构类型的数据,包括各个成员项。,9.3 结构数组,结构数组的定义方法与结构变量相同 struct friends_list char name10; int age; char telephone13; friends10; 结构数组friends,它有10个数组元素,从friends0到friends9,每个数组元素都是结构类型struct friends_list,9.3 结构数组,结构数组的初始化,struct friends_list friends10 = "zhang san", 26, "0571-85271880", "Li Si", 30, "13605732436" ;,结构数组元素,结构数组元素的成员引用结构体数组名下标 . 结构体成员名 使用方法与同类型的变量完全相同friends5.age = 26;strcpy(friends5.name,"Zhang San");friends4 = friends1;,例9-4 结构数组排序,输入并保存10个学生的信息,计算并输出平均分,再按照从高分到低分的顺序输出他们的信息。 #include struct student int num; char name20; int score; struct student stud10; /* 定义结构数组 */,例9-4 源程序,int main(void) int i, j, index, sum = 0; struct student temp; /* 输入10个学生的记录,并累加成绩 */ for(i = 0; i < 10; i+) printf("No %d: ", i+1); scanf("%d%s%d", ,9.4 结构指针,9.4.1 结构指针的概念9.4.2 结构指针作为函数参数,9.4.1结构指针的概念,结构指针:指向结构类型变量的指针例9-1定义的结构类型 struct friends_liststruct friends_list friend1 = "zhang", 26, "88018445" struct friends_list *p;p = ,结构指针的使用,(1) 用*p访问结构成员(*p).age = 36;(2) 用指向运算符“->”访问指针指向的结构成员。p->age = 36;当p = ,9.4.2 结构指针作为函数参数,当结构指针作为函数的参数时,执行效率高,可以完成比基本类型指针更为复杂的操作。例9-5 输入10个学生的学号、姓名和成绩,输出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名、成绩和等级要求定义和调用函数set_grade根据学生成绩设置等级,并统计不及格人数等级设置:A :85100;B:7084;C:6069;D:059,例9-5 源程序,#define N 10struct student int num; char name20; int score; char grade;int main(void) struct student stuN, *ptr; ptr = stu; /* 输入 略 */ count = set_grade( ptr ); ,int set_grade(struct student * p) int i, n = 0; for(i = 0; i score >= 85) p->grade = 'A' else if(p->score >= 70) p->grade = 'B' else if(p->score >= 60) p->grade = 'C' else p->grade = 'D' n+; return n;,调用set_grade返回主函数后,主函数中结构数组stu的元素的grade成员已经被赋值,例9-1 说明,例9-1中,结构数组名friends作为函数参数时,其实质就是结构指针作为函数参数,因为数组名代表数组的首地址。因此,结构数组名与结构指针变量都可以做为函数的参数。 与结构变量作为函数参数相比,用结构指针作为函数参数的效率更高,因而是更佳的选择。,本章要点,什么是结构?结构与数组有什么差别?有几种结构的定义形式,它们之间有什么不同?什么是结构的嵌套?什么是结构变量和结构成员变量,如何引用结构成员变量?结构变量如何作为函数参数使用?什么是结构数组,如何定义和使用结构数组?什么是结构指针,它如何实现对结构分量的操作?结构指针是如何作为函数的参数的?,

    注意事项

    本文(chap2_用C语言编写程序1-3.ppt)为本站会员(创****公)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开