非字母的字符串排序后还是在原来的位置,所以先把字母全部提取出来排序,然后非字母的直接打印,
字母按新排序的打印。
#include"stdio.h"
#include"string.h"
char str[1001] = { 0 };
char tmp_str[1000] = { 0 };
int main(void) {
int len, i, j, t=0, n, num = 0;
fgets(str, sizeof(str), stdin);
len = strlen(str);
while (str[len - 1] == '\n' || str[len - 1] == '\r') {
len--;
}
for(i='A';i<='Z';i++){
for(j=0;j<len;j++){
if(str[j] == i || str[j] == i + ('a'-'A')){
tmp_str[t]=str[j];
// printf("%c",str[j]);
t++;
}
}
}
t=0;
// printf("%c",'\n');
for(i=0;i<len;i++){
if(!((str[i] >= 'A' && str[i] <= 'Z') || (str[i] >= 'a' && str[i] <= 'z'))){
printf("%c",str[i]); //不是字母直接打印
}else{
printf("%c",tmp_str[t]); //字母按排序后的顺序替换。
t++;
}
}
return 0;
}



京公网安备 11010502036488号