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

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

文档评论(0)

2232文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档