如何在c / c ++中将字符串中的字母按字母顺序排序
How to sort the letters in a string into alphabetical order in c / c++?
大家好在这段代码中,当我编写 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
.
因此,当您进行比较时,您需要使用 tolower
或toupper
进行比较,以确保您的值是正确的。进行比较后,您还需要进行比较以查看它是大写还是小写(以确保大写,然后是下垂)。
您首先需要进行不区分大小写的比较,如果字母相同,则进行区分大小写的比较。
#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;}字符串.h>
您需要一个客户比较函数来传递给排序(或 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;
}
相关文章:
- vim 标签导航,使用 VIM 或 CTAG 更改排序顺序
- 集成多态可扩展排序顺序
- 如何修改函数以按C++的排序顺序插入每个项目
- 按排序顺序将节点插入链表
- 在C std :: Priority_queue中反向字母排序顺序的简单方法
- std::map 的排序顺序取决于输入值
- 一种按排序顺序保持元素的数据结构,支持快速插入和计算连续元素之间的最大差异
- 将随机数插入排序顺序为C++的数组中
- C++链表-按排序顺序打印
- STL 按排序顺序存储数字
- 基于最大公分的排序顺序
- 用于插入大部分排序数据的数据结构,这些数据将保持排序顺序
- 将范围有限的浮点数转换为无符号的整数,以保持排序顺序和精度
- 在排序时更改排序顺序是否是未定义的行为
- 排序顺序问题
- QSqlQuery 忽略 SQLite DB 的排序顺序
- 按排序顺序迭代 std::vector
- 使用不同的比较保持相同的排序顺序
- 按排序顺序更新文件
- 如何按排序顺序生成数组的所有排列