解题思路:
方法一,串长不等,直接输出类别为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;
}


点赞(8)
 

0.0分

15 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 6 条评论

难免 1年前 回复TA
@牛 把头文件<stdlib.h>换成<ctype.h>
难免 1年前 回复TA
@1449538719 把strlwr换成tolower,再添加头文件#include <ctype.h>
tcc 2年前 回复TA
@1449538719 strlwr是非标准函数,所以应该不会通过,建议换成tolower
1449538719 2年前 回复TA
#include<stdio.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{
            if(!strcmp(strlwr(a),strlwr(b))) printf("3\n");//小写串相等
            else printf("4\n");//两串不等
        }
    }
    return 0;
}

自己测试没有问题,为什么提交就编译错误呢?
3年前 回复TA
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
main()
{
	char a[100],b[100];
	int m,n;
	
	scanf("%s",&a);
	scanf("%s",&b);
	
	m=strlen(a);
	n=strlen(b);
	
	if(m!=n)
		printf("1\n");
	else
		{
			if(strcmp(a,b)==0)
				printf("2\n");
			else
			{
				tolower(a);	tolower(b);
				if(strcmp(a,b)==0)
					printf("3\n");
				else
					printf("4\n");
			}
		}
}

显示错误60%,那边出错了
当幸福来敲门 3年前 回复TA
妙啊,,头一次知道tolower()这个函数