原题链接:蓝桥杯基础练习VIP-字符串对比
解题思路:
参考流程图。
过程讲解:
先判断两个字符串是否等长,不等长输出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分
6 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复