大大怪的一亩三分地 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 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。