915结构体数组 2结构体数组的初始化 结构体数组的一个元素相当于一个结构体变量,结 构体数组初始化即顺序对数组元素初始化。如: struct stu int numa char *namei char sex float score: boy[s]=t 101," Li ping""M",45} 1102 Zhang ping""M62.] 103" He fang""P"925}, 1104,Cheng ling""F,873 [105, "Wang ming""M",583
2.结构体数组的初始化 结构体数组的一个元素相当于一个结构体变量,结 构体数组初始化即顺序对数组元素初始化。如: struct stu { int num; char *name; char sex; float score; }boy[5]={ {101,"Li ping","M",45}, {102,"Zhang ping","M",62.5}, {103,"He fang","F",92.5}, {104,"Cheng ling","F",87}, {105,"Wang ming","M",58}; } 9.1.5 结构体数组
3结构体数组的引用 (1)除初始化外,对结构体数组赋常数值、输入 和输出、各种运算均是对结构体数组元素的成员 (相当于普通变量)进行的。结构体数组元素的 成员表示为: 结构体数组名[下标]成员名 在嵌套的情况下为: 结构体数组名[下标结构体成员名…结构体成 员名成员名
3.结构体数组的引用 (1) 除初始化外,对结构体数组赋常数值、输入 和输出、各种运算均是对结构体数组元素的成员 (相当于普通变量)进行的。结构体数组元素的 成员表示为: 结构体数组名[下标].成员名 在嵌套的情况下为: 结构体数组名[下标]·结构体成员名·…·结构体成 员名·成员名
(2)结构体数组元素可和互赋值 例如: student1]= student[2]; 对于结构体数组元素内嵌的结构体类型成员,情况 也相同。如: student(2.birthday=student 1birthday; (3)其他注意事项也与结构体变量的引用相同,例如: 不允许对结构体数组元素或结构体数组元素内嵌的结 构体类型成员整体赋(常数)值;不允许对结构体数 组元素或结构体数组元素内嵌的结构体类型成员整体 进行输入输出等
(2) 结构体数组元素可相互赋值 例如:student[1]=student[2]; 对于结构体数组元素内嵌的结构体类型成员,情况 也相同。如: student[2].birthday=student[1].birthday; (3) 其他注意事项也与结构体变量的引用相同,例如: 不允许对结构体数组元素或结构体数组元素内嵌的结 构体类型成员整体赋(常数)值;不允许对结构体数 组元素或结构体数组元素内嵌的结构体类型成员整体 进行输入输出等
在处理结构体问题时经常涉及字符或字符串的输入, 这时要注意: ① scant(函数用%s输入字符串遇空格即结束,因 此输入带空格的字符串可改用gets函数 ②在输入字符类型数据时往往得到的是空白符(空 格、回车等),甚至运行终止,因此常作相应处理 ,即在适当的地方增加 getchar(;空输入语句,以 消除缓冲区中的空白符
在处理结构体问题时经常涉及字符或字符串的输入, 这时要注意: ①scanf()函数用%s输入字符串遇空格即结束,因 此输入带空格的字符串可改用gets函数。 ②在输入字符类型数据时往往得到的是空白符(空 格、回车等),甚至运行终止,因此常作相应处理 ,即在适当的地方增加getchar();空输入语句,以 消除缓冲区中的空白符
【例11-3】计算学生的平均成绩和不及格的人数。 #include <stdio. h> void maino struct stu int i, c =0 Int num float ave s=0: char name for(i=0;i<5;i++) char sex; float score, S=boy iscore; Jboy 5=t if(boyi score<60)c+=l; {101," Li ping","M,45}, 102," Zhang ping","M',62.5}, printf("s=%fn" S); {103," He fang","F",92.5}, ave=S/5; 1104,Cheng ling",F, 87, printf"average=%ofncount=%od\n"ave, c); {105," Wang ming","M',58} a·E:学习程序飞 Ctest\Dbag-…-回 345. 000000 verage- ount=2 ress any key to continue
【例11-3】计算学生的平均成绩和不及格的人数。 #include <stdio.h> struct stu { int num; char *name; char sex; float score; }boy[5]={ {101,"Li ping",'M',45}, {102,"Zhang ping",'M',62.5}, {103,"He fang",'F',92.5}, {104,"Cheng ling",'F',87}, {105,"Wang ming",'M',58}, }; void main() { int i,c=0; float ave,s=0; for(i=0;i<5;i++) { s+=boy[i].score; if(boy[i].score<60) c+=1; } printf("s=%f\n",s); ave=s/5; printf("average=%f\ncount=%d\n",ave,c); }