C语言项目实训教程 教学课件 ppt 作者 侯小毛 马凌 项目 7 结构体

上传人:E**** 文档编号:89346111 上传时间:2019-05-23 格式:PPT 页数:21 大小:1MB
返回 下载 相关 举报
C语言项目实训教程 教学课件 ppt 作者  侯小毛 马凌 项目 7 结构体_第1页
第1页 / 共21页
C语言项目实训教程 教学课件 ppt 作者  侯小毛 马凌 项目 7 结构体_第2页
第2页 / 共21页
C语言项目实训教程 教学课件 ppt 作者  侯小毛 马凌 项目 7 结构体_第3页
第3页 / 共21页
C语言项目实训教程 教学课件 ppt 作者  侯小毛 马凌 项目 7 结构体_第4页
第4页 / 共21页
C语言项目实训教程 教学课件 ppt 作者  侯小毛 马凌 项目 7 结构体_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《C语言项目实训教程 教学课件 ppt 作者 侯小毛 马凌 项目 7 结构体》由会员分享,可在线阅读,更多相关《C语言项目实训教程 教学课件 ppt 作者 侯小毛 马凌 项目 7 结构体(21页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计 项目七 结构体,项目目标,任务分解,项目要求,完成简易的学生信息管理系统,包括:学生信息的输入、输出和排序等。,应用需求 什么是结构型,为了将不同类型的数据存放在一起。,是一种构造类型,是用户自定义的类型。与之类似的,int、float是系统定义的类型。,任务一 了解结构体,1结构体类型定义,struct 结构名 数据类型1 成员名1; 数据类型2 成员名2; 数据类型n 成员名n; ;,struct stu int num; char name20; char sex; float score; ;,stu s1; /*定义stu类型的变量s1*/ s1.num = 1001

2、; /*使用s1变量*/ s1.score = 95; /*使用s1变量*/,2结构类型变量的说明,stu s1; /*定义stu类型的变量s1*/ s1.num = 1001; /*使用s1变量*/ s1.score = 95; /*使用s1变量*/,struct stu /*定义学生信息结构类型*/ char num10; /*学号*/ char name20; /*姓名 */ char sex4; /*性别*/ int age ; /*年龄*/ int score; /*成绩*/ boy1,boy2, *p ,s4;,3结构体变量的初始化,(1)在结构体变量定义时对其进行初始化,例如,

3、struct stu /*定义学生信息结构类型*/ char num10; /*学号*/ char name20; /*姓名 */ char sex4; /*性别*/ int age ; /*年龄*/ int score; /*成绩*/ boy1=“01010101“, “李小明“, “男“,19,88, boy2, *p , s4= “01010101“, “李小明“, “男“,19,88, “01020202“, “王芳“, “女“,18,78, “02010303“, “刘灿“, “女“,19,95, “03010404“, “赵小涛“, “男“,19,68 ;,(2)将结构体变量定义与

4、初始化分开,例如, struct stu /*定义学生信息结构类型*/ char num10; /*学号*/ char name20; /*姓名 */ char sex4; /*性别*/ int age ; /*年龄*/ int score; /*成绩*/ boy1,boy2, *p ,s4; struct stu boy1=“01010101“, “李小明“, “男“,19,88; struct stu s4= “01010101“, “李小明“, “男“,19,88, “01020202“, “王芳“, “女“,18,78, “02010303“, “刘灿“, “女“,19,95, “03

5、010404“, “赵小涛“, “男“,19,68 ;,4结构体变量的存储,按结构体成员定义的先后顺序连续分配空间。使用该结构变量存储“成员”数据。,struct stu char num10; /*学号*/ char name20; /*姓名*/ char sex4; /*性别*/ int age ; /*年龄*/ int score; /*成绩*/ boy1,boy2;,任务二 结构体变量的引用,1引用结构变量成员的一般形式 printf(“%s“, boy1.num); scanf(“%s“,boy2.sex); s1.age=19;,结构体不能整体引用,只可以引用其“成员”。,2引用结

6、构体指针变量成员的形式 printf(“%s“, p1-num); scanf(“%s“,p1-sex); p1-age=19;,任务三 输入学生信息,第一步:定义结构体类型,请尝试按如下步骤,输入学生信息:,第二步:声明结构体类型变量或数组,第三步:初始化变量(或数组),第四步:将初始化更改为通过scanf函数输入学生信息,任务四 输出学生信息,为程序增加输出学生信息的代码,输出格式如下:,任务五 项目实现,设计并实现项目菜单,菜单效果如下:,根据用户选择,实现相应功能。,项目实现,项目六 项目扩展,1根据学生成绩进行排序,思考:学生成绩是学生信息的一个“成员”,根据成绩好坏对成绩进行排序,

7、要交换整个学生记录。如何实现呢?,解决方式:定义一个结构体类型的中间变量,以实现记录的整体交换,项目实现,2结构体嵌套,结构体成员又是一个结构体, 即形成了结构体的嵌套。,例如:学生信息登记表中,学生成绩由语文、数学、英语3门课程组成,显然成绩成员就是一个结构体类型的成员。,/*定义学生的成绩结构*/ struct scoretp int chinese; /*语文*/ int math; /*数学*/ int english; /*英语*/ ;,/*定义学生的成绩结构*/ struct scoretp int chinese; /*语文*/ int math; /*数学*/ int engl

8、ish; /*英语*/ ; /*定义学生信息结构类型*/ struct stu char num10; /*学号*/ char name20; /*姓名*/ char sex4; /*性别*/ int age ; /*年龄*/ struct scoretp score; /*成绩*/ s4;,struct stu s4= “01010101“, “李小明“, “男“,19,70,80,77, “01020202“, “王芳“, “女“,18,88,90,85, “02010303“, “刘灿“, “女“,19,67,87,90, “03010404“, “赵小涛“, “男“,19,89,98,

9、95 ;,main() int i; /*定义变量*/ printf(“学号 姓名 性别 年龄 语文 数学 英语:n“); for(i=0 ; i4 ; i+) printf(“%s t%s t%s t%d t%d t%d t%dn“,si.num,si.name, si.sex,si.age,si.score.chinese,si.score.math, si.score.english); getch(); ,应用需求 什么是联合体 联合体内存分配,为了将不同类型的数据存放在一起,但不同的成员占用相同的内存空间。,也叫共用体。是一种构造类型,是用户自定义的类型。与之类似的,int、floa

10、t是系统定义的类型。,3联合体,union stu char c; int i; float f; ;,内存单元1,内存单元2,内存单元3,内存单元4,成员C,成员i,成员f,应用需求 枚举类型定义,在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期只有七天,一年只有十二个月等。,4枚举型,enum 枚举类型名 枚举值表;,enum weekday Sun,Mon,Tue,Wed,Thu,Fri,Sat ;,枚举类型变量说明,定义时直接说明: enum weekday Sun,Mon,Tue,Wed,Thu,Fri,Sat a,b,c;,先定义后说明: enum weekday Sun,Mon,Tue,Wed,Thu,Fri,Sat ; enum weekday a,b,c;,思考,什么时候需要用到结构体、联合体和枚举类型? 结构体类型如何定义? 结构体类型变量如何声明和引用? 如何根据结构体成员的值,对结构体变量进行排序?,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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