十一届蓝桥杯省赛题目:单词分析(C语言实现)

1.贴题目: 2.审题与思考: 审题:找出一串小写字符串中 出现频率最高的字母,如果有相同次数的,则按字母排序顺序输出靠前那个! 拆解:首先获取每个字母出现的次数,然后比较谁出现次数最多,如果出现相同次数可以直接比较字母的ascii码。 3.代码实现:(注释已经够清晰了,自己跟着思考即可)

#include "stdio.h"
#include "string.h"
int main(){
          
   
//定义简单的哈希表并确定表长为128(因为ASCII码只占一个字节8位)并赋初值为0
    int a[128]={
          
   0};
    char s[1000];
    scanf("%s",s);
    int len=strlen(s);
//max用于更新最大次数,t用于更新对应的字符
    int max = 0;
    char t = 0;
//完成哈希表的建立(即遍历一遍字符串得到值键对)
    for(int i=0;i<len;i++){
          
   
        a[s[i]]++;
        if (max<a[s[i]])
{
          
   //完成最大次数的扫描,以及该情况下对应键的记录
            max = a[s[i]];
            t = s[i];
}//若出现相同次数利用ASCII码来进行判断,小的记录下来
        else if (max==a[s[i]]){
          
   
            if (t>s[i])
    {
          
   
                t = s[i];
    }
    
}
}//最后进行字符以及对应次数的输出即可。
    printf("%c
%d",t,max);
}
经验分享 程序员 微信小程序 职场和发展