在C语言中,具有相同数据类型的数据可以组成数组,指向相同类型的指针可以组成指针数组。根据这个原则,具有相同结构变量的结构也可以组成数组,这个数组称为结构数组。结构数组中的每一个元素都是结构变量。
结构数组的说明形式如下:
<存储类型> struct 结构名 结构数组名[元素个数] = {初值表};
Example:
struct Example strarr[3];
说明了结构数组 strarr[],有三个元素 strarr[0],strarr[1],strarr[2],它们都是具有Example 结构的结构变量。
与普通数组一样,在定义结构数组的同时可以初始化元素值。
1)在对结构数组初始化时,方括号[]中的元素个数可以缺省。
2)结构数组也具有数组的属性,结构数组名是结构数组的首地址。
结构数组的使用范例
结构数组应用范例
选举后对候选人的得票数进行统计。设有4个候选人,n个人参加选举,每次输入一个得票的候选人的名字,要求最后输出个人的得票结果。
结构数组的说明形式如下:
<存储类型> struct 结构名 结构数组名[元素个数] = {初值表};
Example:
struct Example strarr[3];
说明了结构数组 strarr[],有三个元素 strarr[0],strarr[1],strarr[2],它们都是具有Example 结构的结构变量。
与普通数组一样,在定义结构数组的同时可以初始化元素值。
1)在对结构数组初始化时,方括号[]中的元素个数可以缺省。
2)结构数组也具有数组的属性,结构数组名是结构数组的首地址。
结构数组的使用范例
#include <stdio.h>
struct Data
{
char name[20];
short age;
char adr[30];
long tel;
};
int main(void)
{
struct Data strarr[3] = {
{"王伟",20,"东八舍416室",7788565},
{"李明",19,"东八舍415室",8856548},
{"张军",20,"东八舍417室",4458778}
};
int i = 0;
printf("姓名\t年龄\t住址\t\t电话\n");
for(i = 0;i<3;i++)
{
printf("%s\t%d\t%s\t%ld\n",strarr[i].name,strarr[i].age,strarr[i].adr,strarr[i].tel);
}
return 0;
}
结构数组应用范例
选举后对候选人的得票数进行统计。设有4个候选人,n个人参加选举,每次输入一个得票的候选人的名字,要求最后输出个人的得票结果。
#include <stdio.h>
#include <string.h>
struct person //定义候选人结构体
{
char name[20]; //候选人名字
int count; //统计票数
};
int main(void)
{
struct person leader[4] = { //定义候选人结构体数组,并初始化成员
{"wj",0},
{"lz",0},
{"lc",0},
{"zy",0}
};
int loop_var = 0; //循环变量
int loop_leader = 0; //循环变量
int xj_loop; //参予投票的人数变量
char name[20]; //取输入候选人名字
printf("请输入投票人数:"); //输入信息提示
scanf("%d",&xj_loop); //取得投票人数
printf("\n请输入侯选人名字:\n"); //输入信息提示
for( loop_var = 0;loop_var <= xj_loop; loop_var++) //循环次数由投票人数xj_loop决定
{
gets(name); //取得候选人名
for(loop_leader = 0;loop_leader< 4;loop_leader++) //在结构数组中循环检测输入的候选人名
{
if(strcmp(name,leader[loop_leader].name) == 0) //进行名字匹配
{
leader[loop_leader].count ++; //匹配,则进行票数累计,并break,进行下次输入
break;
}
}
}
printf("\n");
for (loop_var = 0;loop_var<4;loop_var++) //循环输出各候选人所得票数
{
printf("候选人%s:得票:%d\n",leader[loop_var].name,leader[loop_var].count);
}
return 0;
}