用C语言编写:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。例如,s所指的字符串为def35adh3kjsdf7,执行后结果为defadhajsdf3537。
时间: 2023-12-10 14:38:02 浏览: 254
以下是用C语言编写的代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
void move_digits(char *s) {
int len = strlen(s);
int i, j;
char tmp;
for (i = 0; i < len - 1; i++) { // 冒泡排序
for (j = 0; j < len - 1 - i; j++) {
if (!isdigit(s[j]) && isdigit(s[j + 1])) {
tmp = s[j];
s[j] = s[j + 1];
s[j + 1] = tmp;
}
}
}
}
int main() {
char s[] = "def35adh3kjsdf7";
printf("before: %s\n", s);
move_digits(s);
printf("after: %s\n", s);
return 0;
}
```
首先定义了一个名为`move_digits`的函数,接受一个指向字符串的指针。函数中使用冒泡排序的思想,将所有数字字符移到非数字字符之后。然后在`main`函数中定义了一个字符串`s`,并调用`move_digits`函数将其转换。最后输出转换前后的字符串,即可完成题目要求的功能。
阅读全文