大大怪的一亩三分地 2021-11-30 01:01 采纳率: 100%
浏览 581
已结题

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

给出一个单词,找到出现最多的字母和这 个字母出现的次数。
输入描述输入一行包含一个单词,单词只由小写英文字母组成。对于所有的评测用例,输入的单词长度不超过 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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月12日
  • 已采纳回答 12月4日
  • 创建了问题 11月30日

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器