如何在c / c ++中将字符串中的字母按字母顺序排序

How to sort the letters in a string into alphabetical order in c / c++?

本文关键字:排序 顺序 字符串      更新时间:2023-10-16

大家好在这段代码中,当我编写 AaBc 时,它写着"ABab"。我应该在这个代码中更改什么,如果我想它写成" AaBb '???

#include <stdlib.h>
#include<iostream.h>
#include<string.h>
int main (void)
{
    char string[128], temp;
    int n, i, j;
    printf("nEnter string: ");
    gets(string);
    n = strlen(string);
    for (i=0; i<n-1; i++)
    {
        for (j=i+1; j<n; j++)
        {
            if (string[i] > string[j])
            {
                temp = string[i];
                string[i] = string[j];
                string[j] = temp;
            }
        }
    }
    printf("n%s", string);
    printf("n");
    return 0;
}

'A''a' 的 ASCII 值不同。 'A' == 65'a' == 97.

因此,当您进行比较时,您需要使用 tolowertoupper进行比较,以确保您的值是正确的。进行比较后,您还需要进行比较以查看它是大写还是小写(以确保大写,然后是下垂)。

您首先需要进行不区分大小写的比较,如果字母相同,则进行区分大小写的比较。

#include #include#include<字符串.h>int main (void){    字符字符串[128],温度;    国际 n, i, j;    printf("输入字符串: ");    gets(string);    n = strlen(string);    for (i=0; i 0)            {                temp = 字符串[i];                字符串[i] = 字符串[j];                字符串[j] = 温度;            }        }    }    printf("%s", string);    printf("");    返回 0;}

您需要一个客户比较函数来传递给排序(或 qsort)。

bool comp(char c1, char c2)
{
    return tolower(c1) < tolower(c2);
}
int main()
{
    std::string str = "ABab";
    std::sort(str.begin(), str.end(), comp);
    cout << str << endl;
    return 0;
}