Chap9结构9.1构建学生信息库9.2计算学生平均成绩9.3学生成绩排序9.4修改学生成绩
Chap 9 结构 9.1 构建学生信息库 9.2 计算学生平均成绩 9.3 学生成绩排序 9.4 修改学生成绩
本章要点■什么是结构?结构与数组有什么差别?有几种结构的定义形式,它们之间有什么不同?什么是结构的嵌套?什么是结构变量和结构成员变量?如何引用结构成员变量?结构变量如何作为函数参数使用?什么是结构数组?如何定义和使用结构数组?■什么是结构指针?它如何实现对结构分量的操作?■结构指针是如何作为函数的参数的?
本章要点 ◼ 什么是结构?结构与数组有什么差别? ◼ 有几种结构的定义形式,它们之间有什么不同? ◼ 什么是结构的嵌套? ◼ 什么是结构变量和结构成员变量?如何引用结构 成员变量? ◼ 结构变量如何作为函数参数使用? ◼ 什么是结构数组?如何定义和使用结构数组? ◼ 什么是结构指针?它如何实现对结构分量的操作? ◼ 结构指针是如何作为函数的参数的?
9.1构建学生信息库9.1.1程序解析9.1.2结构的概念与定义9.1.3结构的嵌套定义
9.1 构建学生信息库 9.1.1 程序解析 9.1.2 结构的概念与定义 9.1.3 结构的嵌套定义
9.1.1程序解析例9-1构建学生信息库■假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,且最多需要处理50名学生的数据。■构建学生信息库,实现学生基本信息的建立、查询和输出功能。(源程序参见教材例9-1)
9.1.1 程序解析 例9-1 构建学生信息库 ◼ 假设学生的基本信息包括学号、姓名、三 门课程成绩以及个人平均成绩,且最多需 要处理50名学生的数据。 ◼ 构建学生信息库,实现学生基本信息的建 立、查询和输出功能。 (源程序参见教材例9-1)
9.1.1程序解析主函数main:主界面功能控制函数newstudent:新建学生信息函数search_student:查询学生信息函数output _student:输出学生信息main()new_student()search_student()output_student()
9.1.1 程序解析 ◼ 主函数main:主界面功能控制 ◼ 函数new_student:新建学生信息 ◼ 函数search_student:查询学生信息 ◼ 函数output_student:输出学生信息 main() new_student() search_student() output_student()
9.1.1程序解析程序首部定义了结构类型structstudent,其中的成员分别代表学生的基本信息structstudent(*学号*/int num;/*姓名*/char name[10];intcomputer,english,math;/*三门课程成绩*/*个人平均成绩*double average;3;主函数中定义的结构数组students中每一个数组元素就是一个结构变量,对应一名学生struct student students[50];
9.1.1 程序解析 ◼ 程序首部定义了结构类型struct student,其中 的成员分别代表学生的基本信息 struct student{ int num; /* 学号 */ char name[10]; /* 姓名 */ int computer, english, math; /* 三门课程成绩 */ double average; /* 个人平均成绩 */ }; ◼ 主函数中定义的结构数组students中每一个数组 元素就是一个结构变量,对应一名学生 struct student students[50];
9.1.1程序解析■全局变量Count用于计数当前学生总数三个自定义函数的参数之一都是结构数组。 void new_student(struct student students[]);void search_student(struct student students[], intnum);void output_student(struct student students[]):结构数组名作为函数实参实际上与普通数组名作函数参数是一样的,就是将数组首地址传递给函数形参
9.1.1 程序解析 ◼ 全局变量Count用于计数当前学生总数 ◼ 三个自定义函数的参数之一都是结构数组。 void new_student(struct student students[ ] ); void search_student(struct student students[ ], int num); void output_student(struct student students[ ]); 结构数组名作为函数实参实际上与普通数组名作 函数参数是一样的,就是将数组首地址传递给 函数形参
9.1.2结构的概念与定义结构与数组:·都是构造类型,是多■使用结构来表示学生信息:个变量的集合struct student(·数组成员类型相同,/*学号*int num;结构成员类型不同/*姓名+char name[10];intcomputer,english,math;/*三门课程成绩*double average;/*个人平均成绩*3;结构是C语言中一种新的构造数据类型,它能够把有内在联系的不同类型的数据统一成一个整体,使它们相互关联结构又是变量的集合,可以按照对基本数据类型的操作方法单独使用其变量成员
9.1.2 结构的概念与定义 ◼ 使用结构来表示学生信息: struct student{ int num; /* 学号 */ char name[10]; /* 姓名 */ int computer, english, math; /* 三门课程成绩 */ double average; /* 个人平均成绩 */ }; ◼ 结构是C语言中一种新的构造数据类型,它能够 把有内在联系的不同类型的数据统一成一个整体, 使它们相互关联 ◼ 结构又是变量的集合,可以按照对基本数据类型 的操作方法单独使用其变量成员。 结构与数组: •都是构造类型,是多 个变量的集合 •数组成员类型相同, 结构成员类型不同
9.1.2结构的概念与定义■结构类型定义的一般形式为:关键字struct和它后面struct 结构名的结构名一起组成一t个新的数据类型名类型名结构成员名1;类型名结构成员名2;...类型名结构成员名n;结构的定义以分号结3;束,C语言中把结构的定义看作是一条语句
9.1.2 结构的概念与定义 ◼ 结构类型定义的一般形式为: struct 结构名 { 类型名 结构成员名1; 类型名 结构成员名2; • • • 类型名 结构成员名n; }; 结构的定义以分号结 束,C语言中把结构的 定义看作是一条语句 关键字struct和它后面 的结构名一起组成一 个新的数据类型名
9.1.2结构的概念与定义■例如,平面坐标结构:·虽然x、y的类型相同,也可以用数组的方式表示,struct point但采用结构进行描述,更(贴近事物本质,从而增加了程序的可读性,使程序floatX;更易理解floaty;·结构比较适合用于描述具3;有多个属性的实体或对象
9.1.2 结构的概念与定义 ◼ 例如,平面坐标结构: struct point { float x; float y; }; •虽然x、y的类型相同,也 可以用数组的方式表示, 但采用结构进行描述,更 贴近事物本质,从而增加 了程序的可读性,使程序 更易理解 •结构比较适合用于描述具 有多个属性的实体或对象