數組的元素也可以是結構類型的。因此可以構成結構型數組。結構數組的每一個元素都是具有相同結構類型的下標結構變量。在實際應用中,經常用結構數組來表示具有相同數據結構的一個群體。如一個班的學生檔案,一個車間職工的工資表等。
【案例描述】
下面代碼的作用是:輸入N人的學號、姓名和成績,按成績升序輸出。請改正其中的錯誤。
#include<stdio.h>;
#define N 10;
typedef struct{int sid,score;char name[10]}STUD;
main()
{ stud st[N],p;
int i,j;
for(i=0;i<N;i++)
scanf("%d%s%d",st[i].sid,st[i].name,st[i].score);
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(st[i].score>st[j].score)
{ p=st[i];st[i]=st[j];st[j]=p;}
for(i=0;i<N;i++)
printf("%2d:%d,%s,%d\n",i+1,st[i].sid,st[i].name,st[i].score);
}
【案例分析】
1、預處理命令不是語句,不能以分號結尾
2、C語言是區分大小的
3、scanf函數中,必須給定變量的地址
【參考代碼】
#include<stdio.h>
#define N 4
typedef struct{int sid,score;char name[10];}STUD;
main()
{ STUD st[N],p;
int i,j;
for(i=0;i<N;i++)
scanf("%d%s%d",&st[i].sid,st[i].name,&st[i].score);
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(st[i].score>st[j].score)
{ p=st[i];st[i]=st[j];st[j]=p;}
for(i=0;i<N;i++)
printf("%2d:%d,%s,%d\n",i+1,st[i].sid,st[i].name,st[i].score);
}