利用qsort给结构体按三级排序

最小年龄的3个职工

http://www.nowcoder.com/questionTerminal/a9fa482eb05149cdbad88689e3cb5f66

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

typedef struct{
    int id;
    char name[20];
    int age;
}Staff,*snode;

int cpr(const void * a,const void* b)
{
    snode x = (snode) a;
    snode y = (snode) b;
    if(x->age != y->age)
        return x->age - y->age;
    else if(x->id != y->id)
        return x->id - y->id;
    else
        return strcmp(x->name,y->name);
}
int main()
{
    int n;
    scanf("%d",&n);
    int min = n>3?3:n;
    snode s = (snode)malloc(sizeof(Staff)*n);
    for(snode i = s;i<s+n;i++)
        scanf("%d %s %d",&i->id,i->name,&i->age);
    qsort(s,n,sizeof(s[0]),cpr);

    for(snode i= s;i<s+min;i++)
        printf("%d %s %d\n",i->id,i->name,i->age);
    return 0;
}
全部评论

相关推荐

06-26 18:30
门头沟学院 Java
据说名字越长别人越关注你的昵称我觉得我要被关注了:你问问这里面有多少是正经候选人,而不是乱打招呼的
点赞 评论 收藏
分享
程序员牛肉:主要是因为小厂的资金本来就很吃紧,所以更喜欢有实习经历的同学。来了就能上手。 而大厂因为钱多,实习生一天三四百的就不算事。所以愿意培养你,在面试的时候也就不在乎你有没有实习(除非是同级别大厂的实习。) 按照你的简历来看,同质化太严重了。项目也很烂大街。 要么换项目,要么考研。 你现在选择工作的话,前景不是很好了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务