如何在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
。
因此,当您进行比较时,您需要使用tolower
或toupper
进行比较,以确保您的值正确。 在进行比较之后,您还需要进行比较以查看它是大写还是小写(以确保上限,然后降低排序)。
首先需要进行不区分大小写的比较,如果字母相同,则需要进行区分大小写的比较。
#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; }