数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。在实际应用中,经常用结构数组来表示具有相同数据结构的一个群体。如一个班的学生档案,一个车间职工的工资表等。
【案例描述】
下面代码的作用是:输入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、预处理命令不是语句,不能以分号结尾
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);
}