代码目标:判断如: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:利用循环语句中的判断语句给变量赋值,有可能在第一满足条件,值被赋予了,但后面的不满足,但变量值依然被改变了,所以应该有分支结构。
新闻热点
疑难解答