蓝桥杯 C语言 单词分析
题目


题目要求
1.寻找出现最多的字母和这 个字母出现的次数。
2.如果有多个字母出现的次数相等,输出字典序最小的那个。
思路分析
输入方法:
方法一:
1.可以通过数组来记录该单词,并为单词出现的每一个字母做上标记。
2.可以采用for循环将字符串依次输入,直到输入‘\n’为止。
方法二:
通过gets函数输入字符。
3.如何将字母与出现次数相连接起来?
可以采用双for循环模式,判断ch[i]是否与ch[j]相等,相等则count+1。
4.如何确定已经判断过的字母不会进行重复判断?
可以采取双重for循环与if合作进行判断。
5.可使用if进行对count进行判断,使其对应字母次数一直是最大。
代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
int i=0,j=0,k=0,p=0;//i与j分别主宰第一、二重循环,k为计算输入的字符串长度,p记录下标
int maxcount=0;//最大次数
int count=1;//次数,次数必须为1是因为ch[i]已经出现过一次
char ch[1000];
scanf("%s",&ch);//另一种输入方法:gets(ch);
k=strlen(ch);
for(i=0;i<k;i++)
{
for(j=i+1;j<k;j++)
{
if(ch[i]=='/')//当i是已经出现过的字母则无须再次计算
{
break;
}
if(ch[i]==ch[j])
{
ch[j]='/';
count++;
}
}
if(maxcount<count)
{
maxcount=count;
p=i;
}
count=1;
}
printf("重复最多的字母为%c,\n重复次数为%d",ch[p],maxcount);
return 0;
}
运行结果

