| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3130 人关注过本帖
标题:qsort怎么去给一个结构数组排序?
只看楼主 加入收藏
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
结帖率:81.48%
收藏
已结贴  问题点数:20 回复次数:4 
qsort怎么去给一个结构数组排序?
/*
已知一个学生的信息有两项:学生姓名,学生成绩,从键盘上输入10个学生的信息,
然后按学生成绩从小到大排序(排序方法不限),最后输出排序过的学生信息。
*/

#include <stdio.h>
#include <math.h>
#define NumOfStudents 2
struct stu{
    char name[7];
    int chengji;
}students[NumOfStudents];
int cmp(const void *a,const void *b)
{
    return (struct stu *)a->chengji - (struct stu *)b->chengji;
}
int main()
{
    int i;
    for (i=0;i<NumOfStudents;i++)
    {
        fflush(stdin);
        scanf("%s",&students[i].name);
        scanf("%d",&students[i].chengji);
    }
    qsort(students,NumOfStudents,sizeof(students[0]),cmp);
    for (i=0;i<NumOfStudents;i++)
    {
        printf("%s\n",students[i].name);
    }
}
搜索更多相关主题的帖子: 信息 键盘 include return 
2011-12-22 14:50
zy_space
Rank: 5Rank: 5
等 级:职业侠客
帖 子:163
专家分:364
注 册:2011-11-14
收藏
得分:0 
不管你是快排,冒泡还是选择什么的,结构体排序主要是传值问题吧,通过地址引用就行了

何必等待?梦在今朝
2011-12-22 16:03
hk327143206
Rank: 2
等 级:论坛游民
帖 子:35
专家分:31
注 册:2011-6-25
收藏
得分:0 
//给你参考下,不知道是不是你需要的结果
#include <stdio.h>
#include <math.h>
#define NumOfStudents 2
struct stu{
    char name[7];
    int chengji;
}students[NumOfStudents];
int cmp(const void *a,const void *b )
{
    return *(int *)a-*(int *)b;
}
int main()
{
    int i;
    for (i=0;i<NumOfStudents;i++)
    {
        fflush(stdin);
        scanf("%s",&students[i].name);
        scanf("%d",&students[i].chengji);
    }
    qsort(students,NumOfStudents,sizeof(students[0]),cmp);
    for (i=0;i<NumOfStudents;i++)
    {
        printf("%s\n",students[i].name);
    }
}
2011-12-22 16:41
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:20 
三楼的方法不对,参考一下吧
int cmp(const struct stu *a,const struct stu *b)
{
    return a->chengji - b->chengji;
}

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-12-22 16:50
love24114
Rank: 5Rank: 5
等 级:职业侠客
威 望:1
帖 子:223
专家分:399
注 册:2011-7-11
收藏
得分:0 
都不对……
return ((struct stu *)a)->chengji - ((struct stu *)b)->chengji;
2011-12-22 19:37
快速回复:qsort怎么去给一个结构数组排序?
数据加载中...
 
   



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

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