C语言中 字符串怎么排序

/*
函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;
请编制函数SortCharD( ), 其函数的功能是: 以行为单位对字符按从大到小的顺序进行排序,
排序后的结果仍按行重新存入字符串数组xx中。 例: 原文: dAe,BfC.
CCbbAA
结果: fedCBA.,
bbCCAA*/
#include <stdio.h>
#include <string.h>
int main()
{
char xx[80]="dAe,Bfc";
/*介于不清楚文件操作 所以用一句英文 代替题目中的英文文章*/
int len,i,j,temp;
len=strlen(xx);
//printf("%d\n",len);
for (i=0;i<len;i++){
for (j=i+1;i<len;j++)
if (xx[i]<xx[j])
{
temp=xx[i];
xx[i]=xx[j];
xx[j]=temp;
}
}
for (i=0;i<len;i++)
printf("%c",xx[i]);printf("\n");
return 0;}
给看一下 错哪里了

直接借助冒泡排序,选择排序即可进行字符串的排序,但是需注意的是,字符串的比较需要借助strcmp函数完成,而字符串的复制需要借助strcpy函数完成。

示例代码如下:

#include "stdio.h"
#include "string.h"
void sort(char array[][20],int n);
main(void)
{
    char str[10][20];
    int i,j,k,n;
    printf("input n (n<=10):");
    scanf("%d",&n);
    printf("input %d string:",n);
    for(i=0;i<n;i++)
        gets(str[i]);  //输入N个字符串
    sort(str,n);        //对输入的字符串排序
    printf("sort string:\n");
    for(i=0;i<n;i++)
        puts(str[i]);
    return 0;
}
void sort(char array[][20],int n)   //定义排序函数
{
    char temp[20];
    int i,j,k;
    for(i=1;i<n-1;i++)
    {
        k=i;
        for(j=i+1;j<n;j++)
            if(strcmp(array[k],array[j])>0)
            k=j;
        if(k!=i)
        {
            strcpy(temp,array[i]);   //字符串交换顺序
            strcpy(array[i],array[k]);
            strcpy(array[k],temp);
        }
    }
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-10
#include <stdio.h>
#include <string.h>

int main()
{
char xx[80]="dAe,Bfc";
int len,i,j;
len=strlen(xx);
for (i=0;i<len;i++)
{
for (j=0;j<len;j++)//这里不能用i来关条件的
if (xx[i]>xx[j])
{
xx[i]^=xx[j];
xx[j]^=xx[i];
xx[i]^=xx[j];
}
}
for (i=0;i<len;i++)
printf("%c",xx[i]);
printf("\n");
return 0;
}本回答被网友采纳
相似回答