void orderbytotal(struct node* phead) {
struct node* pfind1 = phead;
struct node* pfind2 = phead;
float max;
struct node* p = NULL;
struct student replace;
while (pfind1 != NULL) {
p = pfind1;
max = pfind1->data.total;
for (pfind2 = pfind1->pnext; pfind2!= NULL; pfind2 = pfind2->pnext) {
if (max < pfind2->data.total)//寻找最高分
max = pfind2->data.total;
p = pfind2;
}
p->data.total = pfind1->data.total;//交换总分
pfind1->data.total = max;
replace.num = p->data.num;//交换学号
p->data.num = pfind1->data.num;
pfind1->data.num = replace.num;
strcpy_s(replace.name, strlen(p->data.name)+ 1, p->data.name);//交换姓名
strcpy_s(p->data.name, strlen(pfind1->data.name) + 1, pfind1->data.name);
strcpy_s(pfind1->data.name, strlen(replace.name) + 1, replace.name);
replace.Math = p->data.Math;//交换数学
p->data.Math = pfind1->data.Math;
pfind1->data.Math = replace.Math;
replace.English = p->data.English;//交换英语
p->data.English = pfind1->data.English;
pfind1->data.English = replace.English;
replace.Profession = p->data.Profession;//交换专业课
p->data.Profession = pfind1->data.Profession;
pfind1->data.Profession = replace.Profession;
replace.ave = p->data.ave;//交换平均分
p->data.ave = pfind1->data.ave;
pfind1->data.ave = replace.ave;
pfind1 = pfind1->pnext;
}
printf("排序完成\n");
printfStuInfo(phead);
}