#include#includetypedef struct student_infor{int studentID;float chinese;float English;float math;float P_avarage;float sum; struct student_infor*next;}student;
student*input(int n)
{int i;student*p,*stu=NULL;
for(i=0;istudentID,&p->chinese,&p->math,&p->English);
p->sum=(p->chinese)+(p->math)+(p->English);
p->P_avarage=(p->chinese)*0.3+(p->math)*0.5+(p->English)*0.2;
p->next=stu;
stu=p;}
return stu;}
student*output(student*p)
{ printf("学生学号:%d",p->studentID);
printf("语文成绩:%.1f",p->chinese);
printf("数学成绩:%.1f",p->math);
printf("英语成绩:%.1f",p->English);
printf("总分:%.1f",p->sum);
printf("加权平均分:%.1f\n",p->P_avarage);
}
void visit(student*stu,void(*fun)())
{ student*p;
for(p=stu;p!=NULL;p=p->next)
{(*fun)(p);}}
student*order_ID(student*p)
{ student*t,*s=NULL;
for(t=p;t!=NULL;t=t->next)
{
while((t->studentID)>(t->next->studentID))
{ s=t;
t=t->next;
t->next=s;}}
return p;}
int main()
{student*stu;
int n;
printf("请输入需要录入的学生人数(>0):\n");
scanf("%d",&n);
stu=input(n);
stu=order_ID(stu);
visit(stu,output);
return 0;
}
哦这是我复制粘贴的时候漏了#include
#include