C / C ++プログラミング学習-第9週①大文字と小文字を区別しない文字列の比較

トピックリンク

タイトル説明

通常、strcmpを使用して2つの文字列のサイズを比較できます。比較方法は、異なる文字が表示されるか、 '\に遭遇するまで、2つの文字列を文字ごとに前から後ろに比較します(ASCIIコード値に従って比較します)。 0 '。。すべての文字が同じである場合、それらは同じであると見なされます。異なる文字がある場合、最初の異なる文字の比較結果が優先されます(注:文字列が「\ 0」に遭遇した場合、および文字列に遭遇しなかった場合、別の文字'\ 0'に遭遇し、前者は後者よりも小さい)。

ただし、文字列のサイズを比較するときに、文字のサイズを無視したい場合があります。たとえば、文字の大文字と小文字を無視すると、「Hello」と「hello」は同じになります。文字の大文字小文字を無視して、2つの文字列の大文字小文字を比較するプログラムを作成してください。

入力形式
入力は2行で、1行に1文字の文字列、合計2つの文字列です。(各文字列の長さは80未満で、大文字と小文字のみが含まれます)

出力形式
最初の文字列が2番目の文字列よりも小さい場合は、文字「<」を出力します。

最初の文字列が2番目の文字列より大きい場合は、文字 ">";を出力します。

2つの文字列が等しい場合、文字「=」が出力されます。

サンプル入力

Hellohowareyou
helloHowareyou

サンプル出力

=

アイデア

文字の大文字と小文字を無視して、2つの文字列のサイズを比較します。

最初の文字列が2番目の文字列よりも小さい場合は、文字「<」を出力します。

最初の文字列が2番目の文字列より大きい場合は、文字 ">";を出力します。

2つの文字列が等しい場合、文字「=」が出力されます。

2つの文字列aとbを定義できます。指定された2行の文字列について、各行で1文字と1文字を読み取り、すべての大文字を小文字に変換してから、処理された文字を次のようにスローします。定義した文字列の中で、最後に2つの文字列を比較できます。(注:C ++の文字列は直接比較でき、C言語の文字配列は直接比較できません。string.hヘッダーファイルのstrcmp()関数を使用する必要があります)。

C ++コード1:

#include<iostream>
using namespace std;
int main()
{
    
    
	string a, b;		//定义字符串a,b
	char c;
	while(c = getchar())	//第一行中一个个地字符读取,放到字符串a
	{
    
    
		if(c == '\n') break;	//如果读到回车的话,就说明该行读取结束
		else if(c >= 'A' && c <= 'Z') c += 32;	//如果是大写字母的话,转换为小写字母。ASCII码表中每一个大写字母总是比对应的小写字母的值小32
		a.push_back(c);	//类似于python的函数使用,把字符变量c里面的字符放到字符串a的最后
	}
	while(c = getchar())	//第二行中一个个地字符读取,放到字符串b
	{
    
    
		if(c == '\n') break;	//如果读到回车的话,就说明该行读取结束
		else if(c >= 'A' && c <= 'Z') c += 32;//如果是大写字母的话,转换为小写字母。ASCII码表中每一个大写字母总是比对应的小写字母的值小32
		b.push_back(c);//类似于python的函数使用,把字符变量c里面的字符放到字符串b的最后
	}//字符串可以直接比较,直接比较输出即可
	if(a == b) cout << "=" << "\n";
	else if(a < b) cout << "<" << "\n";
	else cout << ">" << "\n";
	return 0;
}

C ++コード2:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
	char str1[205], str2[205];
	while(cin >> str1 >> str2)
	{
    
    
		int len1 = strlen(str1);
		int len2 = strlen(str2);
		for(int i = 0; i < len1; i++)
		{
    
    
			if(i == 0)
			{
    
    
				if(str1[i] >= 97 && str1[i] <= 122) str1[i] -= 32;
			}
			else
			{
    
    
				if(str1[i] >= 65 && str1[i] <= 90) str1[i] += 32;
			}
		}
		for(int i = 0; i < len2; i++)
		{
    
    
			if(i == 0)
			{
    
    
				if(str2[i] >= 97 && str2[i] <= 122) str2[i] -= 32;
			}
			else
			{
    
    
				if(str2[i] >= 65 && str2[i] <= 90) str2[i] += 32;
			}
		}
		if(strcmp(str1, str2) < 0) cout << "<" << endl;
		else if(strcmp(str1, str2) > 0) cout << ">" << endl;
		else if(strcmp(str1, str2) == 0) cout << "=" << endl;
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/qq_44826711/article/details/113095640