目录
一、结构体数组的定义
二、结构体数组的初始化
一、结构体数组的定义
一个结构体变量只能表示学生成绩管理表中的一个学生的记录信息,代表其中的一个实例,而实际数据库中有多个学生的记录,每个记录对应一个学生的信息,如何表示这么多具有相同结构体的学生记录呢?显然,相对于定义多个结构体变量而言,定义一个结构体数组是最简单的方法。
二、结构体数组的初始化
也可以在定义结构体数组的同时对其进行初始化。
例题:利用结构体数组计算每个学生的4门课程的平均分。
程序如下,之前的程序差不多,增加了一个计算平均分的功能,主要突出显示数组在结构体的示例。
#include <stdio.h>
typedef struct date
{
int year;
int month;
int day;
}DATE;
typedef struct student
{
long studentID;
char studentName[10];
char studentSex;
DATE birthday;
int score[4];
}STUDENT;
int main(void)
{
int i,j;
float sum[30];
STUDENT stu[30] = {{100310121,"王刚",'M',{1991,5,19},{72,83,90,82}},
{100310122,"李小明",'M',{1992,8,20},{88,92,78,78}},
{100310123,"王洪礼",'F',{1991,9,19},{98,72,89,66}},
{100310124,"程莉莉",'F',{1992,3,22},{87,95,78,90}}
};
for(i=0;i<4;i++)
{
sum[i]=0;
for(j=0;j<4;j++)
{
sum[i]+=stu[i].score[j];
}
printf("%10ld%8s%3c%6d/ %02d/ %02d%4d%4d%4d%4d%6.1lf\n",stu[i].studentID,
stu[i].studentName,
stu[i].studentSex,
stu[i].birthday.year,
stu[i].birthday.month,
stu[i].birthday.day,
stu[i].score[0],
stu[i].score[1],
stu[i].score[2],
stu[i].score[3],
sum[i]/4.0);
}
return 0;
}