给一个字符串排序,具体也说不清楚!

来源:百度知道 编辑:UC知道 时间:2024/06/10 11:54:57
#include <stdio.h>
#include <string.h>
void main()
{
int i,j;
char string[10],str;
char str[10][20];
printf("input 10 words:\n");
for (i=0;i<=9;i++)
scanf("%s",string[i]);
printf("\n");
for(i=0;i<9;i++)
for(j=i+1;j<10;j++)
if(strcmp(string[i],string[j])>0)
{
strcpy(str,string[i]);
strcpy(string[i],string[j]);
strcpy(string[j],str);
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf("%s",string[i]);
printf("\n");
}
看看错在哪里,发哈正确的。谢了哦,在线等!

你要的结果出来了,依次从小到大排列(从大到小则改不等号)。
嗯,上次改完后的确有问题,没改到。

#include <stdio.h>
#include <string.h>

void main()
{
int i,j;
char string[10];
char str;
printf("input 10 words:\n");
for(i=0;i<=9;i++)scanf("%c",&string[i]);
printf("\n");
for(i=0;i<9;i++){
for(j=i+1;j<10;j++)
if(string[i]>string[j])//改动
{
str=string[i];//改动
string[i]=string[j];//改动
string[j]=str;//改动

}
}
printf("the sorted numbers:\n");
for(i=0;i<10;i++)printf("%c",string[i]); //此处改为了标准输入输出
printf("\n");
}
/*注意这里输出的是字符,而不是字符串,所以把%s改为了%c 概念要分清啊*/
printf("\n");
}

注意要严格分清字符与字符串的区别。strcmp(),strcpy()都是对字符串的操作,不能用于字符的。