问题描述:
将数组s中的所有数字字符移动到非数字字符之后,并保持所有数字字符和所有非数字字符原有的先后顺序。
方法:将数字存放到t1数组,其他字符存放到 t2数组,然后合并;
编译环境:vc++6.0
代码
#include <stdio.h>
void fun1(char s[]); //函数申明
int main()
{
char a[60];
printf("输入字符串\n");
gets(a);
fun1(a);
printf("排序后\n");
puts(a);
return 0;
}
void fun1(char s[])
{
char t1[50],t2[50];
int m=0,n=0,i; //m统计数字个数, //n统计字母个数
for(i=0;s[i]!='\0';i++)
if(s[i]>='0'&&s[i]<='9')
t1[m++]=s[i];
else t2[n++]=s[i];
t1[m]='\0'; //字符串结束符
t2[n]='\0';
for(i=0;i<n;i++) //将数组t1,t2合并到数组s
s[i]=t2[i];
for(i=0;i<m;i++)
s[n+i]=t1[i];
}
测试案例: