//求学生三门成绩的平均成绩
struct student{
int id;
char *name;
float score[3];
float avg;
};
struct student stu[5];
int i=0,j=0;
printf("请输入学生的信息!\n学号\t姓名\t成绩1\t成绩2\t成绩3\n");
for(i=0;i<3;++i)
{
stu[i].name=(char *)malloc(sizeof(char));//开辟一个合法的存放数据的空间
printf("请输入第%d个学生的姓名\n",i+1);
stu[i].id=i+1;
scanf(" %s",stu[i].name);
for(j=0;j<3;++j)
{
printf("请输入第%d个学生的第%d门成绩\n",i+1,j+1);
scanf(" %f",&stu[i].score[j]);
stu[i].avg+=stu[i].score[j];
}
stu[i].avg=stu[i].avg/3.0;
}
for(i=0;i<3;++i)
{
printf("%s学号为%d的平均成绩是%3.1f\n",stu[i].name,stu[i].id,stu[i].avg);
}
本结构体相当于二级指针,需要动态开辟空间,函数结束时释放空间