将原字符数组分类统计后填入到新字符数组中:
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d\n", &n);
char* str = malloc(sizeof(char) * n);
int countLow = 0, countNum = 0;
for (int i = 0; i < n; ++i) {
str[i] = getchar();
if (str[i] >= 'a' && str[i] <= 'z') {
++countLow;
} else if (str[i] >= '0' && str[i] <= '9') {
++countNum;
}
}
char* sortedStr = malloc(sizeof(char) * (n + 1));
int li = 0, ni = countLow, ui = countLow + countNum;
for (int i = 0; i < n; ++i) {
if (str[i] >= 'a' && str[i] <= 'z') {
sortedStr[li++] = str[i];
} else if (str[i] >= '0' && str[i] <= '9') {
sortedStr[ni++] = str[i];
} else {
sortedStr[ui++] = str[i];
}
}
sortedStr[n] = '\0';
free(str);
puts(sortedStr);
free(sortedStr);
return 0;
}

京公网安备 11010502036488号