結構數組
數組的元素也可以是結構類型的。 因此可以構成結構型數組。結構數組的每一個元素都是具有相同結構類型的下標結構變量。 在實際應用中,經常用結構數組來表示具有相同數據結構的一個群體。如一個班的學生檔案,一個車間職工的工資表等。
結構數組的定義方法和結構變量相似,只需說明它為數組類型即可。例如:
struct stu { int num; char *name; char sex; float score; }boy[5];
定義了一個結構數組boy1,共有5個元素,boy[0]~boy[4]。每個數組元素都具有struct stu的結構形式。 對外部結構數組或靜態結構數組可以作初始化賦值,例如:
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}; }
當對全部元素作初始化賦值時,也可不給出數組長度。
[例7.4]計算學生的平均成績和不及格的人數。
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++)>5;i++)> { s+=boy[i].score; if(boy[i].score<60) c+="1;">60)> } 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, 循環完畢后計算平均成績,并輸出全班總分,平均分及不及格人數。
[例7.5]建立同學通訊錄
#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 { 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 printf("%s\t\t\t%s\n",man[i].name,man[i].phone); }
本程序中定義了一個結構mem,它有兩個成員name和phone 用來表示姓名和電話號碼。在主函數中定義man為具有mem 類型的結構數組。在for語句中,用gets函數分別輸入各個元素中兩個成員的值。然后又在for語句中用printf語句輸出各元素中兩個成員值。 [1] [2] 下一頁
|