解题思路:
方法一,串长不等,直接输出类别为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;
}
本文出自我站“左嘉”大神,欢饮大家去撩