小弟采用最基本的冒泡排序处理数组形式的字符,
只会按ASCII码整理得ABCabc的结果。
求高人指点,多谢!
PHP中文网2017-04-17 14:45:38
小文字を大文字に変換して比較します
<時間>この回答を嫌う人の心理はわかりません~
C 言語の例
#include
char Upper(char c){
if (c>='a' && c<='z'){
c = c - ' ';//32;
}
cを返します。
}
void main(){
char str[] = {"BCAbca"};
内部温度;
int len = sizeof(str)/sizeof(char);
レン = レン - 1;
printf("%s\n", str);
for(int i = 0; iUpper(str[j+1])){ // 小文字を大文字に変更して比較します
温度 = str[j];
str[j] = str[j+1];
str[j+1] = 温度;
}
}
}
printf("%s\n", str);
}
効果:
「a」が「A」の後にあることを確認するにはどうすればよいですか?
@ブレイデン
unsigned char Upper(char c){
char isLow = (c>='a' && c<='z');
return ((isLow ? c-32 : c) << 1) + isLow ;
}
< /p>
怪我咯2017-04-17 14:45:38
文字を数値に変換します。例は次のとおりです。
'A' => 0
'a' => 1
'B' => 2
'b' => 3
...
次のようなもの:
int arr['z' - 'A' + 1];
for (int i = 0; i < 26; i++) {
arr[i] = 2 * i;
arr[i + 'a'] = 2 * i + 1;
文字 c1 と c2 を比較します:
if (arr[c1 - 'A'] < arr[c2 - 'A'])
高洛峰2017-04-17 14:45:38
構築学 C++。
char str[]="BCAbca";
auto cmp = [](char a, char b)
{
自動上限 = [](char c)
{
return ( c >= 'A'&&c <= 'Z' );
};
自動下限 = [](char c)
{
return ( c >= 'a'&&c <= 'z' );
};
if (上(a))
{
if (上(b))
<を返します。 b;
それ以外
a
阿神2017-04-17 14:45:38
私の兄は答えに触発されて、答えを書こうとしました。主なアイデアは、Aa から Zz までの 52 文字を 1 から 52 にマッピングし、必要に応じて並べ替えて出力することです。
並べ替え方法は選択並べ替えを使用します。代わりにバブルを使用することもできます。
#include
名前空間 std を使用します。
void out(int a[], int n)//整数配列を出力
{
for (int k = 0; k < n; k++)
cout <<a[k]<<
cout <<
}
void selectsort(int a[], int n)//ソートを選択
{
int i、j、min;
for (i = 0; i < n; i++)
{
分 = i;
for (j = i + 1; j < n; j++)
{
if (a[j] < a[分])
{
最小 = j;
}
}
swap(a[i], a[min]);
out(a, n);// 1つずつ出力します
}
}
ボイドメイン()
{
char a[11] = { 'a','f','E','c','b','n','M','d','F','N','g' };
int b[11];
char c[11];
for (int i = 0; i < 11; i++)
{
if (a[i] >= 65 && a[i] <= 90)
{
b[i] = int(a[i] * 2 -129);//大文字は 1 ~ 52 の奇数に対応します
}
それ以外
{
b[i] = int(a[i] * 2 -192);//小文字は偶数に対応します
}
}
選択ソート(b, 11);
for (int j = 0; j < 11; j++)//整数を出力用の文字に変換します。
{
if (b[j] % 2 != 0)
{
c[j] = char((b[j] + 129) / 2);
}
それ以外
{
c[j] = char((b[j] + 192) / 2);
}
}
選択ソート(b, 11);
for (int k = 0; k < 11; k++)//出力文字配列
cout <<c[k]<<
cout <<
}