关于#二维数组#的问题,如何解决?

#include
void bubble_sort(int a[],int n)
{
int i,j,t;
for (i=0;i
{
for (j=0;j
{
if(a[j] > a[j+1]) //从小到大,升序
{
t = a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
int main()
{
int a[6][4],i,j,h;
char stu[21][30]={0};
int nmb[26]; //记录每个姓名开头的人数
for(i=0;i<26;i++)
nmb[i]=0;
printf("请输入20名学生的姓名:\n");
for (i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
gets(stu[i]);
if(stu[i][j] >='a' && stu[i][j]<='z')
nmb[stu[i][j]-'a']++;
else if(stu[i][j] >='A' && stu[i][j]<='Z')
nmb[stu[i][j]-'A']++;
}
}
//显示
for (i=0;i<26;i++)
{
if(nmb[i] > 0)
printf("%c开头的小朋友%d个\n",(char)('A'+i),nmb[i]);
}
return 0;
}
为什么无论输入多少个名字都输不出来东西?

姓名要是英文哦~

#include <stdio.h>
void bubble_sort(int a[], int n) {
    int i, j, t;
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - 1 - i; j++) {
            if (a[j] > a[j + 1]) { //从小到大,升序
                t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }
}
int main() {
    int i = 0 , j = 0 ;
    char stu[20][30] = {0};
    int nmb[26] = {0}; //记录每个姓名开头的人数
    printf("请输入20名学生的姓名:\n");
    for (i = 0; i < 20; i++) {
            gets(stu[i]);
            if (stu[i][j] >= 'a' && stu[i][j] <= 'z')
                nmb[stu[i][j] - 'a']++;
            else if (stu[i][j] >= 'A' && stu[i][j] <= 'Z')
                nmb[stu[i][j] - 'A']++;
    }
    //显示
    for (i = 0; i < 26; i++) {
        if (nmb[i] > 0)
            printf("%c开头的小朋友%d个\n", (char)('A' + i), nmb[i]);
    }
    while(1);
    return 0;
}

运行结果:

img