首页 > 学院 > 开发设计 > 正文

字符串对比中,if语句的应用及出现的问题

2019-11-06 09:00:19
字体:
来源:转载
供稿:网友

                     代码目标:判断如:Beijing 和 Hebei返回1,beijing和beijing返回2,beijing  和BEIJING返回3,Msn和MSn也返回3,Beijing和Nanjing返回4。

               代码:

#include <iostream>#include<string>using namespace std;int Judge(string a,string b){	int numa = 0,numb=0;	for (int i = 0; i < a.length(); i++)	{		numa += a[i];	}	for (int i = 0; i < b.length(); i++)	{		numb += b[i];	}	if (a.length() != b.length())		return 1;	else if (a.length() == b.length() && numa == numb)//注意条件的选择,numa==numb有两种情况,Beijing 和 Beijing属于2,还有MSn,MsN但属于3	{		int digit1=0;		int flag1 = 0;		digit1=a.length();		for (int i = 0; i < digit1; i++)		{			if (a[i] == b[i])				flag1 = 2;//这是一个陷阱啊,如果不写后面的else,那么像Msn,Mjk都会被输出2,但实际为4,只执行了一次,所以还应该有个else语句			else if (a[i] != b[i])				flag1 = 3;		}		return flag1;	}	else if (a.length() == b.length()&&numa!=numb)	{		int digit2 = 0;		int flag2 = 0;		digit2 = a.length();		for (int i = 0; i < digit2; i++)		{			if ((a[i] - b[i]) == 32||b[i]-a[i]==32)			{				flag2 = 3;			}			else if ((a[i] - b[i]) != 32 || b[i] - a[i] != 32)			{				flag2 = 4;			}		}		return flag2;	}}int main(){	string a,b;	cin >> a>>b;	cout << Judge(a, b) << endl;	system("pause");	return 0;}                                上例中的知识点有: string 类有很多构造函数:string str1="asdqwe";  string str2("dswer");  string str3 (str2, 2);cout << str3 << endl;  str3="wer"   

                                                                                                                    string str3 (str2, 2,2);   那么str3="we"

                                string 类中还有很多重载函数,= +  +=等。

 

                               string可以按数组方式,以下标来访问。还可以用at()函数访问指定的字符

                      上例中应注意的地方有:1:判断条件要清晰

                                                            2:利用循环语句中的判断语句给变量赋值,有可能在第一满足条件,值被赋予了,但后面的不满足,但变量值依然被改变了,所以应该有分支结构。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表