• 排序更新——序


    成绩排序,成绩相同,比较姓名,姓名相同,比较年龄。

    #include<stdio.h>
    #include<algorithm>
    #include<string.h>
    using namespace std;
    struct E{
            char name[100];
            int age;
            int grade;
        }buff[1000];
    bool cmp(E a,E b)
    {
        int tmp;
        if(a.grade!=b.grade)return a.grade<b.grade;
        if((tmp=strcmp(a.name,b.name))!=0) return tmp<0;
        else 
            return a.age<b.age;
    }
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            for(int i=0;i<n;i++)
            {
                scanf("%s%d%d",buff[i].name,&buff[i].age,&buff[i].grade);
            }
            sort(buff,buff+n,cmp);//定义比较规则
            for(int j=0;j<n;j++)
                printf("%s %d %d
    ",buff[j].name,buff[j].age,buff[j].grade);
        }
        printf("
    ");
    
        return 0;
    }

    //改进:
    #include<stdio.h> #include<algorithm> #include<string.h> using namespace std; struct E{ char name[100]; int age; int grade; bool operator <(const E &b)const{//利用C++重载直接定义 < 运算符 int tmp=0; if(grade!=b.grade)return grade<b.grade; if((tmp=strcmp(name,b.name))!=0) return tmp<0; else return age<b.age; } }buff[1000]; int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) { scanf("%s%d%d",buff[i].name,&buff[i].age,&buff[i].grade); } sort(buff,buff+n);//sort 函数只利用 < 运算符进行定序 for(int j=0;j<n;j++) printf("%s %d %d ",buff[j].name,buff[j].age,buff[j].grade); } printf(" "); return 0; }
  • 相关阅读:
    socket发送文字、图片、文件---基于python实现
    python socket详解
    loadrunner socket协议问题归纳(6)
    Hash算法解决冲突的四种方法
    while循环 运算符和编码
    python初识
    js中forEach,for in,for of循环的用法详解
    设计模式之MVC和MVT
    mac 下的 tree 命令 终端展示你的目录树结构
    Mac查看进程
  • 原文地址:https://www.cnblogs.com/Xilian/p/3635018.html
Copyright © 2020-2023  润新知