网站大量收购闲置独家精品文档,联系QQ:2885784924

08-结构与自定义数据类型案例.pptx

  1. 1、本文档共55页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言程序设计 ——结构与自定义类型 林大 经管学院 瞿华 结构与自定义类型 结构与自定义类型 应用:数据IO与转换 应用:统计与数据筛选 应用:排序与查找 结构与指针 应用:链表 2 结构与自定义类型 结构与自定义类型 应用:数据IO与转换 应用:统计与数据筛选 应用:排序与查找 结构与指针 应用:链表 3 一、结构与自定义类型 假设我们要编写一个学生成绩管理系统。对于每一个学生,我们都需要记录他的学号、姓名、班级、成绩等信息。用什么数据结构合适呢? 显然,最好将属于同一个学生的信息组织到一个数据单元中,是最好的。 C语言中用结构(structure)来将多项数据组织到同一个逻辑实体(变量)中 结构实际上是创建自定义数据类型的一种方法 例如, 下面定义了一个名为StudentInfo的结构数据类型: struct StudentInfo{ int score; char name[100]; int studentNo; } ; 每个StudentInfo类型的数据中包含三个子数据项: score、name和studentNo; 4 1.1 结构定义与使用 可以用它来声明变量、指针和数组: struct StudentInfo si; struct StudentInfo sis[20]; struct StudentInfo *psi; 注意:在声明结构变量时,struct关键字不能省略! 可以使用’.’运算符来访问结构变量中的子数据项(字段): si.score=20; strcpy(si.name, “张三”); sis[5].score=80; scanf(%d %d,si.score, sis[3].score); 结构指针的语法我们后面再讲。 struct StudentInfo{ int score; char name[100]; int studentNo; } ; 5 1.1 结构定义与使用 由于直接使用结构类型定义变量必须要在结构名前加struct关键字,很麻烦 所以在定义结构类型时,通常和typedef操作连用,为类型定义一个别名,以简化使用 typedef struct { int score; char name[100]; int studentNo; } StudentInfo; 后面我们都会这样来定义结构类型 6 1.2 示例:学生成绩 例1-1: 请编写程序,读取并显示学生的成绩,具体要求如下: 首先读入用户键盘输入的班上学生人数 然后,依次读入用户键盘输入的每个学生的学号、姓名和成绩 最后,将其以表格的形式输出。 7 1.2 示例:学生成绩 表头 每行内容 8 1.2 示例:学生成绩 程序见1-1score.c 分析: 首先,我们需要一个自定义的结构类型,以保存每个学生的成绩信息。 该结构需要三个字段,分别用于保存学号、姓名和成绩 9 1.2 示例:学生成绩 分析(续): 我们需要一个Student_Score类型的数组ss来保存所有学生的成绩信息,还需要一个配套的变量n来记录班上学生人数 输入部分,只需要读入n,然后遍历ss[0]..ss[n-1],依次读入学生信息即可。 关键:如何用scanf函数读取用户输入的信息,并将其保存到结构类型的数组元素的指定字段中? 输出部分,只需要遍历ss[0]..ss[n-1]并输出对应元素各字段的值即可。 如何访问结构类型数组元素的字段 关键:如何产生表头和行与行之间的分隔。 10 1.3 示例:自带元素个数的数组 由于数组本身并不包含数组中实际元素个数的信息,所以除字符数组(字符串)外,我们在使用其他数组时,都需要有一个额外的变量来记录数组中的元素个数。 我们可以定义一个这样的一个结构,两个字段分别用于保存数组和数组中的元素个数 11 1.3 示例:自带元素个数的数组 例1-2:编程,统计本月在外吃饭的总金额。要求: 用户先输入在外吃饭的次数 然后用户依次输入每次吃饭的金额 全部输入完毕后,统计总金额 分析:程序需要做四件事 输入吃饭次数,保存 依次输入每次金额,保存在数组中 遍历数组,统计总金额 输出总金额 程序见1-2.money.c 12 1.4* 平面上的点坐标 我们知道,在平面直角坐标系中,可以用一对实数(x,y)表示任意一个点的位置,即点的坐标。 因此,我们可以定义这样的一个结构,来保存平面中的点的坐标: 13 1.4* 平面上的点坐标 例1-3:绘制函数y=200sin(x/50)在区间(-400,400)上的图像 分析: 我们可以从x=-400开始,一直到x=400,在函数曲线上找出若干个x坐标间隔相等的点,依次计算出它们的坐标,并保存到Point类型的数组中 应如何产生每个点的x坐标? 然后从

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档