C语言,一个字符串按字母排序?????

这个代码有什么错啊??不能排啊???还有就是比较字符的顺序就是比较字符的ASSIC码值,对吧,直接对字符进行关系操作符的比较到底对不对???#include<stdio.... 这个代码有什么错啊??不能排啊???还有就是比较字符的顺序就是比较字符的ASSIC码值,对吧,直接对字符进行关系操作符的比较到底对不对???
#include<stdio.h>
void main()
{
char c[10];
int i;
int j;
int temp;
gets(c);
for(i = 0;i<9;i++)
for(j = 0;j<9;j++)
if(c[j]>c[j+1])
{
temp = c[j];
c[j] = c[j+1];
c[j+1] = temp;
}
puts(c);
}
展开
 我来答
百度网友6fe74e2
推荐于2017-12-15 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:273万
展开全部

排序算法有问题,而且,你最好确定一下你输入字符串的长度:

#include<stdio.h>
#include<string.h>
void main()
{
char c[10];
int i;
int j;
int temp;
int length;
gets(c);
length=strlen(c);//你可能输入不到10个字符,所以确定总共字符数
for(i=0;i<length-1;i++)//for(i = 0;i<9;i++)
for(j=0;j<length-1-i;j++)//这儿问题最大 for(j = 0;j<9;j++)
if(c[j]>c[j+1])
{
temp = c[j];
c[j] = c[j+1];
c[j+1] = temp;
}
puts(c);
}

追问
for(j=0;j<length-1-i;j++)   //这儿问题最大 for(j = 0;j<9;j++)

这句怎么理解啊?????为什么是j<length-1-i 呢??????
追答
冒泡排序的方法,来的,第一次把最大的数排到最后一位

从第一个数开始,第一个和第二个比较,如果第一个比第二个则,交换

然后第二个跟第三个比较,第二个比第三个大,交换。。依次类推,用循环表达出来就应该是这种

关系
福泽佑之IN
2014-01-08 · TA获得超过2474个赞
知道小有建树答主
回答量:727
采纳率:0%
帮助的人:698万
展开全部
#include<stdio.h>
#include<string.h>
void main()
{
    char c[10];
    int i;
    int j;
    int temp;
    gets(c);
    int len = strlen(c);
    for(i = 0; i<len; i++)
        for(j = 0; i+j<len-1; j++)
            if(c[j]>c[j+1])
            {
                temp = c[j];
                c[j] = c[j+1];
                c[j+1] = temp;
            }
    puts(c);
}

冒泡排序有问题。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jellycgl
2014-01-08 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:895万
展开全部
这么写与外层i的循环有什么关系?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式