结构体问题,自知有很多错误,求各位帮忙找一下
//定义10个学生的数据(包括学号、姓名、年龄、性别、语文成绩、数学成绩、英语成绩),要求://1.输出每个学生的三科平均成绩;
//2.分别输出单科最高分的学生的信息;
//3.依据数学单科成绩对学生进行排序,按从高到低的顺序输出学生信息;
//4.统计英语成绩超过90分的学生人数,分别输出其中的男生人数和女生人数。
#include <stdio.h>
#define N 10
struct student
{int num;
char name[20];
int age;
char sex;
float score[3];
float aver;
};
int main()
{void input(struct student stu[]);
struct student max1(struct student stu[]);
void print(struct student stu);
struct student max2(struct student stu[]);
struct student chao(struct student stu[]);
struct student stu[N],*p=stu;
input(p);
print(max1(p));
print(max2(p));
chao(p);
return 0;
}
void input(struct student stu[])//输入信息并求平均值
{int i;
printf("请输入各学生的信息:学号、姓名、年龄、性别、三门课成绩:\n");
for(i=0;i<N;i++)
{scanf("%d %s %d %s %f %f %f",&stu[i].num,stu[i].name,
&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
stu[i].aver=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3.0;
}
}
struct student max1(struct student stu[])//求三科成绩最高的人
{int i,j,t1,t2,t3,i1,i2,i3;
for(j=0;j<N;j++)
for(i=0;i<N-j;i++)
if(stu[i].score[0]>stu[i+1].score[0])
{t1=stu[i].score[0];stu[i].score[0]=stu[i+1].score[0];stu[i+1].score[0]=t1;}i=i1;
if(stu[i].score[1]>stu[i+1].score[1])
{t2=stu[i].score[1];stu[i].score[1]=stu[i+1].score[1];stu[i+1].score[1]=t2;}i=i2;
if(stu[i].score[2]>stu[i+1].score[2])
{t3=stu[i].score[2];stu[i].score[2]=stu[i+1].score[2];stu[i+1].score[2]=t3;}i=i3;
return stu[i1];stu[i2];stu[i3];
}
struct student max2(struct student stu[])//求数学并顺序输出
{int i,j,t,k;
for(j=0;j<N;j++)
for(i=0;i<N-j;i++)
if(stu[i].score[1]>stu[i].score[1])
{t=stu[i].score[1];stu[i].score[1]=stu[i+1].score[1];stu[i+1].score[1]=t;}
i=k;
for(k=0;k<N;k++)
return stu[k];
}
struct student chao(struct student stu[])
{int i,j,t;
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(stu[i].score[1]>stu[i+1].score[1])
{t=stu[i].score[2];stu[i].score[2]=stu[i+1].score[2];stu[i+1].score[2]=t;}
for(i=0;i<10;i++)
return stu[i];
}
void print(struct student stu)
{ printf("\n成绩最高的学生是:\n");
printf("学号:%d\n姓名:%s\n三门课成绩:%5.1f,%5.1f,%5.1f\n平均成绩:%6.2f\n",
stu.num,stu.name,stu.age,stu.sex,stu.score[0],stu.score[1],stu.score[2],stu.aver);
}