C语言如何实现字符串中字符和数字分开排序

要求输出的字符串中大写的按大写的顺序,小写按小写的顺序,数字按数字的顺序,但整体顺序不能打乱,比如w2vsd64T1AX排序后d1svw24A6TX

给你个思路吧,你能实现小写的排序,编程本身应该难不到你
程序直接分三部分写,小写的排序,大写的排序,数字的排序。这三个部分可以循环完成。
在小写的排序中这样实现:
1.搞两个指针从前往后找(不想用指针,直接用整形标记下标也行)
2.找到依次两个小写字母,若第一应该在第二之后,交换这两个的位置
3.第一指针指向第二个的位置,第二个继续找下一个小写字母,然后重复步骤2到尾部结束。
4.记录下小写字母的个数n。以上1-3再重复n-1次。
其实就是针对小写字母做冒泡把非小写字母排除在外不动它就是了。
大写和数字的可以循环完成。
具体实现我就不把代码写出来了,你不明白的再问吧
  
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-17
这怎么排??应该只能是把小写,数字,大写放一块吧?可以用冒泡结合ASC码排序
第2个回答  2012-11-17
最笨的办法就是建3个数组,把3种字符放里面,然后分别排列完再放回去
第3个回答  推荐于2018-05-17

#include <stdio.h>  

int main()  

{

char s[100]="skh fld 42t vsfd te36357 rgsfdJGDQ *^*&8762KJGDH";

    int i,j,k,t,n;

for(n=0;s[n];n++);

for(i=0;i<n-1;i++)

{

k=i;

for(j=i+1;j<n;j++)

if(s[j]<s[k])k=j;

t=s[i]; s[i]=s[k]; s[k]=t;

}

printf("%s\n",s);

system("pause");

    return 0;

}

第4个回答  2012-11-17
为什么排序后不是1246ATXdsvw呢追问

按这种也太简单了点。。。

追答

上面的排法是给定的样例吗

相似回答