NOIP学习小站
西安交通大学附属中学航天学校

字符串例题——判断字符串相等

问题:判断两个字符串是否相等。

分析:使用char数组存储字符串,可以直接使用strcmp函数来比较两个字符串;如果使用string存储字符串,那么可以直接使用==来判断是否相等:

#include<iostream>
#include<cstring>
using namespace std;
char str1[1010],str2[1010];
int main()
{
	cin>>str1>>str2;
	if(strcmp(str1,str2)==0)
		cout<<"YES";
	else
		cout<<"NO";
    return 0;
} 
#include<iostream>
#include<string>
using namespace std;
int main()
{
	string str1,str2;
	cin>>str1>>str2;
	if(str1 == str2)
		cout<<"YES";
	else
		cout<<"NO";
    return 0;
} 

其实不使用strcmp函数,直接用for循环依次比较字符串中的字符也能实现:

#include<iostream>
using namespace std;
char str1[1010],str2[1010];
int main()
{
	cin>>str1>>str2;
	int i;
	for(i=0;str1[i] && str2[i];i++){
		if(str1[i] != str2[i]) break;
	}
	if(str1[i]=='\0' && str2[i]=='\0')
		cout<<"YES";
	else
		cout<<"NO";
    return 0;
} 

问题变形:判断两个字符串是否相等(不区分大小写)。

分析:先将两个字符串都转换成小写(或者大写),再比较是否相等。

#include<iostream>
#include<cstring>
using namespace std;
char str1[1010],str2[1010];
int main()
{
	cin>>str1>>str2;
	//字符串str1转小写 
	for(int i=0;str1[i];i++){
    	if(str1[i]>='A' && str1[i]<='Z'){
    		str1[i] += 'a'-'A';
		}
	}
	//字符串str2转小写
	for(int i=0;str2[i];i++){
    	if(str2[i]>='A' && str2[i]<='Z'){
    		str2[i] += 'a'-'A';
		}
	}
	if(strcmp(str1,str2)==0)
		cout<<"YES";
	else
		cout<<"NO";
    return 0;
}