清华大学出版社 TSINGHUA UNIVERSITY PRESS 当然,数组的初始化也可以用以下形式: struct student int num: struct student stu =,.,: 即先声明结构体类型,然后定义数组为该结构体类 型,在定义数组时初始化。从以上可以看到,结 构体数组初始化的一般形式是在定义数组的后面 加上:={初值表列};
当然,数组的初始化也可以用以下形式: struct student {int num; … }; struct student stu[ ]={{…},{…},{…}}; 即先声明结构体类型,然后定义数组为该结构体类 型,在定义数组时初始化。从以上可以看到,结 构体数组初始化的一般形式是在定义数组的后面 加上:={初值表列};
清华大学出版社 TSINGHUA UNIVERSITY PRESS 1.53结构体数组应用举例 下面举一个简单的例子来说明结构体数组的定义和 引用。 例11.2对候选人得票的统计程序。设有3个候选人, 每次输入一个得票的候选人的名字,要求最后输 出各人得票结果。 程序如下: #include <string.h> struct person &char name 201: int count:
11.5.3 结构体数组应用举例 下面举一个简单的例子来说明结构体数组的定义和 引用。 例11.2对候选人得票的统计程序。设有3个候选人, 每次输入一个得票的候选人的名字,要求最后输 出各人得票结果。 程序如下: #include <string.h> struct person {char name[20]; int count; }
清华大学出版社 TSINGHUA UNIVERSITY PRESS leader=li",0, Zhang,,0,"Fun", 0 main fint i, char leader-name 201: for(i=1;i<=10;i++) iscanf(%os", leader-name) for(=0;j3;j++) if(strcmpdleader-name, leaderljj name==0) leader. count++ pl rin n
leader[3]={"Li",0,"Zhang",0,"Fun",0}; main() {int i,j; char leader-name[20]; for (i=1;i<=10;i++) {scanf("%s",leader-name); for(j=0;j<3;j++) if(strcmp(leader-name,leader[j].name)==0) leader[j].count++: } printf("\n");
清华大学出版社 TSINGHUA UNIVERSITY PRESS for(i=0;i<3;i++) printf(%05s:odin", leaderi.name leader. count 运行情况如下: Fun Zhang Zhang Fun
for(i=0;i<3;i++) printf("%5s:%d\n",leader[i].name, leader[i].count); } 运行情况如下: Li Li Fun Zhang Zhang Fun
清华大学出版社 TSINGHUA UNIVERSITY PRESS Fun Zhang Zhang. 3 Fun.3 程序定义一个全局的结构体数组 eader,它有3个元 素,每一元素包含两个成员mame(姓名)和coun(票 数)。在定义数组时使之初始化,使3位候选人的 票数都先置零。见图11.6
Li Fun Zhang Li Li∶4 Zhang∶3 Fun∶3 程序定义一个全局的结构体数组leader,它有3个元 素,每一元素包含两个成员name(姓名)和count(票 数)。在定义数组时使之初始化,使3位候选人的 票数都先置零。见图11.6