問題描述:
將數組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];
}
測試案例: