问题:判断两个字符串是否相等。
分析:使用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; }