解题思路:
参考流程图。
过程讲解:
先判断两个字符串是否等长,不等长输出1,等长进入第二步;
判断是否完全相等,完全相等则输出2,不完全相等则进入第三步;
判断是大小写区别还是字母区别,大小写区别输出3,字母区别输出4;
其中可以设置一个默认的flag标记为2,这样可以简化程序工作,当然也可以设置一个其他的默认值
注意事项:
1.scanf和gets的区别,scanf会吞噬内存区的一个回车,而gets不会,所以其样例中会出现一个字符串后一个回车再出现字符串,切记这里使用gets的时候要注意去除后面的回车(我就是这里卡了很久)
2.可以利用函数返回值的特性。
参考代码:
#include<bits/stdc++.h> #define max 11 using namespace std; int select(char a[],int n,char b[],int m) { int flag=2; //设置默认值flag=2 if(n!=m) { flag=1; //如果长度不等则返回1 return flag; } else { for(int i=0; i<n; i++) { if(a[i]!=b[i]) { if(a[i]>='A' && a[i]<='Z') { //将大小写转换,至双方全部变成小写字母 a[i]=a[i]+32; } else if(b[i]>='A' && b[i]<='Z') { b[i]=b[i]+32; } if(a[i]==b[i]) { //变成小写字母之后如果两个字符串任然相等则返回3 flag=3; return flag; } else if(a[i]!=b[i]) { //变成小写字母之后如果两个字符 -- flag=4; //串任然不相等则说明字母不同,此时返回4 return flag; } } } } return flag; //上面一切条件都不满足,则说明两字符串完全相等,返回默认值2 } int main() { char a[max],b[max]; int n,m; scanf("%s%s",a,b); //可以用这样的输入直接让sacnf吃掉那个回车 n=strlen(a); m=strlen(b); cout<<select(a,n,b,m)<<endl; //利用返回值直接输出 return 0; }
0.0分
9 人评分
#include <iostream> #include <string> using namespace std; int main() { string str1, str2; while (cin >> str1 >> str2) { if (str1.length() != str2.length()) { cout << 1; } else { if (str1 == str2)//这里可以用str1.compare(str2)替换 { cout << 2; } else { for (int i = 0; i < str1.length(); ++i)//把str1和str2字符串里面的每一个元素都转换成小写字母 { if (str1[i] >= 'A' && str1[i] <= 'Z') str1[i] = str1[i] + 32; if (str2[i] >= 'A' && str2[i] <= 'Z') str2[i] = str2[i] + 32; } if (str1 == str2) { cout << 3; } else { cout << 4;
bfyx020129 2022-01-09 16:41:08 |
用string和 if else硬刚就完了