这个问题为什么不正确呢? 求教

图片说明

 #include<stdio.h>
int main()
{
    int num=1,i,j;
    char ch[100];
    gets(ch);
    for(i=1;ch[i]!='\0';i++)
    {
        if(ch[i]<='z'&& ch[i]>=' ')
        {
            num=num+1;
            for(j=0;j<i;j++)
            {
                if(ch[i]==ch[j])
                {
                    num=num-1;
                }
            }
        } 

    }
    printf("%d\n",num);
    return 0;
}

如果问题得到解决,请点我回答左上角的采纳,谢谢

是有多少不同的字符,相同的算1个,而不是有多少字符。

#include<stdio.h>
int main()
{
    int arr[128];
    for (int i = 0; i < 128; i++)
    {
        arr[i] = 0;
    }
    char ch;
    while ((ch = getchar()) != '\n')
        arr[ch] = 1;
    int cnt = 0;
    for (int i = 0; i < 128; i++)
        if (arr[i]) cnt++;
    printf("%d\n", cnt);
    return 0;
}

图片说明