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
  • 相关阅读:
    资料网站
    HTML、CSS部分
    面试题三
    面试题二
    面试题一
    上学时的HTML+JS+CSS(小总结)
    01.策略模式-上篇
    【解决方案】HTTP could not register URL http://+:6001/
    【问题与思考】1+"1"=?
    WCF安全3-Transport与Message安全模式
  • 原文地址:https://www.cnblogs.com/gabygoole/p/5229268.html
Copyright © 2011-2022 走看看