判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等

#判断两个由大小写字母和空格组成的字符串在忽略大小写,且忽略空格后是否相等

#include 
#include 
#include 
int main()
{
    char a[1000],a1[1000],b[1000],b1[1000];
    int i,j=0;
    gets(a);
    gets(b);
    int n1=strlen(a),n2=strlen(b);
    for (i=0;iif (a[i]>='A'&&a[i]<='Z')
            a1[j++]=a[i]+32;
        else if (a[i]>='a'&&a[i]<='z')
            a1[j++]=a[i];
    }
    a1[j]='\0';
    j=0;
    for (i=0;iif (b[i]>='A'&&b[i]<='Z')
            b1[j++]=b[i]+32;
        else if (a[i]>='a'&&a[i]<='z')
            b1[j++]=b[i];
    }
    b1[j]='\0';
    int res;
    res=strcmp(a1,b1);
    if (res==0)
        printf("YES");
    else
        printf("NO");

    return 0;
}



输入A,a后输出的是NO
我的思路是假如数组中内容是字母则赋值到新数组,并进行大小写转换
有劳指点一下哪里错了

第24行的a[i]改为b[i]即可。修改如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char a[1000],a1[1000],b[1000],b1[1000];
    int i,j=0;
    gets(a);
    gets(b);
    int n1=strlen(a),n2=strlen(b);
    for (i=0;i<n1;i++)
    {
        if (a[i]>='A'&&a[i]<='Z')
            a1[j++]=a[i]+32;
        else if (a[i]>='a'&&a[i]<='z')
            a1[j++]=a[i];
  
    }
    a1[j]='\0';
    printf("a1=%s\n",a1); 
    j=0;
    for (i=0;i<n2;i++)
    {
        if (b[i]>='A'&&b[i]<='Z')
            b1[j++]=b[i]+32;
        else if (b[i]>='a'&&b[i]<='z')
            b1[j++]=b[i];

    b1[j]='\0';
    printf("b1=%s\n",b1); 
    int res;
    res=strcmp(a1,b1);
    if (res==0)
        printf("YES");
    else
        printf("NO");
 
    return 0;
}
 
 
 

img