第八章 结构体与共用体-1(结构体变量、结构体数组及数组做函数参数)
- 格式:ppt
- 大小:1.17 MB
- 文档页数:43
第8章结构体与共用体本节课主要内容结构体(结构structure)类型的定义结构体变量的引用和初始化结构体数组链表的概念及单链表的插入删除 8.1问题引入:思考一个问题在程序里表示<a name=baidusnap0></a>一个人</B>(姓名、年龄、性别、……),怎么表示?想表示多个人呢?如何用计算机程序实现下述表格的管理?数组的解决方法 int studentId[[]30];/* 最多可以管理30个学生, 每个学生的学号用数组的下标表示*/ char studentName[[]30][[]10]; char studentSex[[]30][[]2]; inttimeOfEnter[[]30]; /*入学时间用int表示*/ intscoreComputer[[]30];/*计算机原理课的成绩*/ intscoreEnglish[[]30]; /*英语课的成绩*/ int scoreMath[[]30];/*数学课的成绩*/ int scoreMusic[[]30]; /*音乐课的成绩*/ 数组的解决方法int studentId[[]30] = {1,2,3,4}; char studentName[[]30][[]10]={{"令狐冲"},{"林平之"}, {"岳灵珊"},{"任莹莹"}}; char studentSex[[]30][[]2]={{"男"},{"男"},{"女"},{"女"}}; int timeOfEnter[[]30] = {1999,1999,1999,1999}; int scoreComputer[[]30] = {90,78,89,78}; int scoreEnglish[[]30] ={83,92,72,95}; int scoreMath[[]30] = {72,88,98,87}; int scoreMusic[[]30] = {82,78,66,90}; 数组的解决方法数据的内存管理方式希望的内存分配图结构体的解决方法 struct STUDENT{int studentID; /*每个学生的序号*/ charstudentName[[]10];/*每个学生的姓名*/ char studentSex[[]4]; /*每个学生的性别*/ int timeOfEnter; /*每个学生的入学时间*/ int scoreComputer; /*每个学生的计算机原理成绩*/ intscoreEnglish; /*每个学生的英语成绩*/ int scoreMath; /*每个学生的数学成绩*/ int scoreMusic; /*每个学生的音乐成绩*/}; C语言提供了一种数据结构,可以把这些不同类型的数据组成一个整体,这就是结构体类型。
结构体与共用体笔记定义结构体C语言允许用户自己建立由不同类型数据组成的组合型的数据结构,它称为结构体(structre)。
在其他一些高级语言中称为“记录”.定义后的结构体类型和系统提供的标准类型(如int, char, float, double 等)具有相似的作用,都可以用来定义变量,只不过int等类型是系统已声明的,而结构体类型是由用户根据需要在程序中指定的。
定义一个结构体类型的一般形式为:struct 结构体名{ 成员表列};注意:1.结构体类型的名字是由一个关键字struct和结构体名组合而成的(例如struct Student) ,结构体名是由用户指定的,又称“结构体标记”,以区别于其他结构体类型。
上面的结构体声明中Student就是结构体名(结构体标记)。
2.花括号内是该结构体所包括的子项,称为结构体的成员。
“成员表列"(member list)也称为“域表”(field list),成员表列由若干个成员组成,每一个成员是结构体中的一个域。
对每个成员也必须作类型说明,其形式为:类型说明符成员名;成员名的命名应符合标识符的书写规定。
例如:struct stu{int num;char name[20];char sex;float score;};3.一个结构体的成员可以属于另一个结构体类型(嵌套)。
例如:struct Date //声明一个结构体类型struct Date{ int month;//月int day;//日int year;//年}struct Student//声明一个结构体类型struct Student{ int num;char name[20];char sex;int age;struct Date birthday;//成员birthday属于struct Date 类型char addr[30];};结构体类型变量1.定义结构体类型变量说明结构变量有以下三种方法。
实验8:结构体与共用体一、实验目的1.掌握结构体类型变量的定义和使用;2.掌握共用体的概念与使用。
二、实验内容编写程序,实现如下功能:1.定义结构体变量,用它表示考生的学号、姓名(用英文表示)以及语文、数学、外语成绩。
输入两个考生的信息和各门课成绩并比较(按总分进行高低排序;当总分相同时,依次按语、数、外的顺序排序)。
2.设有一个教师与学生通用的表格,数据项包括:姓名、年龄、职业和单位,其中“职业”一项可分为“教师”和“学生”两类;对“单位”一项,教师填入“系部名称”(用字符类型表示),学生填入“班级编号”(用整型量表示)。
编程输入人员数据,再以表格输出。
三、实验结果记录第1题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.总分不同2.总分相同的情况2.1总分完全相同2.2总分相同但语文成绩不同2.3总分相同、语文成绩相同但数学成绩不同第2题上机调试后的最终代码及上机调试结果(截图):程序代码运行结果1.正确输入2.错误输入四、实验小结:经过此次实验,我熟悉掌握了结构体的定义和使用,同时也掌握了共用体的使用。
对于程序1,基本思路是通过结构体定义变量,采用if-else语句嵌套,当总分相同且语文数学成绩均相同时就不必再进行一轮的if语句判断,因为此时两考生的英语成绩一定相同。
对于程序2,在结构体中定义了共用体,可对不同职业进行不同单位的划分。
基本思路是用malloc函数进行动态内存分配,确定要输入的样本数量,再进行数据的输入,在单位数据的输入时需要判断输入对象是学生还是老师,此时要用strcmp函数进行比较判断,输入结束后打印表格,用转义字符\t让表格更加美观,最后通过free进行内存释放。