求大神解决这个字母最多统计问题,程序输入好像有问题?

#include
#include
int main()
{
int i, max = 0, m, l;
char c;
int check[26] = {0};
scanf("%d", &m);
for(l = 0; l < m; l++)
{
scanf("%c", &c);
check[c - 'a'] = check[c - 'a'] + 1;
}

for(i = 0; i < 26; i++)
{
    if(check[i] > check[max])
     {
          max = i;
     }
}

printf("%c", 'a' + max);
return 0;

}


int check[26] = {0};
这样只会初始化第一个元素为0
应该
for (int i = 0; i < 26; i++) check[i] = 0;

没看出问题,我试了几个运行正确;你输入字符的时候是否输入了空格,不要输入空格或者其它,连续输入字母。

当你第一个   
scanf("%d", &m);
后面要加
 getchar();
 否则:
    for(l = 0; l < m; l++)
    {
        scanf("%c", &c); //c 第一次就会等于10('\n' ascii 值10);
        check[c - 'a'] = check[c - 'a'] + 1; //check[10 - 'a'] 后果可能未知的错误
            }
#include<stdio.h>
int main()
{
    int i, max = 0, m, l;
    char c;
    int check[26] = {0};
    scanf("%d", &m);
    getchar();
    for(l = 0; l < m; l++)
    {
        scanf("%c", &c);
        check[c - 'a'] = check[c - 'a'] + 1;
    }

    for(i = 0; i < 26; i++)
    {
        if(check[i] > check[max])
        {
            max = i;
        }
    }

    printf("%c", 'a' + max);
    return 0;

}

楼上正解,scanf()执行完之后,回车键还在缓冲区的,这样下一次再执行scanf()回车键就被写入到字符中了,应该使用getchar()把缓冲区的回车键剔除才行。