/*
输入一个字符串,将其中的数字字符移动到非数字字符之后,并保持数字字符和非数
字字符输入时的顺序。例如,输入字符串“ab4f35gr#a6”,输出为“abfgr#a4356”。
*/
#include <stdio.h>
int main(){
char s[50];
int i,j,len;
char ch;
gets(s);
len = strlen(s);
/*去除结尾连续数字*/
for(i = len -1; s[i] <= '9' && s[i] >= '0'; i--) ;
len = i;
/*若碰到数字,移到结尾,然后数组长度减1*/
for(i = len; i >= 0; i--){
if(s[i] <= '9' && s[i] >= '0'){
ch = s[i];
for(j = i; j < len; j++)
s[j] = s[j+1];
s[len] = ch;
i++;
len--;
}
}
printf("atfer:%s\n",s
/*网上的查到的,效率较高 */
#include <stdio.h>
void main()
{
char buf[256];
char *p=buf;
char *q=buf;
char ch;
printf("Please input a string:");
scanf("%s", buf);
while(*p)
{
while(*p<'0'||*p>'9')p++; /*找到第一个数字*/
q=p;
while(*q>='0' && *q<='9')q++; /*找到数字后面的第一个不是数字的字符*/
if(*q == '\0') break; /*后面都是数字,退出*/
ch=*q;
while(q>p)
{
*q=*(q-1);
q--;
}
*q=ch;
}
printf("Output string: %s\n",buf);
printf("Press any key to exit.\n");
getch();
}