#include<stdio.h>
#include<string.h>
void main()
{ char a[100];
int zimu[26], b[26] = {0};
int i, chang, more = 0,e;
scanf_s("%d", &e);
scanf_s("%s",a,100);
for (i = 0; i < 26; i++)
{
zimu[i] = 0;
}
chang = strlen(a);
for (i = 0; i < chang; i++)
{
if (a[i] >= 'a' && a[i] <= 'z')
zimu[a[i] - 'a']++;//碰到一样的小写字母,则该字母所对应的序号加一
}
for (i = 0; i < chang; i++)
{
if (a[i] >= 'A' && a[i] <= 'Z')
zimu[a[i] - 'A']++;
}
for (i = 0; i < 26; i++)
{
if (zimu[i] > more)
more = zimu[i]; //逐个比较每个字母出现次数多少,找到最多的字母序号
}
for (i = 0; i < 26; i++)
{
if (more == zimu[i])
{
b[i] = i;
printf("%c\n", i + 'a');
break;
}
}
}
给定字符串,求出现次数最多的那个字母及次数,如有多个重复则输出最先出现的
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 技术专家团-小桥流水 2021-11-15 23:10关注
你这代码能找到出现最多的字母,但是这个字母不一定是最先出现的。因为你的字母是按照字母表顺序排放的,而不是出现顺序排放的。
代码修改如下:#include<stdio.h> #include<string.h> void main() { char a[100]; int zimu[26]; char b[26] = {0}; int i, chang, more = 0,e; int j,nmb = 0; //这里额外定义一个变量 char ch ; //额外定义一个字符变量 scanf_s("%d", &e); //这个e是干啥用的? scanf_s("%s",a,100); for (i = 0; i < 26; i++) { zimu[i] = 0; } chang = strlen(a); for (i = 0; i < chang; i++) { if (a[i] >= 'A' && a[i] <= 'Z') ch = a[i] + 32; else ch = a[i]; //判断ch是否已经记录 for (j=0;j<nmb;j++) { if(ch == b[j]) break; } //如果没有出现过,次数设为1 if(j==nmb) { b[nmb] = ch; zimu[nmb] = 1; nmb++; }else zimu[j]++; } for (i = 0; i < 26; i++) { if (zimu[i] > more) more = zimu[i]; //逐个比较每个字母出现次数多少,找到最多的字母序号 } for (i = 0; i < 26; i++) { if (more == zimu[i]) { //b[i] = i; printf("%c\n", b[i]); break; } } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
- ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
- ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
- ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
- ¥15 python爬取bilibili校园招聘网站
- ¥30 求解达问题(有红包)
- ¥15 请解包一个pak文件
- ¥15 不同系统编译兼容问题
- ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
- ¥30 数字电源对DSP芯片的具体要求