非字母的字符串排序后还是在原来的位置,所以先把字母全部提取出来排序,然后非字母的直接打印,
字母按新排序的打印。
#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; }