薄荷萤火虫 2022-03-19 16:28 采纳率: 91.8%
浏览 71
已结题

C语言的qsort函数可以实现先按从大到小然后若相等再从小到大吗?

struct In
{
int x;
int y;
}s[100];

//按照x从小到大排序,当x相等时按照y从大到小排序
int cmp( const void *a , const void *b )
{
struct In *c = (struct In *)a;
struct In *d = (struct In *)b;
if(c->x != d->x) return c->x - d->x;
else return d->y - c->y;
}
qsort(s,100,sizeof(s[0]),cmp);
C语言的qsort函数可以实现先按从大到小然后若相等再从小到大吗?比如这个,可以实现吗?

  • 写回答

1条回答 默认 最新

  • a5156520 2022-03-19 18:25
    关注

    可以。测试代码:

    #include <stdio.h>
    #include <stdlib.h> 
    
    struct In
    {
    int x;
    int y;
    };
    
    //按照x从小到大排序,当x相等时按照y从大到小排序
    int cmp( const void *a , const void *b )
    {
    struct In *c = (struct In *)a;
    struct In *d = (struct In *)b;
    if(c->x != d->x) return c->x - d->x;
    else return d->y - c->y;
    }
    
    
    int main(void){
        struct In nums[5] = {
            {1,2},
            {2,3},
            {4,1},
            {4,2},
            {4,3}
        };
        
        int i,j; 
        printf("排序前:\n");
        for(i=0;i<5;i++){
            printf("%d %d\n",nums[i].x,nums[i].y);
        }
        
        
        qsort(nums,5,sizeof(nums[0]),cmp);
        printf("排序后:\n");
            for(i=0;i<5;i++){
            printf("%d %d\n",nums[i].x,nums[i].y);
        }
        
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月27日
  • 已采纳回答 3月19日
  • 创建了问题 3月19日

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭