题目 768. 忽略大小写比较字符串大小
一般我们用 strcmp 可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按 ASCII 码值大小比较),直到出现不同的字符或遇到 \0 为止。
如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准;如果两字符串长度不同,但所有相同位置的字符均相同,则认为较长字符串更大。
在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如 Hello 和 hello 在忽略字母大小写时是相等的。
请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
输入格式
输入为两行,每行一个字符串,共两个字符串。
注意字符串中仅可能包含大小写字母和空格。
输出格式
如果第一个字符串比第二个字符串小,输出一个字符 <。
如果第一个字符串比第二个字符串大,输出一个字符 >。
如果两个字符串相等,输出一个字符 =。
数据范围
每个字符串的长度范围 [1,80]。
输入样例1:
Hello
hello
输出样例1:
=
输入样例2:
How are you
How old are you
输出样例2:
<
用字符串读入 C++
注意 读入一行字符串
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
string s1, s2;
getline(cin, s1);
getline(cin, s2);
for (auto &c : s1)
if (c >= 'a' && c <= 'z') c -= 32;
for (auto &c : s2)
if (c >= 'a' && c <= 'z') c -= 32;
if (s1 < s2) cout << '<' << endl;
if (s1 == s2) cout << '=' << endl;
if (s1 > s2) cout << '>' << endl;
return 0;
}
用字符数组读入 C
#include <cstdio>
#include <cstring>
int main()
{
char a[111], b[111];
fgets(a, 111, stdin);
fgets(b, 111, stdin);
if (a[strlen(a) - 1] == '\n') a[strlen(a) - 1] = '\0';
if (b[strlen(b) - 1] == '\n') b[strlen(b) - 1] = '\0';
for (int i = 0; i < strlen(a); i ++ )
if (a[i] >= 'A' && a[i] <= 'Z')
a[i] += 32;
for (int i = 0; i < strlen(b); i ++ )
if (b[i] >= 'A' && b[i] <= 'Z')
b[i] += 32;
int t = strcmp (a, b);
if (t == 0) puts("=");
else if (t > 0) puts(">");
else puts("<");
return 0;
}