- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第37讲统计一行字符串中每个小写英文字符出现的次数
第37讲 统计一行字符串中每个小写英文字符出现的次数
类型 必修题
趣味性***
难度**
讨论:通过统计一篇长篇文章中每个汉字使用的频率,基本上可以断定此篇文章是不是某个著名作家写的。也就是说,每个人都有他特定的用字频率谱。每个人之间的用字频率谱与他的指纹、笔迹类似,也是确认文章作者身份的一个标志。此题是解决这一类问题的基础。
准备工作:可以事先将26个英文字符依次存放在一个字符数组中,即将:
‘a’→ch[0]
‘b’→ch[1]
…
‘z’→ch[25]
然后用num[0]来统计(累加)小写字符‘a’出现的次数。
用num[1]来统计(累加)小写字符‘b’出现的次数。
……
用num[25]来统计(累加)小写字符‘z’出现的次数。
一级算法:
(1)将26个英文字符依次存放在一个字符数组中
(2)从键盘输入一行字符存到字符串str中
(3)i=0;
(4)while (字符串未完)
{
让j从0变化到25,如果str[i]与某个ch[j]匹配(即相等),那么num[j]++; ①
i++; ②
}
(5)输出每个字符出现的次数。
其中①和(5)需要进一步求精。
①的二级求精:
让j从0变化到25,如果str[i]与某个ch[j]匹配,那么num[j]++;
for(j=0;j=25;j++)
{
if (ch[j] == str[i])
num[j]++;
}
第(5)步的二级求精:
输出每个字符出现的次数
for (i=0;i=25;i++)
{
printf(“小写字符%c出现的次数是%d\n”,ch[i],num[i]);
}
转换成C语言的程序如下:
1 #includestdio.h
2
3 int main()
4 {
5 char ch[26];
6 int num[26];
7 int i,j;
8 char str[100];
9
10 /*事先将26个英文字符依次存放在一个字符数组ch[]中,将num[]清0*/
11 chr=a;
12 i=0;
13 while (i=25)
14 {
15 ch[i]=chr;
16 num[i]=0;
17 chr=chr+1;
18 i++;
19 }
20 scanf(%s,str);
21 i=0;
22 while(str[i]!=’\0’)
23 {
24 for(j=0;j=25;j++)
25 {
26 if (str[i]==ch[j])
27 num[j]++;
28 }
29 i++;
30
31 }
32 /*输出每个字符出现的次数*/
33 for(i=0;i=25;i++)
34 {
35 printf(字符%c出现的次数是%d\n,ch[i],num[i]);
36 }
37 }
点评查表法的使用
此题的解法中,实际上用两个数组联合起来,构成了一张字符出现次数表(更为简洁的方式是用一个结构数组来构成一张查找表,而不是用两个存放简单变量的数组,参见第8章的8.1节),见表5.1。
表5.1 各字符出现的次数
数组下标
ch[ ]中依次存放英文字母
num[ ]中存放字母出现的次数
0
‘a’
num[0] 存放的字母‘a’出现的次数
1
‘b’
num[1] 存放的字母‘b’出现的次数
2
‘c’
num[2] 存放的字母‘c’出现的次数
3
‘d’
num[3] 存放的字母‘d’出现的次数
…
…
…
24
‘y’
num[24] 存放的字母‘y’出现的次数
25
‘z’
num[25] 存放的字母‘z’出现的次数
每读入文章中的一个字符,即可查找此字符与下标值为多少的ch[i]的数组元素相等(用来确定到底是出现了哪个字符),然后把对应i值的num[i]的值加1——即出现的字符数加1。利用查表法,可以把一些多分支的选择结构转换为循环结构。
问题1. 是否可用查表法来实现所有的多分支结构?如果不能实现所有的多分支结构,那么指出何种情况下可用查表法来实现多分支结构(请参考《代码大全》一书对此问题的讨论)?
问题2. 是否可以删掉第11行、第15行和第17行,而把第5行改为:
char ch[26]=“abcdefghijklmno
您可能关注的文档
- 顺应城市发展探索管理新路.doc
- 第二章电工.ppt
- 无机答案.doc
- 2012高考英语常见语法错误之单句语法填空200题.doc
- 最大的破产是绝望.doc
- 关于6.0QQ空间如何更换皮肤.doc
- 法行为记分.ppt
- 芙蓉楼送辛渐PPT最好课件.ppt
- Photoshop制作怀旧暗调非主流照片效果.doc
- 包豪斯英文简介.ppt
- 职业学院金山湾产教融合示范项目可行性研究报告申请报告.doc
- 职业教育智能实训设施提升可行性研究报告申请建议书YYY.doc
- 富士施乐Apeos C7071_C6571_C5571_C4571_C3571_C3071参考指南操作篇.pdf
- 富士施乐Apeos4620SDF使用说明书用户指南.pdf
- 富士施乐AC7071_C6571_C5571_C4571_C3571_C3071参考指南附录篇.pdf
- 富士施乐AC7071_C6571_C5571_C4571_C3571_C3071参考指南选装装置篇.pdf
- 人工智能科技主题高端简约模板88.pptx
- 人工智能科技主题高端简约模板14.pptx
- 人工智能科技主题高端简约模板55.pptx
- 人工智能科技主题高端简约模板119.pptx
最近下载
- 上海夜间经济的发展特征、存在的主要问题及相关政策建议.docx VIP
- 2万吨年饲料级磷酸脲技改配套生产1万吨年聚磷酸铵环境影响报告书.pdf VIP
- 矿山绩效考核方案.doc VIP
- 2023全国职业教育教师现状调研报告 .pdf VIP
- 昆明市市政排水管道和附属构筑物设计安装图集2013版.docx VIP
- GB 12158-2024防止静电事故通用要求深度解读.pptx VIP
- 点燃艺术的创造火花-引导孩子释放无限艺术潜力.pptx VIP
- YAMAHA MG16_6fx中文说明书.pdf VIP
- 2024国家能源集团新疆哈密能源化工有限公司社会招聘110人笔试参考题库附带答案详解.doc
- 药学专业知识课件.pptx VIP
文档评论(0)