一个结构体变量中可以存放一组具有内在联系的数据(如一个学生的学号、姓名、成绩等数据)。如果有10个学生的数据需要进行运算,显然要用到数组,这时就引入了结构体数组的概念。结构体数组与数值型数组的不同之处就在于每个数组元素都是一个结构体类型的数据,他都包括各个成员项。
说明:
(1)定义结构体数组的一般形式是
① struct 结构体名
{
成员表列
}数组名[数组长度];
②先声明一个结构体类型(如:struct Kabuda),然后再用此类型定义结构体数组;
如:struct Kabuda time[5];
(2)对结构体数组初始化的形式是定义在数组的后面加上“={初值表列};”
如:struct Kabuda time[5]={"shuaibin",0,1};
结构体数组应用举例
有n个学生的信息(包括学号、姓名、成绩)、要求按照成绩的高低顺序排列各学生的信息
#include<stdio.h>
struct Student
{
int num;
char name[20];
float score;
}; //声明结构体类型
int main()
{
struct Student stu[5]={
{ 0001,"hanaoyu",88.2},
{ 0002, "lvbofei", 98.5},
{ 003,"fengbin", 92.0},
{004,"wuguangyao",55.1},
{006,"chuchengwei",99.0}
}; //定会以结构体数组并初始化
struct Student temp; //定义结构体变量temp,用作临时交换变量
const int n=5; //定义常变量n
int i , j , k;
for(i=0 ; i<n-1 ; i++) //选择排序法
{
k=i;
for(j=i+1 ; j<n ; j++)
if(stu[j].score > stu[k].score)
k=j;
temp=stu[k];
stu[k]=stu[i];
stu[i]=temp;
}
return 0;
}