- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 数据的组织结构(二) 6.1 结构体类型 结构体类型的概念 结构体是一种可以将若干个不同数据类型的变量组合在一起的复合型数据类型。人们常常借助于它将表达同一对象的不同属性封装在一起,使之达到逻辑概念与程序变量一一对应的目的,从而提高程序的清晰度,降低程序的复杂度,改善程序的可维护性。 结构体类型的声明 类型声明的语法格式为: struct 结构体类型名{ 数据类型 成员1; 数据类型 成员2; ...... 数据类型n 成员n; }; 例如: struct point_type{ int x; /*x坐标*/ int y; /*y坐标*/ }; 这个结构体类型表示:point_type类型的变量将包含两个成员x、y,它们分别用于存储坐标点的两个坐标值。 可以利用point_type类型声明下面这个结构体类型: struct rectangle_type{ struct point_type lefttop; /*左上角的坐标*/ struct point_type rightbottom; /*右下角的坐标*/ }; 在C语言中,允许用户为已经存在的数据类型起一个别名,其说明格式为: typedef 原数据类型 新数据类型名; typedef struct point_type{ int x; int y; }POINT; 在这里,POINT与struct point_type完全等价 结构体变量的定义 : 利用结构体类型名定义变量的格式为: 结构体类型名 变量名 [,变量名[,变量名...]]; 例如: POINT p1, p2; 等价于 struct point_type p1, p2; 与其他数据类型的变量一样,一旦定义了变量之后,系统就会为这个变量分配相应的存储空间。对于结构体型变量而言,系统为之分配的存储单元数量取决于结构体所包含的成员数量以及每个成员所属的数据类型。例如,上面定义的结构体型变量p1包含两个int类型的成员。 结构体变量的初始化 struct 结构体类型名 变量名={成员值列表}; 例: struct point_type p = {10, 20}; struct date_type d = {2005, 5, 20}; struct rectangle_type rect = { {10, 10}, {100, 100} }; 结构体变量的引用 结构体变量名.成员名 结构体型变量的基本操作 结构体型变量的输入 scanf(“%d%d%”, d.year, d.month, d.day); 结构体型变量的输出 printf(“%d %d %d”, d.year, d.month, d.day); 结构体型变量的赋值 d.year = 2005; d.month = 5; d.day = 20; 如果一个结构体型变量已经被赋值,并且希望将它的值赋给另外一个类型完全相同的结构体型变量,则可以采用整体赋值的方式。 学生基本信息的组织方式 学生基本信息的组织和管理是一个十分有代表性的结构体应用实例。为了简化程序的复杂度,减少程序的书写量,在这里,假设学生的基本信息只包括:学号、姓名、出生日期、所属院系、所学专业。 例1:通过键盘输入30名学生的基本信息,并显示输出。然后,再通过键盘输入一个月份和日期,查找并输出本年度在这个给定日期之后过生日的学生信息。 问题分析 为了表示一名学生的基本信息,应该声明一个包括学号、姓名、出生日期、所属院系、所学专业的结构体类型。 “出生日期”需要用三个数据项才能够表示完整,而“日期”是一个独立的概念,也应该为之声明一个结构体类型。 组织30名学生的信息。30名学生的基本信息属于同一个性质的数据,因此,应该利用一维数组将它们组织在一起。 算法描述 例2:假设通过键盘输入一个含有10个整数的数列。请编写一个程序,将10个整数按照从小到大的顺序重新排列,要求输出排序后的结果以及每个整数在排序前的位置。 结构体类型应用实例 问题分析 排序是一种基本且应用广泛的操作。在前面的实例中,我们已经看到过排序操作的实现方法。然而,这个题目不仅要求输出排序之后的结果,还要求输出每个数据在排序前的位置。解决这个问题的一种方法是:将原始位置作为每个数据的属性保留起来,并借助于结构类型DATATYPE将每个数值data及位置pos绑定在一起,形成描述每个数据的整体信息。如果在排序过程中,需要交换两个数据的位置,可以将两个数据对应的结构型变量整体相互交换,以便实现每个数据的原始位置信息永远
您可能关注的文档
最近下载
- 商业秘密保护知识培训.ppt VIP
- 生态学全套配套课件第三版杨持第二章.ppt VIP
- 《向上管理 与你的领导相互成就》读书笔记思维导图.pptx VIP
- 钢结构工程维修施工方案.docx VIP
- 2023年武汉科技大学计算机科学与技术专业《计算机网络》科目期末试卷A(有答案).docx VIP
- 电信春节通信保障应急预案.docx VIP
- 女装设计 全套课件(上).pptx VIP
- 珠海市政府投资项目建设监督管理中心招考合同制职员考前自测高频考点模拟试题(共500题)含答案详解.docx VIP
- 体例格式9:工学一体化课程《小型网络安装与调试》任务4学习任务工作页.docx VIP
- 建筑节能工程监理质量评估报告.pdf VIP
文档评论(0)