前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【优秀题解】字符串对比

【优秀题解】字符串对比

作者头像
编程范 源代码公司
发布2018-07-24 17:08:43
4170
发布2018-07-24 17:08:43
举报

解题思路:

方法一,串长不等,直接输出类别为1;再用字符串比较函数strcmp,若两串相等就输出类别为2,若不等,就将两串内的字符改变成小写字母,再用strcmp比较,若相等,就输出类别为3,若仍然不等,类别为4。

方法二,当串长相等,先设置类别为2,假设两串相等,在随后搜寻串内字符过程中,若发现对应字符不等,再假设当大小写无关时,两串相等,设置类别为3,但是随后判断两串中对应字符的距离:若不等于32,两串显然不等,设置类别为4,并停止搜寻随后的字符。 注意事项: 用gets(a)、gets(b)无法正常获取输入,只能改用scanf("%s%s",&a,&b)。(这里a,b是两个之间可以不换行的字符串) 参考代码:

方法一

#include<stdio.h>

#include<ctype.h>

#include<string.h>

int main(){

char a[11],b[11];

int la,lb,i;

scanf("%s%s",a,b);

la=strlen(a);

lb=strlen(b);

if(la!=lb) printf("1\n");//串长不等

else{

if(!strcmp(a,b)) printf("2\n");//两串相等

else{

for(i=0;i<la;i++){

a[i]=tolower(a[i]);

b[i]=tolower(b[i]);

}//串内字符转换成小写

if(!strcmp(a,b)) printf("3\n");//小写串相等

else printf("4\n");//两串不等

}

}

return 0;

}

方法二

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int main(){

int la,lb,i,f;

char a[11],b[11];

scanf("%s%s",a,b);

la=strlen(a);

lb=strlen(b);

if(la!=lb) printf("1");//串长不等

else{//假设两串相等

for(f=2,i=0;i<la;i++){

if(a[i]!=b[i]){//若对应字符不等

f=3;//假设当大小写无关时两串相等

if(32!=abs(a[i]-b[i])){//若对应两字符距离不等于32

f=4;//两串一定不等

break;

}

}

}

printf("%d",f);

}

return 0;

}

本文出自我站“左嘉”大神,欢饮大家去撩

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程范 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档