| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3102 人关注过本帖
标题:用冒泡法按学号排序结构体的问题
只看楼主 加入收藏
axxhn
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2017-6-4
结帖率:33.33%
收藏
 问题点数:0 回复次数:13 
用冒泡法按学号排序结构体的问题
下面是主要的代码,求大神指点
typedef struct student
{
    char nam[10];
    char num[100];
    char sex[4];
    char age[4];
    char remark[200];
    struct student *next;
}stu;
stu *head;
void sort(stu *p1)
{
    char num[100];
    int len=sizeof(num)/2;
    int j,m,n;
    stu t;
    for(m=0;m<len-1;m++)
    for(n=0;n<len-m-1;n++)
    if(p1[n].num>p1[n+1].num)
    {
        t=p1[n];
        p1[n]=p1[n+1];
        p1[n+1]=t;
    }
    printf("按学号排序后学生信息如下\n");
    printf("学号 姓名 性别 年龄 备注\n");
    for(j=0;j<len;j++)
    printf("  %s   %s   %s   %s   %s\n",p1[j].num,p1[j].nam,p1[j].sex,p1[j].age,p1[j].remark);   
}
搜索更多相关主题的帖子: 结构体 信息 
2017-06-04 21:43
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
指点什么呢?

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-04 21:47
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
char num[100];

p1[n].num>p1[n+1].num;

感觉字符串这样直接比较会出问题~可以用strcmp比较~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-06-04 21:53
axxhn
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2017-6-4
收藏
得分:0 
回复 2楼 renkejun1942
就是这个代码运行之后,只能显示输入的第一组项目,不能输出之后的项目,也不能达到排序的目的,看看要怎么修改
2017-06-04 21:54
axxhn
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2017-6-4
收藏
得分:0 
回复 3楼 九转星河
strcmp好像用不了
2017-06-04 22:01
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 4楼 axxhn
因为你的比较不正确啊。
字符串是不能这样比较的,你需要使用strncmp或者strcmp。

你是用VS的?那么你需要看错误提示,错误提示里会给你一串宏,在预处理器中添加这个宏,就可以使用strcmp了。

 int len=sizeof(num)/2;//这行代码是干嘛的?弄不懂你的意图

    struct student *next;//你用的是数组,结构中的这一行是多余的。



[此贴子已经被作者于2017-6-4 22:05编辑过]


09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-04 22:03
axxhn
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2017-6-4
收藏
得分:0 
回复 6楼 renkejun1942
第一行是用num的长度来求循环次数,第二条是其他分程序要用的

[此贴子已经被作者于2017-6-4 22:11编辑过]

2017-06-04 22:08
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 7楼 axxhn
你先修改比较问题,修改之后,运行,再看有没有其他问题。

另外,你那个len变量到底是干嘛的?

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-04 22:09
axxhn
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2017-6-4
收藏
得分:0 
回复 8楼 renkejun1942
[Error] cannot convert 'stu' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'
改为strcmp后出现这个问题
2017-06-04 22:17
renkejun1942
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:不是这样
等 级:贵宾
威 望:33
帖 子:1645
专家分:5297
注 册:2016-12-1
收藏
得分:0 
回复 9楼 axxhn
修改后的代码。

还有,你是否真的眼瞎看不见我问的(或选择性无视),len这个变量到底是干嘛的?为什么会是数组的元素量?

09:30 05/21 种下琵琶种子,能种活么?等待中……
21:50 05/27 没有发芽。
20:51 05/28 没有发芽。
23:03 05/29 没有发芽。
23:30 06/09 我有预感,要发芽了。
2017-06-04 22:20
快速回复:用冒泡法按学号排序结构体的问题
数据加载中...
 
   



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

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