999666123 2021-12-11 11:56 采纳率: 100%
浏览 20
已结题

判断字符串中出现最多的字母及个数(代码存在问题)

#include<stdio.h>
#include<string.h>
int main()
{
char a[100];
int f[26];
int i,len,max=0;
gets(a);
for(i=0;i<26;i++)
{
f[i]=0;
}
len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i]>='a'&&a[i]<='z')
{
f[a[i]-'a']++;
}
}
for(i=0;i<len;i++)
{
if(a[i]>='A'&&a[i]<='Z')//属于26个大写字母
{
f[a[i]-'A']++;//a-'A'表示用差值作为下标
}
}
for(i=0;i<26;i++)
{
if(f[i]>max)
max=f[i];
}
for(i=0;i<26;i++)
{
if(max==f[i])
{
if(a[i]>='a'&&a[i]<='z')
printf("%c %d times\n",i+'a',max);

        else if(a[i]>='A'&&a[i]<='Z')
        printf("%c %d times\n",i+'A',max);
    }
    
}
return 0;

}
//这个代码有问题,例如:在“zoo”这个单词时没有输出,该怎么改正呢?在源代码上改正一下,万分感谢指教!谢谢了

  • 写回答

3条回答 默认 最新

  • a5156520 2021-12-11 12:19
    关注

    主要是个问题,就是存放字母的数组小了,因为有大小写52个字母,所以f数组要52,下面是一个修改:

    
    #include<stdio.h>
    #include<string.h>
    int main()
    {
        char a[100];
        int f[52];
        int i,len,max=0;
        gets(a);
        
        for(i=0;i<52;i++)
        {
            f[i]=0;
        }
        
        len=strlen(a);
        
        for(i=0;i<len;i++)
        {
            if(a[i]>='a'&&a[i]<='z')
            {
                f[a[i]-'a']++;
            }
            if(a[i]>='A'&&a[i]<='Z')//属于26个大写字母
            {
                f[a[i]-'A'+26]++;//a-'A'表示用差值作为下标
            }
        }
        
    
        
        for(i=0;i<52;i++)
        {
            if(f[i]>max){
                max=f[i];
                printf("max=%d,i=%d\n",max,i);
            }
                
        }
        
        for(i=0;i<52;i++)
        {
            if(max==f[i])
            {
    
                if(i>26){
                    printf("%c %d times\n",i+'A'-26,max);    
                }else{
                    printf("%c %d times\n",i+'a',max);    
                }
            
            }        
        }
        
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 修改了问题 12月11日
  • 创建了问题 12月11日

悬赏问题

  • ¥60 用r语言进行数据分析
  • ¥20 关于游戏c++语言代码问题
  • ¥15 如何制作永久二维码,最好是微信也可以扫开的。(相关搜索:管理系统)
  • ¥15 delphi indy cookie 有效期
  • ¥15 labelme打不开怎么办
  • ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
  • ¥15 免费的电脑视频剪辑类软件如何盈利
  • ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
  • ¥15 pycharm中导入模块出错
  • ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。