各位前辈,遇到一个结构体数组的问题,小弟非常菜鸟。
按照书上的例子和自己的理解写有如下代码。编译时出错。
希望高手帮忙排错。
#include <string.h>
struct school
{
int ID;
char name[10];
float grade;
};
struct school sch1[22];
main()
{
int i=0,j=0,m=0;
//学生的档案输入及判断学号是否重复
while (sch1[i].id != 0 && i< 23) //学生的学号等于0,作为输入结束的标志。
{
scanf ("%d%s%f",&sch1[i].id,&sch1[i].name,&sch1[i].grade);
j=i;
if i>0
{
for (;j>0;j--)
{
if (sch1[i].id=sch1[j].id)
{
printf("%s","输入的学号重复,请重新输入!");
i--;
j=0;
continue;
}
}
}
i++;
}
//学生档案及排序
j=0;
while (j<i)
{
m=j+1;
while (m<i)
{
if(sch1[j].grade < sch1[m].grade)
{
sch1[i].id=sch1[j].id;
sch1[i].name=sch1[j].name;
sch1[i].grade=sch1[j].grade;
sch1[j].id=sch1[m].id;
sch1[j].name=sch1[m].name;
sch1[j].grade=sch1[m].grade;
sch1[m].id=sch1[i].id;
sch1[m].name=sch1[i].name;
sch1[m].grade=sch1[i].grade;
}
m++;
}
j++;
}
for (j=0;j<i;j++)
{
printf("%d%s%f",sch1[j].id,sch1[j].name,sch1[j].grade);
}
}
1.定义一个用于描述学生信息的结构类型,其中包括三个成员,分别用于描述学号、姓名和成绩。
2.定义一个数组,数组的数据类型就是上面定义的结构类型。数组至少可以存放10个数据项。
3.从键盘输入若干个学生信息,存储到上面定义的数组中。
4.按课程成绩从小到大的顺序排列数组元素,然后依次输出每个数据元素。即给学生按成绩排名次。

