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);
} 展开
#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);
} 展开
3个回答
展开全部
排序算法有问题,而且,你最好确定一下你输入字符串的长度:
#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 呢??????
追答
冒泡排序的方法,来的,第一次把最大的数排到最后一位
从第一个数开始,第一个和第二个比较,如果第一个比第二个则,交换
然后第二个跟第三个比较,第二个比第三个大,交换。。依次类推,用循环表达出来就应该是这种
关系
展开全部
这么写与外层i的循环有什么关系?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询