派大星和海绵宝宝永远是好朋友
2021-11-30 01:01
采纳率: 100%
浏览 216

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

给出一个单词,找到出现最多的字母和这 个字母出现的次数。
输入描述输入一行包含一个单词,单词只由小写英文字母组成。对于所有的评测用例,输入的单词长度不超过 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;
}
以上是我的代码,代码有问题,请求大佬解答!

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

2条回答 默认 最新

  • bekote 2021-11-30 09:31
    最佳回答

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

    #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;
    }
    
    
    评论
    解决 2 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题