学生成绩单制作,还有一个错误,谁帮我改改。。
学生成绩单制作1)定义一个结构体数据,存放10个学生的学号、姓名、三门课程的成绩;
2)从键盘输入10个学生的以上内容;
3)输出单门课程成绩最高的学生的学号、姓名以及该门课程的成绩;
4)输出三门课程的平均分数最高的学生的学号、姓名及其平均分;
5)将10个学生按照平均分数从高到底进行排序,输出结果,格式如下所示:
number name math Chinese English average
103 tom 90 90 100 95
101 alice 90 80 70 80
#include <stdio.h>
#define N 3 //三门课
struct Student
{
int number; //学号
char name[20]; //姓名
float math; //三门课
float chinese;
float English;
float average; //平均分
};
int main()
{
int i,n,k;
float t;
void input(struct Student stu[]);
struct Student max(struct Student stu[]);
void print(struct Student stu);
struct Student stu[N],*p=stu;
input(p);
print(max(p));
for(i=0;i<9;i++)
if(stu[i].math>stu[i+1].math)
{t=stu[i].math;stu[i].math=stu[i+1].math;stu[i+1].math=t;}
for(n=0;n<9;n++)
if(stu[n].chinese>stu[n+1].chinese)
{t=stu[n].chinese;stu[n].chinese=stu[n+1].chinese;stu[n+1].chinese=t;}
for(k=0;k<9;k++)
if(stu[k].English>stu[k+1].English)
{t=stu[k].English;stu[k].English=stu[k+1].English;stu[k+1].English=t;}
printf("\n单门课成绩最高的学生是:\n");
printf("%d%s%6.2f",stu[i].number,stu[i].name,stu[i].math,stu[n].chinese,stu[k].English);
void sort(struct student stu[]);
sort(stu);
printf("平均分由高到低排序:");
for(i=0;i<N;i++)
printf("number:%d\n name:%s\n math:%f\n chinese:%f\n English:%f\n average :%6.2f\n",
stu [i].number,stu [i].name,stu [i].math,stu [i].chinese,stu [i].English ,stu[i].average);
printf("\n");
return 0;
}
void input(struct Student stu[])
{int i;
printf("输入十个学生的信息:number、name、match、Chinese、English、average:\n");
for(i=0;i<10;i++)
{scanf("%d %s %f %f %f",&stu[i].number,&stu[i].name,
&stu[i].math,&stu[i].chinese,&stu[i].English);
stu[i].average=(stu[i].math+stu[i].chinese+stu[i].English)/3.0f;
}
}
struct Student max(struct Student stu[])
{int i,m=0;
for(i=0;i<N;i++)
if(stu[i].average>stu[m].average) m=i;
return stu[m];
}
void print(struct Student stu)
{
printf("\n平均成绩最高的学生是:\n");
printf("number:%d\nname:%s\naverage:%6.2f\n",stu.number,stu.name,stu.average);
}
struct Student max_score(struct Student stu[])
{
int i,n,k;
float t;
for(i=0;i<9;i++)
if(stu[i].math>stu[i+1].math)
{t=stu[i].math;stu[i].math=stu[i+1].math;stu[i+1].math=t;}
for(n=0;n<9;n++)
if(stu[n].chinese>stu[n+1].chinese)
{t=stu[n].chinese;stu[n].chinese=stu[n+1].chinese;stu[n+1].chinese=t;}
for(k=0;k<9;k++)
if(stu[k].English>stu[k+1].English)
{t=stu[k].English;stu[k].English=stu[k+1].English;stu[k+1].English=t;}
printf("\n单门课成绩最高的学生是:\n");
printf("%d%s%6.2f",stu[i].number,stu[i].name,stu[i].math,stu[n].chinese,stu[k].English);
}
void sort(struct Student stu[])
{
struct Student temp;
int i,j,k;
for(i=0;i<N-1;i++)
{
k=i;
for(j=i+1;j<N;j++)
if(stu[j].average>stu[k].average)
k=j;
temp=stu[k];stu[k]=stu[i];stu[i]=temp;
}
}