c语言 输入一个字符串,编程实现将其中字母字符放在前面,数字字符放在后面生成一个新串,并输出。
时间: 2024-03-18 21:41:51 浏览: 69
去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符
好的,以下是 C 语言实现的代码,和之前的思路类似:
```
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void swap(char *a, char *b) {
char temp = *a;
*a = *b;
*b = temp;
}
void charNumberSort(char *str) {
int left = 0, right = strlen(str) - 1;
while (left < right) {
while (left < right && isalpha(str[left])) left++;
while (left < right && isdigit(str[right])) right--;
if (left < right) {
swap(&str[left], &str[right]);
left++;
right--;
}
}
}
int main() {
char str[] = "Abc123def456";
charNumberSort(str);
printf("%s\n", str); // 输出 "abcdef123456"
return 0;
}
```
这里使用了 `ctype.h` 头文件中的 `isalpha()` 和 `isdigit()` 函数来判断字符是字母还是数字。在 `charNumberSort` 函数中,我们同样使用两个指针 `left` 和 `right` 分别指向字符串的左右两端。当左指针指向字母字符时,就向右移动;当右指针指向数字字符时,就向左移动。如果此时左指针指向的是数字字符,右指针指向的是字母字符,就交换它们的位置。交换完成后,左指针向右移动一格,右指针向左移动一格,继续执行下一轮循环,直到左右指针相遇为止。
阅读全文