十一届蓝桥杯省赛题目:单词分析(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); }