#include<stdio.h>
#include <string.h>
struct students
{
char name[16];
unsigned char age;
unsigned char score;
char classes[20];
};
//定义交换两个结构体成员的函数
void swap(struct students *a,struct students *b)
{
struct students c=*a;
*a=*b;
*b=c;
}
int main()
{
struct students st[5]={{"wang",20,50,"java"},{"han",30,30,"c++"},{"zhang",40,90,"c"},{"huang",40,90,"php"},{"liu",34,30,"c++"}};
//冒泡排序
int i;
int j;
for(i=0;i<5;i++)
{
for(j=1;j<5-i;j++)
{
if(st[j].age<st[j-1].age)//按照年龄从下到大排序
swap(&st[j],&st[j-1]);
else if(st[j].age==st[j-1].age)//如果年龄相同,按照分数从小到大排序
if(st[j].score<st[j-1].score)
swap(&st[j],&st[j-1]);
else if(st[j].score==st[j-1].score)
if (strcmp(st[j].classes,st[j-1].classes))//如果分数和年龄相同,按照班级来排序
swap(&st[j],&st[j-1]);
}
}
//输出结构体
int k;
for(k=0;k<5;k++)
printf("name=%s,age=%d,score=%d,class=%s\n",st[k].name,st[k].age,st[k].score,st[k].classes);
return 0;
}