第8章结构体、共用体与枚举类型
本章要求
理解结构体类型的概念,掌握结构体变量的定义和使用
掌握结构体数组、结构体指针的定义和使用
理解共用体的概念,掌握共用体变量的定义和使用
了解枚举数据类型及自定义数据类型的使用
领会自定义数据类型标识符的意义
理解链表的概念,初步掌握动态链表的常见操作
本章重点
结构体变量的定义和使用
链表的概念
本章难点
动态链表的常见操作
第8章结构体、共用体与枚举类型
结构体类型与结构体变量
结构体数组
结构体与函数
共用体
枚举类型
自定义类型标识符
动态数据结构——链表
结构体类型与结构体变量
结构体概述
例8-1 通过建立表8-1的学生的信息表,要求从键盘输入学生的信息,并将学生成绩小于平均成绩的学生信息输出。
学号
姓名
性别
年龄
成绩
1001
Zhang
M
19
88
1002
Li
M
18
90
1003
Wang
F
20
89
1004
Zhao
M
19
83
结构体类型与结构体变量
#include <>
#define N 4
void main()
{ int num[N]; /* 存放各学生的学号*/
char name[N][10]; /* 存放各学生的姓名*/
char sex[N]; /* 存放各学生的性别*/
int age[N]; /* 存放各学生的年龄*/
float score[N]; /* 存放各学生的成绩*/
int i;
float sum=0,aver; /* 表示总成绩和平均成绩*/
for(i=0;i<N;i++)
{ scanf("%d %s %c %d %f",&num[i],name[i],&sex[i],&age[i],&score[i]);
sum+=score[i];
}
aver=sum/N;
printf("\n");
结构体类型与结构体变量
for(i=0;i<N;i++)
if (score[i]<aver)
printf("%d %s %c %d %f\n",num[i],name[i],sex[i],age[i],
score[i]);
}
由于程序num、name、sex、age、score分别定义为互相独立的数组,难以反映它们之间的内在联系。
结构体类型与结构体变量
#include <>
#define N 4
struct student /* 定义学生类型结构体*/
{ int num; /* 学号成员*/
char name[20]; /* 姓名成员*/
char sex; /* 性别成员*/
int age; /* 年龄成员*/
float score; /* 成绩成员*/
};
void main()
{ struct student stu[N]; /* 定义学生结构体类型数组*/
int i;
float sum=0,aver; /* 表示总成绩和平均成绩*/
结构体类型与结构体变量
for(i=0;i<N;i++)
{scanf("% d% s% c%d %f",&stu[i].num,stu[i].name,&stu[i].sex,
&stu[i].age,&stu[i].score);
sum+=stu[i].score;
}
aver=sum/N;
printf("\n");
for(i=0;i<N;i++)
if (stu[i].score<aver)
printf("%d %s %c %d %f\n",stu[i].num,stu[i].name,stu[i].sex,
stu[i].age,stu[i].score);
}
结构体类型与结构体变量
说明:
使用结构体数据,可将一个学生的数据有机组合起来,例中的stu是个结构体数组,stu[i]表第i个学生的数组,stu[i].num表第i个学生的学号,stu[i].name表第i个学生的姓名等。
结构体的每一个成员都是通过其名字来引用,引用形式如下:
结构体变量名. 成员名
结构体的引入为处理复杂的数据结构提供了有力的手段(如链表等),也为函数间传递一组不同类型的数据提供了方便。特别是对于数据结构比较复杂的大型程序提供了方便。
结构体类型与结构体变量
结构体的声明
定义结构体类型的一般形式:
struct 结构体名
{
结构成员1;
结构成员2;
……
结构成员n;
}
其中,struct为结构体定义的关键字,不能省略。结
第8章 结构体、共用体与枚举类型 来自淘豆网m.daumloan.com转载请标明出处.