思路:
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;
}
京公网安备 11010502036488号