给出一个英文单词,输出出现次数最多的字母,并输出出现的次数

给出一个单词,找到出现最多的字母和这 个字母出现的次数。
输入描述输入一行包含一个单词,单词只由小写英文字母组成。对于所有的评测用例,输入的单词长度不超过 1000。
输出描述输出两行,第一行包含一个英文字母,表示单词中出现得最多的字母是哪 个。如果有多个字母出现的次数相等,输出字典序最小的那个。第二行包含一个整数,表示出现得最多的那个字母在单词中出现的次数。输入输出样例示:
例 1输入lanqiao
输出a 2
示例 2输入longlonglongistoolong
输出o 6
#include <stdio.h>
#include <stdlib.h>
#define N 1000
int main()
{
int i,j,n=1;
char a[N];
gets(a);
//scanf("%s",&a);
//getchar();
for(i=0;i<N;i++)
{
for(j=i+1;j<N;j++)
{
if(a[i]==a[j])
{
n++;
printf("%c\n",a[i]);
printf("%d\n",n);
exit(0);
}
}
//exit(0);

}
return 0;
}
以上是我的代码,代码有问题,请求大佬解答!

代码逻辑上就有问题,是在统计当前出现的字母后续出现的次数,而不是某个字母在单词里出现的次数,也没有出现次数的比较

#include <stdio.h>
#include <stdlib.h>
#define N 1000
int main()
{
int i,j,n=1;
char a[N];
scanf("%s",&a);
int count[26]={0};
char maxa='*';
for(i=0;a[i]!='\0';i++)
{
    count[a[i]-'a']++;
    if(maxa == '*' || count[a[i]-'a']>count[maxa-'a'] || (count[a[i]-'a']==count[maxa-'a'] && a[i] < maxa))maxa=a[i];
}
printf("%c %d",maxa, count[maxa-'a']);
return 0;
}

虽然我不会写c,但是你这逻辑就不对,我觉得应该是第一层for循环一次就新建一个数组,然后第二层for循环如果相同就加入这个数组,循环完再对比每个数组的长度,找出最长的那个。