想问下 C 数组学习时遇到的字符统计问题

一篇文章共三行,要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
包含换行符,但最后一行末尾不是换行符。

测试说明
平台会对你编写的代码进行测试:

注意:最后一行不以换行符结尾
按照大写字母,小写字母,数字,空格,其他的顺序输出,以空格隔开
测试输入:

1sj fhk jshf * &^Y UFU
ks dfj 896G GCU55^&@$#@
*(^)LJ"ksod 8769dslnkk
预期输出:
10 24 10 11 16

#include<stdio.h>
#include<string.h> 
int main()
{
    int i,j;
    int a,b,c,d,e;//英大,小,数字,空格,其他
    char v[3][200];
    a=b=c=d=e=0;
    for(i=0;i<3;i++)
    {
        gets(v[i]);
        for(j=0;j<strlen(v[i]);j++)
        {
            if     (v[i][j]>='A'&&v[i][j]<='Z') a++;
            else if(v[i][j]>='a'&&v[i][j]<='z') b++;
            else if(v[i][j]>='0'&&v[i][j]<='9') c++;
            else if(v[i][j]==' ')                d++;
            else                                e++;
        }
    }
    printf("%d %d %d %d %d",a,b,c,d,e);
    return 0;
 } 



img

测试输入:
1sj fhk jshf * &^Y UFU
ks dfj 896G GCU55^&@$#@
*(^)LJ"ksod 8769dslnkk
这里输入的其他字符就14个,题目里输出应该是错误的16.

看不出任何问题,程序是没有问题的。