/* 输入一个字符串,将其中的数字字符移动到非数字字符之后,并保持数字字符和非数 字字符输入时的顺序。例如,输入字符串“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(); }