char sex float score }boy[5]={ 102, M",62.5}, 103," He fang","F",92.5} (104, Cheng ling", F, 87 (105, Wang ming" M", 581 当对全部元素作初始化赋值时,也可不给出数组长度。 【例11.3】计算学生的平均成绩和不及格的人数。 char name ar sex }boy[5]={ 102," Zhang ping","'M',62.5} 103," He fang",F',92.5}, [104, Cheng ling", 'F, 87 [105, Wang ming, 'M, 581 no float ave s=0 for(i=0;i<5;i++) +=boy li.score if(boy []. score<60)c+=l printf("s=%f\n", s) printf("average=%f\ncount=%d\n", ave, c) 本例程序中定义了一个外部结构数组boy,共5个元素,并作了初始化赋值。在main函 数中用for语句逐个累加各元素的 score成员值存于s之中,如 score的值小于60(不及格) 即计数器C加1,循环完毕后计算平均成绩,并输出全班总分,平均分及不及格人数
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}; } 当对全部元素作初始化赋值时,也可不给出数组长度。 【例 11.3】计算学生的平均成绩和不及格的人数。 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}, }; 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); } 本例程序中定义了一个外部结构数组 boy,共 5 个元素,并作了初始化赋值。在 main 函 数中用 for 语句逐个累加各元素的 score 成员值存于 s 之中,如 score 的值小于 60(不及格) 即计数器 C 加 1,循环完毕后计算平均成绩,并输出全班总分,平均分及不及格人数
【例11.4】建立同学通讯录 #include stdio. h #define num 3 struct mem char name [20] char phone [10] struct mem man [NUM] for (i=0: i<NUM; i++) printf( input name: \n") gets(man [i]. name) printf( input phone: \n") gets(man[i]. phone printf("name\t\t\phone \n\n") for(i=0: i printf(%s\t\t\t%s\n", man [i] name, man[i]. phone 本程序中定义了一个结构mem,它有两个成员name和 phone用来表示姓名和电话号码 在主函数中定义man为具有mem类型的结构数组。在for语句中,用gets函数分别输入各 个元素中两个成员的值。然后又在for语句中用 printf语句输出各元素中两个成员值 117结构指针变量的说明和使用 1171指向结构变量的指针 个指针变量当用来指向一个结构变量时,称之为结构指针变量。结构指针变量中的值 是所指向的结构变量的首地址。通过结构指针即可访问该结构变量,这与数组指针和函数指 针的情况是相同的 结构指针变量说明的一般形式为: struc t结构名*结构指针变量名 例如,在前面的例题中定义了stu这个结构,如要说明一个指向stu的指针变量ps 可写为 struct stu *pstu 当然也可在定义stu结构时同时说明pstu。与前面讨论的各类指针变量相同,结构指针 变量也必须要先赋值后才能使用
【例 11.4】建立同学通讯录 #include"stdio.h" #define NUM 3 struct mem { char name[20]; char phone[10]; }; main() { struct mem man[NUM]; int i; for(i=0;i<NUM;i++) { printf("input name:\n"); gets(man[i].name); printf("input phone:\n"); gets(man[i].phone); } printf("name\t\t\tphone\n\n"); for(i=0;i<NUM;i++) printf("%s\t\t\t%s\n",man[i].name,man[i].phone); } 本程序中定义了一个结构 mem,它有两个成员 name 和 phone 用来表示姓名和电话号码。 在主函数中定义 man 为具有 mem 类型的结构数组。在 for 语句中,用 gets 函数分别输入各 个元素中两个成员的值。然后又在 for 语句中用 printf 语句输出各元素中两个成员值。 11.7 结构指针变量的说明和使用 11.7.1 指向结构变量的指针 一个指针变量当用来指向一个结构变量时,称之为结构指针变量。结构指针变量中的值 是所指向的结构变量的首地址。通过结构指针即可访问该结构变量,这与数组指针和函数指 针的情况是相同的。 结构指针变量说明的一般形式为: struct 结构名 *结构指针变量名 例如,在前面的例题中定义了 stu 这个结构,如要说明一个指向 stu 的指针变量 pstu, 可写为: struct stu *pstu; 当然也可在定义 stu 结构时同时说明 pstu。与前面讨论的各类指针变量相同,结构指针 变量也必须要先赋值后才能使用