习题课(三)(结构)

上传人:第*** 文档编号:49188211 上传时间:2018-07-25 格式:PPT 页数:38 大小:452.50KB
返回 下载 相关 举报
习题课(三)(结构)_第1页
第1页 / 共38页
习题课(三)(结构)_第2页
第2页 / 共38页
习题课(三)(结构)_第3页
第3页 / 共38页
习题课(三)(结构)_第4页
第4页 / 共38页
习题课(三)(结构)_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《习题课(三)(结构)》由会员分享,可在线阅读,更多相关《习题课(三)(结构)(38页珍藏版)》请在金锄头文库上搜索。

1、习题课(三)Chap 9 结构 9.1 构建手机通讯录 9.2 结构变量 9.3 结构数组 9.4 结构指针本章要点n什么是结构?结构与数组有什么差别?n有几种结构的定义形式,它们之间有什么不同?n什么是结构的嵌套?n什么是结构变量和结构成员变量,如何引用结构成 员变量?n结构变量如何作为函数参数使用?n什么是结构数组,如何定义和使用结构数组?n什么是结构指针,它如何实现对结构分量的操作?n结构指针是如何作为函数的参数的? 9.1 构建手机通讯录 9.1.1 程序解析9.1.2 结构的概念与定义9.1.3 结构的嵌套定义9.1.2 结构的概念与定义n使用结构来表示通讯录信息: struct f

2、riends_listchar name10; /*姓名*/int age; /*年龄*/char telephone13; /*联系电话*/ ; n结构:构造数据类型,把有内在联系的不同类型的数据统 一成一个整体,使它们相互关联,结构是一种类型n结构变量又是成员变量的集合,可以单独使用其成员结构变量friend:对应一个联系人 struct friends_list friend;结构数组friends:每个元素就是一个结构变量,对应一个联系人 struct friends_list friends50;结构的定义n结构类型定义的一般形式为:struct 结构名 类型名 结构成员名1;类型名

3、 结构成员名2; 类型名 结构成员名n;;结构的定义以分号结束 ,被看作一条语句 关键字struct和它后面 的结构名一起组成一个 新的数据类型名 结构定义示例定义平面坐标结构: struct point double x;double y; ; 虽然x、y的类型相同,也可以用数组的方式 表示,但采用结构体描述整体性更强,增加 了程序的可读性,使程序更清晰。9.1.3 结构的嵌套定义n在实际生活中,一个较大的实体可能由多个成员 构成,而这些成员中有些又有可能是由一些更小 的成员构成的实体。n在手机通讯录中,增加“通信地址”姓名性别年龄 通信地址联系 电话电子 邮箱城市街道门牌号邮编结构的嵌套定

4、义struct addresschar city10;char street20;int code;int zip; ;struct nest_friendslist char name10; int age; struct address addr;char telephone13; ;在定义嵌套的结构类型时,必须先定义 成员的结构类型,再定义主结构类型。 姓名性别年龄 通信地址联系 电话电子 邮箱城市街道门牌号邮编9.2 结构变量 9.2.1 结构变量的定义和初始化9.2.2 结构变量的使用9.2.1结构变量的定义和初始化三种定义结构变量的方式: 1.单独定义 先定义结构类型,再定义具有这

5、种结构类型的变 量 struct friends_listchar name10; /* 姓名 */int age; /* 年龄 */char telephone13; /* 联系电话 */ ; struct friends_list friend1, friend2;结构变量的定义2. 混合定义 在定义结构体类型的同时定义结构体变量 struct friends_list char name10; int age; char telephone13; friend1, friend2; 3. 无类型名定义 在定义结构体变量时省略结构体名 struct char name10; int age

6、; char telephone13; friend1, friend2; 结构变量的初始化struct friends_list friend1 = “Zhang“, 26, “0571-85171880 “ ;name age telephone Zhang260571-852718809.2.2 结构变量的访问1. 结构变量成员的访问结构变量名 .结构成员名friend1.age = 26; strcpy(friend1.name, “Zhang San“); nest_friend.addr.zip例9-2 计算实发工资在一个职工工资管理系统中,工资项目包括编号、姓 名、基本工资、奖金

7、、保险、实发工资。 输入一个正整数n,再输入n个职工的前5项信息,计 算并输出每位职工的实发工资。 实发工资 = 基本工资+奖金保险。例9-2 源程序#include struct employeeint num;char name20;float jbgz, jj, bx, sfgz; ; int main(void) int i, n;struct employee e; printf(“请输入职工人数n: “); scanf(“%d“, for(i = 1; i struct studentint num;char name20;int score; ; struct student s

8、tud10; /* 定义结构数组 */例9-4 源程序int main(void) int i, j, index, sum = 0; struct student temp;/* 输入10个学生的记录,并累加成绩 */for(i = 0; i ”访问指针指向的结构成员。 p-age = 36;当p = (*p).age = 36; p-age = 36;9.4.2 结构指针作为函数参数当结构指针作为函数的参数时,执行效率高, 可以完成比基本类型指针更为复杂的操作。 例9-5 输入10个学生的学号、姓名和成绩,输 出学生的成绩等级和不及格人数。每个学生的记录包括学号、姓名、成绩和等级要求定义和

9、调用函数set_grade根据学生成绩设置等级 ,并统计不及格人数等级设置: A :85100;B:7084;C:6069;D:059例9-5 源程序#define N 10 struct studentint 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 =

10、 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 说明n例9-1中,结构数组名friends作为函数参数时,其实 质就是结构指针作为函数参数,因为数组名代表数 组的首地址。因此,结构数组名与结构指针变量都 可以做为函数的参数。 n与结构变量作为函数参数相比,用结构指针作为函 数参数的效率更高,因而是更佳的选择。 9.1.

11、1 程序解析例9-1 构建简单的手机通讯录联系人的基本信息:姓名、年龄和联系电话最多容纳50名联系人的信息 具有新建和查询功能程序解析源程序#include #include /*手机通讯录结构定义*/ struct friends_listchar name10; /* 姓名 */int age; /* 年龄 */char telephone13; /* 联系电话 */ ; int Count = 0; /* 全局变量记录当前联系人总数 */ void new_friend(struct friends_list friends ); void search_friend(struct fr

12、iends_list friends , char *name);源程序int main(void) int choice; char name10;struct friends_list friends50; /* 包含50个人的通讯录 */doprintf(“手机通讯录功能选项:1:新建 2:查询 0:退出n“);printf(“请选择功能:“); scanf(“%d“, switch(choice)case 1: new_friend(friends); break;case 2: printf(“请输入要查找的联系人名:“); scanf(“%s“, name);search_frie

13、nd(friends, name); break;case 0: break;while(choice != 0);printf(“谢谢使用通讯录功能!n“);return 0; 源程序/*新建联系人*/ 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“, printf(“请输入新联系

14、人的联系电话:“);scanf(“%s“, f.telephone);friendsCount = f;Count+; 源程序/*查询联系人*/ 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“, f

15、riendsi.name);printf(“年龄: %dt“, friendsi.age);printf(“电话: %sn“, friendsi.telephone);elseprintf(“无此联系人!“); 程序解析程序结构n程序结构主函数main:程序的总体控制函数new_friend:新建联系人功能函数search_friend:查询联系人功能 main()new_friend()search_friend()程序解析数据类型/变量n数据类型/变量结构类型struct friends_list:在程序首部定义,其中 的成员分别代表联系人的基本信息 struct friends_listchar

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号