问题描述
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:
1:两个字符串长度不等。比如 Beijing 和 Hebei
2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。
1:两个字符串长度不等。比如 Beijing 和 Hebei
2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing
编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。
输入格式
包括两行,每行都是一个字符串
输出格式
仅有一个数字,表明这两个字符串的关系编号
样例输入
BEIjing
beiJing
样例输出
3
1 /* 2 2020年3月25日15:22:12 3 蓝桥杯习题 4 问题描述 5 给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 6 1:两个字符串长度不等。比如 Beijing 和 Hebei 7 2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing 8 3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing 9 4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如 Beijing 和 Nanjing 10 编程判断输入的两个字符串之间的关系属于这四类中的哪一类,给出所属的类的编号。 11 输入格式 12 包括两行,每行都是一个字符串 13 输出格式 14 仅有一个数字,表明这两个字符串的关系编号 15 样例输入 16 BEIjing 17 beiJing 18 样例输出 19 3 20 */ 21 22 /* 23 分析: 24 长度是否相等: 25 1.不等 ———————————— 情况1 26 2.相等 27 1)对应字符完全一致————— 情况2 28 2)不区分大小写 29 a.完全一致 ——————— 情况3 30 b.不一致 ————————情况4 31 */ 32 33 #include<iostream> 34 #include<string> 35 #include<cstring> 36 #include<ctype.h> 37 using namespace std; 38 39 int main() 40 { 41 string str1,str2; 42 while(cin >> str1 >> str2) 43 { 44 int len1 = str1.length(); 45 int len2 = str2.length(); 46 char ch1,ch2; 47 int flag = 1; 48 int f = 0; 49 int ff = 0; 50 51 if(len1 != len2) 52 { 53 f = 1; 54 cout << '1' << endl; 55 } 56 else 57 { 58 for(int i = 0; i < len1 ; i ++) 59 { 60 ch1 = tolower(str1[i]); 61 ch2 = tolower(str2[i]); 62 if(str1[i] != str2[i]) 63 { 64 flag = 0; // 不为情况3 65 if(ch1 != ch2) 66 { 67 cout << '4' << endl; 68 ff = 1; //为情况四 69 break; 70 } 71 } 72 } 73 74 } 75 if(flag == 1 && f == 0 && ff ==0) 76 cout << '2' << endl; 77 else if(flag ==0 && f == 0 && ff ==0) 78 cout << '3' << endl; 79 } 80 return 0; 81 }
本题代码自己写的比较烂,希望大佬指正。
查了个关于字母大小写的方法,汇总如下:
1 /* 2 2020年3月25日15:39:24 3 在做字符串类型的题目是经常会遇到大写小小字母的问题 4 在网上找了几种方法 5 汇总如下 6 */ 7 8 #include<iostream> 9 #include<ctype.h> 10 using namespace std; 11 12 char upChar(char c) 13 { 14 return (char)(c - ('a' - 'A')); 15 } 16 char downChar(char c) 17 { 18 return (char)(c + ('a' - 'A')); 19 } 20 21 int main() 22 { 23 /*方法一: 24 使用C语言提供的函数:toupper(),tolower() 25 使用这两个函数需要引入头文件:#include<ctype.h> 26 */ 27 char c = 'A'; 28 char b = 'a'; 29 printf("%c ",toupper(b)); 30 printf("%c ",tolower(c)); 31 32 /*方法二: 33 自己编写转换函数: 34 因为大小写之间的ASCII码值的差值是固定的,因此可以使用‘a’-‘A’来获取差值 35 */ 36 cout << upChar(b) << endl; 37 cout << downChar(c) << endl; 38 39 return 0; 40 }