#include<stdio.h>
#include<string.h>
#define N 3
struct student
{
int id;
char name[10];
int age;
}; //学生结构体
int cmpbyid(struct student *s1,struct student *s2)
{
if(s1->id>s2->id) return 1; //判断学号大小
else return 0;
}
int cmpbyname(struct student *s1,struct student *s2)
{
if(strcmp(s1->name,s2->name)>0) return 1; //判断姓名字母大小
else return 0;
}
int cmpbyage(struct student *s1,struct student *s2)
{
if(s1->age>s2->age) return 1; //判断年龄大小
else return 0;
}
void sort(struct student *pstu, int n, int (*pcmp)(struct student *,struct student *))
{
int i,j;
struct student tem;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-1-i;j++)
{
if(pcmp(pstu+j,pstu+j+1)>0)
{
tem=*(pstu+j);
*(pstu+j)=*(pstu+j+1);
*(pstu+j+1)=tem; //冒泡法排序
}
}
}
}
int main(){
int i;
struct student a[N]={{17051801,"lier",17},{17051802,"zhangsan",18},{17051803,"wangsi",19}};
sort(a,N,cmpbyid);
for(i=0;i<N;i++)
{
printf("%d\t",a[i].id);
}
sort(a,N,cmpbyname);
for(i=0;i<N;i++)
{
printf("%s\t",a[i].name);
}
sort(a,N,cmpbyage);
for(i=0;i<N;i++)
{
printf("%d\t",a[i].age);
}
return 0;
}
作业题
最新推荐文章于 2024-10-12 22:35:27 发布