原题链接
蓝桥杯2020年第十一届省赛真题-单词分析 - C语言网 (dotcpp.com)
思路分析:
第一步:建立两个字符数组,arr 数组负责存入数据,count 数组负责计数。
第二步:count 数组里面寻找最大值。
第三步:遍历count 数组找到符合条件的数据输出break 跳出循环即可。
代码实现:
字符a 的Ascll 码值是97,所以 a - a = 0,b - a = 1 ...依次类推我们可以计算出count 数组。
用字符函数要记得包含 #include<string.h> 头文件。
字典序就相当于字母表,abcdefg,也就是说字符在字母表中越靠前就越小。
#include<stdio.h>
#include<string.h>
int main()
{
char arr[1001] = { 0 }, str[27] = "abcdefghijklmnopqrstuvwxyz";//长度设为27是因为还要有个位置放 \0
scanf("%s", arr);
int len = strlen(arr), i = 0, count[26] = { 0 }, max = 0;
for (i = 0; i < len; i++)
{
count[arr[i] - 'a']++;//计算字符
}
max = count[0];
for (i = 0; i < 26; i++)
{
if (count[i] > max)//寻找最大值
max = count[i];
}
for (i = 0; i < 26; i++)
{
if (count[i] == max)//判断输出
{
printf("%c\n%d\n", str[i], count[i]);
break;
}
}
return 0;
}