C/C++编程学习 - 第9周 ① 忽略大小写的字符串比较

题目链接

题目描述

一般我们用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;
}

猜你喜欢

转载自blog.csdn.net/qq_44826711/article/details/113095640