數(shù)組的元素也可以是結(jié)構(gòu)類型的。因此可以構(gòu)成結(jié)構(gòu)型數(shù)組。結(jié)構(gòu)數(shù)組的每一個元素都是具有相同結(jié)構(gòu)類型的下標結(jié)構(gòu)變量。在實際應用中,經(jīng)常用結(jié)構(gòu)數(shù)組來表示具有相同數(shù)據(jù)結(jié)構(gòu)的一個群體。如一個班的學生檔案,一個車間職工的工資表等。
【案例描述】
下面代碼的作用是:輸入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、預處理命令不是語句,不能以分號結(jié)尾
3、scanf函數(shù)中,必須給定變量的地址
【參考代碼】
#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);
}