| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1218 人关注过本帖
标题:字符串排序
只看楼主 加入收藏
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
结帖率:100%
收藏
已结贴  问题点数:9 回复次数:6 
字符串排序
用strcmp字符串复制函数,使用strcmp字符串比较函数,并配合冒泡排序法将5个学生的名字长度按照从小到大排序。

#include<stdio.h>
#include<string.h>
int main()
{
    char name[5][10];
    char t[10];
    int i,j;
    printf("排序前: \n");
    for(i=0;i<5;i++)
    {
        printf("第%d位同学: ",i+1);
        gets(name[i]);
    }
    for(i=3;i>=0;i--)
    {
        for(j=0;j<=i;j++)
        {
            if(strcmp(name[j], name[j+1])>0)
            {
                strcpy(t,name[j]);
                strcpy(name[j],name[j+1]);
                strcpy(name[j+1],t);
            }
        }
    }
    printf("排序后: \n");
    for(i=0;i<5;i++)
    {
        printf(" %d. %s\n",i+1,name[i]);
    }
    printf("\n");
    return 0;
}
运行之后排序总是发生错误,帮忙看一下哪里出错了
搜索更多相关主题的帖子: 字符串 排序 name printf for 
2017-09-27 23:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:4 
回答这种问题
得先去街边花5元
请个算命先生
算出楼主输入的是什么

BTW:论坛有两种人最可恶
一种是代码编译出错不肯贴出错误信息的,他让你用肉眼去编译
一种是运行时需要输入数据,却不肯贴出输入数据的,他让你猜测他当时的输入
不知道这些人活这么大,是不是在现实生活中也这样
2017-09-28 08:45
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
收藏
得分:0 
随便输入5个人的英文名字,比如:li,hur,m,uioi,hqing
2017-09-29 11:47
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用跆拳勇士在2017-9-29 11:47:58的发言:

随便输入5个人的英文名字,比如:li,hur,m,uioi,hqing

你随便不随便与问题无关
你输入
li,hur,m,uioi,hqing
是不行的

得输入
li
hur
m
uioi
hqing
才行
2017-09-29 12:07
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
收藏
得分:0 
想要的结果是按名字长度从小到大排序,但是不知道哪里出错了
2017-09-29 14:57
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:4 
以下是引用跆拳勇士在2017-9-29 14:57:56的发言:

想要的结果是按名字长度从小到大排序,但是不知道哪里出错了

长度不能用strcmp比较吧?
2017-09-29 16:22
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

#include<stdio.h>
#include<string.h>
int main()
{
    char name[5][10], *p[5], *t;
    int i,j;
    for (i=0; i<5; ++i)
        p[i] = name[i];
    printf("排序前: \n");
    for (i=0; i<5; i++)
    {
        printf("第%d位同学: ",i+1);
        gets(p[i]);
    }
    printf("按长度升序排序: \n");
    for (i=0; i<4; ++i)
    {
        for (j=i+1; j<5; ++j)
        {
            if (strlen(p[j]) < strlen(p[i]))
            {
                t = p[i];
                p[i] = p[j];
                p[j] = t;
            }
        }
    }
    for(i=0; i<5; ++i)
        printf("%s\n", p[i]);
    printf("按大小升序排序: \n");
    for (i=0; i<4; ++i)
    {
        for (j=i+1; j<5; ++j)
        {
            if (strcmp(p[j],p[i]) < 0)
            {
                t = p[i];
                p[i] = p[j];
                p[j] = t;
            }
        }
    }
    for(i=0; i<5; ++i)
        printf("%s\n", p[i]);
    return 0;
}
2017-09-29 16:31
快速回复:字符串排序
数据加载中...
 
   



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

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