#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无用
悬赏问题
- ¥15 对于知识的学以致用的解释
- ¥50 三种调度算法报错 有实例
- ¥15 关于#python#的问题,请各位专家解答!
- ¥200 询问:python实现大地主题正反算的程序设计,有偿
- ¥15 smptlib使用465端口发送邮件失败
- ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
- ¥15 对于squad数据集的基于bert模型的微调
- ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
- ¥20 steam下载游戏占用内存
- ¥15 CST保存项目时失败