题目描述
一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按 ASCII 码值大小比较),直到出现不同的字符或遇到’\0’为止。如果全部字符都相同,则认为相同;如果出现不相同的字符,则以第一个不相同的字符的比较结果为准(注意:如果某个字符串遇到’\0’,而另一个字符串还未遇到’\0’,则前者小于后者)。
但在有些时候,我们比较字符串的大小时,希望忽略字母的大小,例如"Hello"和"hello"在忽略字母大小写时是相等的。请写一个程序,实现对两个字符串进行忽略字母大小写的大小比较。
输入格式
输入为两行,每行一个字符串,共两个字符串。(每个字符串长度都小于 80 且只包含大小写字母)
输出格式
如果第一个字符串比第二个字符串小,输出一个字符"<";
如果第一个字符串比第二个字符串大,输出一个字符">";
如果两个字符串相等,输出一个字符"="。
Sample Input
Hellohowareyou
helloHowareyou
Sample Output
=
思路
忽略字母的大小写,比较两个字符串的大小。
如果第一个字符串比第二个字符串小,输出一个字符"<";
如果第一个字符串比第二个字符串大,输出一个字符">";
如果两个字符串相等,输出一个字符"="。
扫描二维码关注公众号,回复:
12316760 查看本文章
可以定义两个字符串a,b,对于给出的两行字符串,每一行我们都进行一个字符一个字符的读入,把所有的大写字母变成小写字母,再把处理过的字符扔到我们定义的字符串中,最后比较两个字符串就行了。(注: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;
}