C语言qsort函数用法

qsort函数是C语言编辑器自带的排序函数。

 

 例如:按照学生的平均分从小到大,对结构体排序

#include<stdio.h>
#include<stdlib.h>

struct Student{
    long num;
    int score[5];
    float average;
};

int comp(const void *p1,const void *p2)
{
    return (*(struct Student*)p1).average>(*(struct Student*)p2).average?1:-1;
}
int main()
{
    struct Student stud[10];
    srand((unsigned int)time(NULL));
    for(int i=0;i<10;i++)//生成分数
    {
        stud[i].average=0;
        for(int j=0;j<5;j++)
        {
            stud[i].score[j]=rand()%(100-60+1)+60;
            stud[i].average+=stud[i].score[j];
        }
        stud[i].average/=5;
    }

    for(int i=0;i<10;i++)//生成学号
        stud[i].num=19020001+i;

    for(int i=0;i<10;i++)//排序前
    {
        printf("%ld:",stud[i].num);
        for(int j=0;j<5;j++)
        {
            printf("%d ",stud[i].score[j]);
        }
        printf("%.2f ",stud[i].average);
        putchar(10);
    }
    qsort(stud,10,sizeof(stud[0]),comp);
    putchar(10);
    for(int i=0;i<10;i++)//排序后
    {
        printf("%ld:",stud[i].num);
        for(int j=0;j<5;j++)
        {
            printf("%d ",stud[i].score[j]);
        }
        printf("%.2f ",stud[i].average);
        putchar(10);
    }
    return 0;
}
View Code

comp函数

int comp(const void *p1,const void *p2)
{
    return (*(struct Student*)p1).average>(*(struct Student*)p2).average?1:-1;
}
qsort(stud,10,sizeof(stud[0]),comp);

运行结果

原文地址:https://www.cnblogs.com/Hfolsvh/p/14188818.html