思路:
1、用fgets方法获取字符串str
2、将字符串中的字母取出并排好序,放入temp
3、循环str,是字母的则用已经排好序的temp替换
注意:非字母顺序不变,大写或小写字母保持原顺序,fgets会将换行符号一起获取,无需额外输出换行符
//不区分大小写排序,非字母顺序不变 //思路:先将字母取出并排序,然后再将字母填入原string中 #include<stdio.h> #include<string.h> //判断,0则不是字母,其他则为字母的大小 int judge(char s){ if(s>='a' && s <= 'z') return s-'a'+1; else if(s>='A' && s<='Z') return s-'A'+1; return 0; } int main(void){ char str[1000]; while(fgets(str,sizeof(str),stdin)!=NULL){ char temp[1000] = {0}; int len = strlen(str),i,j,key=0; for(i = 0;i<len;i++){ if(judge(str[i])){ temp[key] = str[i]; for(j = key - 1;j>=0;j--){ if(judge(temp[j]) > judge(str[i])){ temp[j+1] = temp[j]; temp[j] = str[i]; } } key++; } } j=0; for(i=0;i<len;i++){ if(judge(str[i])){ str[i] = temp[j]; j++; } } printf("%s",str); } return 0; }