编写程序,输⼊⼀个字符串,然后对字符串的内容(字符)进⾏升序排序,最后输出排序后的新字符串。

编写程序,输⼊⼀个字符串,然后对字符串的内容(字符)进⾏升序排序,最后输出排序后的新字符串。
• 测试⽤例
• 输⼊:cfa
• 输出:acf

使用的冒泡算法,有不理解的地方可以说,我给你解释

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char input[30];
    printf("输入字符串,按Enter结束:\n");
    scanf("%s",input);

    int i=0;
    while(input[i]!='\0')
    {
        i++;
    }

    char temp;
    for(int t=0;t<i-1;i--)
    {
        for(int j=0;j<i-1;j++)
        {
            if(input[j]>input[j+1])
            {
            temp=input[j];
            input[j]=input[j+1];
            input[j+1]=temp;
            }
        }
    }
    printf("%s\n",input);
    return 0;
}


供参考:

#include <stdio.h>
#include <string.h>
int main()
{
    int i, j, len;
    char str[128], t;
    gets(str);
    len = strlen(str);
    for (i = 0; i < len - 1; i++) {
        for (j = 0; j < len - 1 - i; j++) {
            if (str[j] > str[j + 1]) {
                t = str[j];
                str[j] = str[j + 1];
                str[j + 1] = t;
            }
        }
    }
    puts(str);
    return 0;
}

img


看运行结果。


#include <stdio.h>
#include <string.h>
void sort(char* s, int n) {
    int i = 0, j = 0, index = 0;
    char c;
    for (; i < n; i++) {
        c = s[i];
        index = i;
        for (j = i + 1; j < n; j++) {
            if (s[j] < c) {
                index = j;
                c = s[j];
            }
        }
        if (index != i) {
            c = s[index];
            s[index] = s[i];
            s[i] = c;
        }
    }
}
int main() {
    char s[20];
    gets(s);
    sort(s, strlen(s));
    puts(s);
    return 0;
}