c语言字符串问题
任意输入一个字符串s,将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符串原有的先后次序。例如:abc12def3,执行结果为abcdef123
我写的程序如下
#include<stdio.h>
void fun(char s[]){
char t;
int i,j;
for(i=0;s!='\0';i++)
for(j=i+1;s!='\0';j++){
if(s>='0' && s<='9'){
if(s<'0' || s>'9'){
t=s;
s=s;
s=t;
}
}
}
}
int main(){
char s;
scanf("%s",s);;
fun(s);
printf("%s\n",s);
return 0;
}
但是输入abc12def3 输出结果是abcdef213
为啥后面的数字是213,而不是123,这个程序要如何修改才能变成123 本帖最后由 jackz007 于 2021-11-21 11:22 编辑
#include <stdio.h>
int main(void)
{
char c , s ;
int i , j , k , n ;
scanf("%s" , s) ;
for(n = 0 ; s ; n ++) ;
for(i = 0 ; i < n ; i ++) {
for(j = i ; j < n && s >= '0' && s <= '9' ; j ++) ;
if(j < n) {
if(j > i) {
c = s ;
for(k = 0 ; k < j - i ; k ++) s = s ;
s = c ;
}
} else break ;
}
printf("%s\n" , s) ;
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
abc12def3
abcdef123
D:\00.Excise\C>x
a1b2c3d4e5f6gh78i9
abcdefghi123456789
D:\00.Excise\C>
页:
[1]