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

大家好,在我编写AaBc的时候,它编写了’ABab’。 我应该在这段代码中改变什么,如果我想要它像’AaBb’那样写?

#include  #include #include 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 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 的
 int main(void)
 {
     char string [128],temp;
     int n,i,j;

     printf(“\ n输入字符串:”);
    得到(字符串);
     n = strlen(string);

     for(i = 0; i  0)
             {
                 temp = string [i];
                 string [i] = string [j];
                 string [j] = temp;
             }
         }
     }
     printf(“\ n%s”,string);
    的printf( “\ n”);
    返回0;
 } 

您需要一个客户比较函数来传递给sort(或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; }