英文大小写不敏感之字符串比较

发布于:2024-12-08 ⋅ 阅读:(173) ⋅ 点赞:(0)

 给定两个字符串,判定其是否相等。字符串相等的意义基于类似于strcmp函数,除了比较时忽略大小写,例如”999abc”和”999ABC”是相等的字符串。

输入

 一行输入,包括由空格分开的两个字符串,字符串本身不含空格,字符串长度均不超过100

输出

 如果字符串相等,输出一行”EQUAL”,否则输出一行”NOT EQUAL”

样例输入 复制
999abc 999ABC
样例输出 复制
EQUAL

 

 

 

#include<stdio.h>
#include<string.h>

int main(void)
{
    char s1[100];
    char s2[100];
    scanf("%s",s1);
    scanf("%s",s2); 
    int i=0;
    int len1=strlen(s1);

    int len2=strlen(s2);

    int flag=1;
    if(len1!=len2)
    {
        flag=0;
    }
    
    while(s1[i]!='\0'&&s2[i]!='\0')
    {
    if(s1[i]>96&&s1[i]<123)
    {
    	if(s2[i]!=s1[i]-32&&s2[i]!=s1[i])
    	{
    		flag=0;
		}
	}else if(s1[i]>64&&s1[i]<91)
	{
		if(s2[i]!=s1[i]&&s2[i]!=s1[i]+32)
		{
			flag=0;
		}
	}else{
		if(s1[i]!=s2[i])
		{
			flag=0;
		}
	}
        i++;
    }
   if(flag==1)
   {
       printf("EQUAL");
   }else{
       printf("NOT EQUAL");
   }
}

尤其要注意1230bc和123Pbc的情况

像下面这样写就不行

#include<stdio.h>
#include<string.h>

int main(void)
{
    char s1[110];
    char s2[110];
    scanf("%s",s1);
    scanf("%s",s2); 
    int i=0;
    int len1=strlen(s1);

    int len2=strlen(s2);

    int flag=1;
    if(len1!=len2)
    {
        flag=0;
    }
    
    while(s1[i]!='\0'&&s2[i]!='\0')
    {
    
            if(s1[i]!=s2[i]&&s1[i]!=s2[i]-32&&s2[i]!=s1[i]-32)
        {
            flag=0;
        }
    
        i++;
    }
   if(flag==1)
   {
       printf("EQUAL");
   }else{
       printf("NOT EQUAL");
   }
}

 


网站公告

今日签到

点亮在社区的每一天
去签到