版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1/,第二十一讲 结构(一),2/,学习目标,理解结构的定义 能够自定义结构 掌握使用结构变量的方法,3/,9.1 构建手机通讯录,9.1.1 程序解析 9.1.2 结构的概念与定义 9.1.3 结构的嵌套定义,4/,9.1.1 程序解析,例9-1 构建简单的手机通讯录 联系人的基本信息:姓名、年龄和联系电话 最多容纳50名联系人的信息 具有新建和查询功能,5/,9.1.1 程序解析程序结构,程序结构 主函数main:程序的总体控制 函数new_friend:新建联系人功能 函数search_friend:查询联系人功能,main(),new_friend(),search_friend(),
2、6/,程序解析数据类型/变量,数据类型/变量 结构类型struct friends_list:在程序首部定义,其中的成员分别代表联系人的基本信息 struct friends_list char name10; /* 姓名 */ int age; /* 年龄 */ char telephone13; /* 联系电话 */ ; 结构数组friends:每个元素就是一个结构变量,对应一个联系人 struct friends_list friends50;,7/,程序解析全局变量/函数参数,全局变量Count:记录当前的联系人总数 函数new_friend和search_friend的参数之一是结构
3、数组: void new_friend(struct friends_list friends ); void search_friend(struct friends_list friends , char *name); 结构数组名作为函数实参与普通数组名作函数参数一样,将数组首地址传递给函数形参,8/,程序解析源程序,#include #include /*手机通讯录结构定义*/ struct friends_list char name10; /* 姓名 */ int age; /* 年龄 */ char telephone13; /* 联系电话 */ ; int Count = 0;
4、 /* 全局变量记录当前联系人总数 */ 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, ,源程序,/*新建联系人*/
5、 void new_friend(struct friends_list friends ) struct friends_list f; if(Count = 50) printf(通讯录已满!n); return; printf(请输入新联系人的姓名:); scanf(%s, ); printf(请输入新联系人的年龄:); scanf(%d, ,源程序,/*查询联系人*/ void search_friend(struct friends_list friends , char *name) int i, flag = 0; if(Count = 0) printf(通讯录是空
6、的!n); return; for(i = 0; i Count; i+) if(strcmp(name, ) = 0) /* 找到联系人*/ flag=1; break; if(flag) printf(姓名: %st, ); printf(年龄: %dt, friendsi.age); printf(电话: %sn, friendsi.telephone); else printf(无此联系人!); ,12/,9.1.2 结构的概念与定义,使用结构来表示通讯录信息: struct friends_list char name10; /*姓
7、名*/ int age; /*年龄*/ char telephone13; /*联系电话*/ ; 结构:构造数据类型,把有内在联系的不同类型的数据统一成一个整体,使它们相互关联 结构又是变量的集合,可以单独使用其成员,13/,结构的定义,结构类型定义的一般形式为: struct 结构名 类型名 结构成员名1; 类型名 结构成员名2; 类型名 结构成员名n; ;,结构的定义以分号结束,被看作一条语句,关键字struct和它后面的结构名一起组成一个新的数据类型名,14/,结构定义示例,定义平面坐标结构: struct point double x; double y; ; 虽然x、y的类型相同,也
8、可以用数组的方式表示,但采用结构体描述整体性更强,增加了程序的可读性,使程序更清晰。,15/,9.1.3 结构的嵌套定义,在实际生活中,一个较大的实体可能由多个成员构成,而这些成员中有些又有可能是由一些更小的成员构成的实体。 在手机通讯录中,增加“通信地址”,16/,结构的嵌套定义,struct address char city10; char street20; int code; int zip; ;,struct nest_friendslist char name10; int age; struct address addr; char telephone13; nest_frie
9、nd;,在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型。,17/,9.2 结构变量,9.2.1 结构变量的定义和初始化 9.2.2 结构变量的使用,18/,9.2.1结构变量的定义和初始化,三种定义结构变量的方式: 1.单独定义 先定义结构类型,再定义具有这种结构类型的变量 struct friends_list char name10; /* 姓名 */ int age; /* 年龄 */ char telephone13; /* 联系电话 */ ; struct friends_list friend1, friend2;,19/,结构变量的定义,2. 混合定义 在定义
10、结构体类型的同时定义结构体变量 struct friends_list char name10; int age; char telephone13; friend1, friend2; 3. 无类型名定义 在定义结构体变量时省略结构体名 struct char name10; int age; char telephone13; friend1, friend2;,20/,结构变量的初始化,struct friends_list friend1 = Zhang, 26,;,name age telephone ,21/,9.2.2 结构变量的使用,1. 结构变量
11、成员的引用 结构变量名 .结构成员名 friend1.age = 26; strcpy(, Zhang San); nest_friend.addr.zip,22/,例9-2 计算实发工资,在一个职工工资管理系统中,工资项目包括编号、姓名、基本工资、奖金、保险、实发工资。 输入一个正整数n,再输入n个职工的前5项信息,计算并输出每位职工的实发工资。 实发工资 = 基本工资+奖金保险。,例9-2 源程序,#include struct employee int num; char name20; float jbgz, jj, bx, sfgz; ; int main(v
12、oid) int i, n; struct employee e; printf(请输入职工人数n: ); scanf(%d, ,请输入职工人数n: 1 请输入第1个职工的信息:102 Zhong 2200.5 800 85.2 编号:102 姓名:Zhong 实发工资:2915.30,24/,结构变量的使用整体赋值,2. 结构变量的整体赋值 具有相同类型的结构变量可以直接赋值。 将赋值符号右边结构变量的每一个成员的值都赋给了左边结构变量中相应的成员。 struct friends_list char name10; int age; char telephone13; friend1 = Zhang,26, , friend2; friend2 = friend1;,25/,结构变量的使用函数参数,3. 结构变量作为函数参数 当程序的规模较大,功能较多时,需要以函数的形式进行功能模块的划分和实现; 如果在函数间传递结构数据,则需用结构变量作为函数的参数或返回值。,26/,例9-3 结构变量做为函数参数,改写例9-2,要求使用结
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工队上报材料采购制度
- 采购部门制度及流程
- 采购项目备案登记制度
- 钉钉采购奖惩制度
- 食堂采购管理制度及流程
- 第19章 二次根式基础卷(答案版)-人教版(2024)八下
- 七年级下学期第一次月考测试卷(教师版)【相交线与平行线~实数】-人教版(2024)七下
- 2026年林地收购合同(1篇)
- 教学设计:5.3 直线运动
- 销售部工作总结汇编14篇
- 入职心理测试题目及答案300道
- JTG F90-2015 公路工程施工安全技术规范
- 实验室计量器器具校准操作规程
- 2024年湖南出版投资控股集团招聘笔试参考题库含答案解析
- DL∕T 547-2020 电力系统光纤通信运行管理规程
- 电气控制与PLC教案电气控制与PLC教案
- 建筑材料说课公开课一等奖市赛课获奖课件
- 湖南2023年长沙银行理财经理社会招聘(37)考试参考题库含答案详解
- 混凝土搅拌车维护保养
- 薄膜的物理气相沉积
- 铣刨加罩道路工程施工组织设计方案
评论
0/150
提交评论