| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 313 人关注过本帖
标题:求高手帮忙排序问题
只看楼主 加入收藏
凤凰涅槃
Rank: 2
来 自:甘肃定西
等 级:论坛游民
帖 子:47
专家分:36
注 册:2012-3-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
求高手帮忙排序问题
#include <stdio.h>
#include <string.h>
#define max 3
struct student
{
char num[5];
char name[10];
int score[4];
}
p[]={{"2010","linning",43,22,44,54},{"2012","yanglin",53,54,55,34},{"2011","liuhua",55,64,34,66}};
main()
{
int i,a;
struct student *pp;
pp=p;
printf("num     name       score\n");
printf("------------------------\n");
for (i=0;i<max;i++,pp++)
    if(pp->num>0)

      printf("%-8c%-10c%-15d\n",pp->num,pp->name,pp->score);

}
结果排序出来
打印的应该是这样,但我想不到该把排序的代码该怎么写
num         name          score
-------------------------------
2010        linning       43,22,44,54
2011        liuhua        55,64,34,66
2012        yanglin       53,54,55,34
这个结果就合适了啊
但打印出来的不合适
搜索更多相关主题的帖子: max include 
2012-05-31 19:33
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:20 
唉,表示同情。你的学习能力...还是回去重新涅槃吧。

否则,我估计即使有人告诉你这个问题怎么排序,换个问题你依然不会。(你肯定学过某种排序算法,但却不知道如何应用在这里)

自己悟虽然慢点,但一旦会了,这辈子也忘不了,还能举一反三。

重剑无锋,大巧不工
2012-05-31 19:46
凤凰涅槃
Rank: 2
来 自:甘肃定西
等 级:论坛游民
帖 子:47
专家分:36
注 册:2012-3-5
收藏
得分:0 
那么谁能提醒一下啊
2012-05-31 19:48
凤凰涅槃
Rank: 2
来 自:甘肃定西
等 级:论坛游民
帖 子:47
专家分:36
注 册:2012-3-5
收藏
得分:0 
回复 2楼 beyondyf
那麻烦你提醒一下啊
我记得好像有就是交换位置的:
如:
A=B;
B=C;
C=A;
就这样的当然没定义哈
2012-05-31 19:50
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
哪个排序不交换位置?你就学到这点程度,我怎么提醒你?

重剑无锋,大巧不工
2012-05-31 19:53
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
被我训了还把分给我。唉,心软了。给你写个示例,好好看看。不懂在这里问我,别在短消息里问了。
程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct
{
    char num[8];
    char name[16];
    int score[4];
}STUDENT;

int cmp(const void * a, const void * b)
{
    STUDENT * ta, * tb;
    int c;
    ta = (STUDENT *)a;
    tb = (STUDENT *)b;
    c = strcmp(ta->num, tb->num); //优先比较 num
    if(c != 0) return c;
    c = strcmp(ta->name, tb->name); //如果num相同,比较name
    return c; //还可以更多级,自己根据需要仿照上面建立
}

STUDENT p[] = {        //适当的换行和空白可以使代码更清晰易读
    {"2010", "linning", 43, 22, 44, 54},
    {"2012", "yanglin", 53, 54, 55, 34},
    {"2011", "liuhua", 55, 64, 34, 66}
};

int main()
{
    int i;
    qsort(p, 3, sizeof(STUDENT), cmp); //自己查一下这个函数的定义,最好能自己重写一下这个函数
    printf("%-8s%-10s%-10s\n----------------------------\n", "num", "name", "score");
    for(i = 0; i < 3; i++)
        printf("%-8s%-10s%d, %d, %d, %d\n", p[i].num, p[i].name, p[i].score[0], p[i].score[1], p[i].score[2], p[i].score[3]);
    return 0;
}

重剑无锋,大巧不工
2012-05-31 20:53
快速回复:求高手帮忙排序问题
数据加载中...
 
   



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

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