zoukankan      html  css  js  c++  java
  • c语言结构体排序示例

    设计性实验
    编程实现对学生成绩表的相关信息排序。
    实验要求:
    ⑴ 建立一个由n个学生的考试成绩表,每条信息由学号、姓名和分数组成。
    ⑵ 按学号排序,并输出排序结果。
    ⑶ 按分数排序,分数相同的则按学号有序,并输出排序结果。
    ⑷ 排序方法及学生成绩表的存储结构不作限制,学生选择性能较好的即可。

    代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #define MaxSize 50
    
    struct Stu{
            char *name;
            int id;
            int grade;
    };
    
    //按照学号排序
    void
    sortById(struct Stu arr[5]){
        int i;
        int cmp(const void *a, const void *b){
            return (*(struct Stu *)a).id > (*(struct Stu *)b).id ? 1:-1;
        }
        qsort(arr,5,sizeof(arr[0]),cmp);
        printf("按学号排序:
    ");
        for(i = 0; i < 5; i++){
            printf("%s %d %d
    ",arr[i].name,arr[i].id,arr[i].grade);
        }
        printf("
    ");
    
    }
    //先按成绩后按学号
    void
    sortByGradeAndId(struct Stu arr[5]){
        int i;
        int Comp(const void *p1,const void *p2)
        {
            struct Stu *c=(struct Stu *)p1;
            struct Stu *d=(struct Stu *)p2;
            if(c->grade!=d->grade)
                    return c->grade-d->grade;
            else
                    return d->id - c->id;
        }
        qsort(arr,5,sizeof(arr[0]),Comp);
        printf("先按成绩后按学号:
    ");
        for(i = 0; i < 5; i++){
            printf("%s %d %d
    ",arr[i].name,arr[i].id,arr[i].grade);
        }
    }
    int main()
    {
        struct Stu arrOfStudent[5] = {
            {"郭佳乐", 20140356, 50},
            {"张三", 20140376, 53},
            {"李四", 20140279, 33},
            {"网二麻子", 20140367, 53},
            {"隔壁老王", 20140255, 89}
        };
        sortById(arrOfStudent);
        sortByGradeAndId(arrOfStudent);
        return 0;
    }
    View Code
  • 相关阅读:
    Flesch Reading Ease (poj 3371)
    保留道路
    列车调度
    三角形
    高精度加法
    AC自动机(1)
    线段树
    并查集(3)
    并查集(2)
    并查集
  • 原文地址:https://www.cnblogs.com/gabygoole/p/5229268.html
Copyright © 2011-2022 走看看