| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2622 人关注过本帖
标题:[求教]qsort对结构体二级排序,程序不能运行?
取消只看楼主 加入收藏
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
结帖率:97.06%
收藏
已结贴  问题点数:50 回复次数:4 
[求教]qsort对结构体二级排序,程序不能运行?
#include <stdio.h>  
#include <stdlib.h>
void main()
{
struct In
{
int x;   

int y;   

}s[10];

int cmp( const void *a , const void *b )
{

struct In *c = (In *)a;

struct In *d = (In *)b;

if(c->x != d->x) return c->x - d->x;

else return d->y - c->y;

}
int i,j;
for(i = 0; i< 10; i++)  
        scanf("%d%d ", &s[i].x,&s[i].y);  

qsort(s,10,sizeof(s[0]),cmp);

for(i = 0; i< 10; i++)  
        printf("%d%d ", s[i].x,s[i].y);  

    printf("\n");  
}  


[此贴子已经被作者于2017-1-31 15:36编辑过]

搜索更多相关主题的帖子: include return 结构体 
2017-01-31 15:33
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
网上有个例子程序,却不能运行;

#include<algorithm>            
#include<stdlib.h>            
using namespace std;            
            
typedef struct node            
{            
    int x,y;        
}G;            
            
int cmp1(const G &a,const G &b)            
{            
    if(a.x!=b.x) return a.x>b.x;  //以X递减排序         
    else return a.y>b.y;//x相同,以y递减排序         
}//sort            
            
int cmp2(const void *a,const void *b)            
{            
    G *p1=(G *)a;        
    G *p2=(G *)b;        
    if(p1->x!=p2->x) return p1->x-p2->x;//以X递增排序        
    else return p1->y-p2->y; //x相同,以y递增排序        
}//qsort            
            
int main()            
{            
    int n;        
    int i,j,k;        
    G array[1001];        
    while(scanf("%d",&n)!=EOF)        
    {        
        for(i=0;i<n;i++)   
        {   
            scanf("%d%d",&array[i].x,&array[i].y);
        }   
        sort(array,array+n,cmp1);   
        for(i=0;i<n;i++)   
        {   
            printf("%d %d\n",array[i].x,array[i].y);
        }   
        qsort(array,n,sizeof(array[0]),cmp2);   
        for(i=0;i<n;i++)   
        {   
            printf("%d %d\n",array[i].x,array[i].y);
        }   
    }        
    return 0;        
}            


[此贴子已经被作者于2017-1-31 18:06编辑过]

2017-01-31 17:04
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
回复 5楼 renkejun1942
问题如下:用qsort结构体二级排序
a[10]={1,2,3,5,3,6,0,7,-3,5}
c[10]={5,3,2,1,6,7,8,0,6,6}
找出c!=0时,a最大,c最小,求出a/c的值;
2017-01-31 17:30
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
回复 3楼 书生牛犊
用心参考网上举例程序,程序可以运行了,希望能在工作里应用,如下:
#include <stdio.h>                     
#include <stdlib.h>                     
typedef struct node
{                     
    int x;                     
    int y;                                            
}G;                     
int cmp(const void *a, const void *b)                     
{      
    G*p1=(G*)a;
    G*p2=(G*)b;
    if(p1->x!=p2->x)
        return p1->x-p2->x;
    else return p1->y-p2->y;
}                     
int main()                     
{

    int i;
    G a[10];

{
for(i=0;i<10;i++)
{
    scanf("%d%d",&a[i].x,&a[i].y);
}
qsort(a,10,sizeof(a[0]),cmp);
for(i=0;i<10;i++)
{
    printf("%d %d\n",a[i].x,a[i].y);
}
}
return 0;
}                 
                        
  1 2 3 -6 7 -9 0 -8 7 1 2
 1 2 3 -6 7 -9 0 -8 7 1 9
-9 0
-8 7
-6 7
0 -8
1 2
2 1
2 3
3 -6
7 -9
7 1
Press any key to continue   

[此贴子已经被作者于2017-1-31 20:45编辑过]

2017-01-31 20:42
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:0 
回复 8楼 九转星河
算法和思想是逻辑结构,高效的计算工具;工作科研大有帮助;
2017-01-31 22:11
快速回复:[求教]qsort对结构体二级排序,程序不能运行?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025889 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved