为什么这代码统计出来的个数不对?望有人能解答



```c


#include<stdio.h>
int main()
{
    char str[3][80];
    int i,j,t;
    int a=0;//大写
    int b=0;//小写
    int Number=0;//数字
    int Space=0;//空格
    int Other=0;//其它
    printf("请输入三行字符,每行80个\n");
    for(i=1;i<=3;i++)
    {
        printf("请输入第%d行字符:",i);
        gets(str[i]);
    }
    for(i=1;i<=3;i++)
    {
        for(j=1;(t=str[i][j])!='\0';j++)
        {
        if(t>='A'&&t<='Z')
        {
            a++;//大写
        }
        else if(t>='a'&&t<='z')
        {
            b++;//小写
        }
        else if(t>='0'&&t<='9')
        {
            Number++;
        }
        else if(t==32)
        {
            Space++;
        }
        else
        {
            Other++;
        }
        }
    }
    printf("大写字母个数为:%d\n",a);
    printf("小写字母个数为:%d\n",b);
    printf("数字个数为:%d\n",Number);
    printf("空格个数为:%d\n",Space);
    printf("其他字符个数为:%d\n",Other);
    return 0;
}

运行结果如下:
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/220071505836158.png "#left")

gets(str[i]);
gets()函数遇到空格就不保存了;
还有i从1存,数组长度应该是4,char str[4][80];

#include<stdio.h>
int main() {
    char t;
    int i, j;
    int a = 0; //大写
    int b = 0; //小写
    int Number = 0; //数字
    int Space = 0; //空格
    int Other = 0; //其它
    printf("请输入三行字符,每行80个\n");
    for(i = 1; i <= 3; i++) {
        printf("请输入第%d行字符:", i);
        for(j = 0; (t = getchar()) != '\n'; j++) {
            if(t >= 'A' && t <= 'Z') {
                a++;//大写
            } else if(t >= 'a' && t <= 'z') {
                b++;//小写
            } else if(t >= '0' && t <= '9') {
                Number++;
            } else if(t == ' ') {
                Space++;
            } else {
                Other++;
            }
        }
    }
    printf("大写字母个数为:%d\n", a);
    printf("小写字母个数为:%d\n", b);
    printf("数字个数为:%d\n", Number);
    printf("空格个数为:%d\n", Space);
    printf("其他字符个数为:%d\n", Other);
    return 0;
}