#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;
}
作业题
最新推荐文章于 2025-08-24 14:38:47 发布
本文介绍了一个使用C语言实现的学生信息结构体数组,并通过指针函数进行按学号、姓名和年龄排序的例子。该程序定义了三个比较函数分别用于不同属性的排序,并采用冒泡排序法实现了排序功能。
14万+

被折叠的 条评论
为什么被折叠?



