- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法与编程作业
第一题
题目
题1. 统计字母的使用频率
一、题目:统计字母的使用频率
二、目的与要求
1. 目的:
通过编写程序统计字母的使用频率,培养学生综合利用C语言进行程序设计的能力,熟悉字符串的操作方法,加强函数的运用,提高软件系统分析能力和程序文档建立、归纳总结的能力。
2. 基本要求:
1)要求用C语言编程,在Visual C++环境下调试完成;
2)要求按照程序功能分成几个功能模块来实现,各个功能模块分别使用函数来完成;
3)要求应用本课所讲授的程序设计语言知识来解决问题
三、设计方法和基本原理
1. 课题功能描述
本程序的功能,就是要统计英文字母的使用频率。
2. 问题详细描述
为统计英文字母的使用频率,输入一个不包括空格的由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率,不区分大小写。最后按使用频率从大到小输出字母(小写字母)和使用频率(出现的次数)。
3. 问题的解决方案
按照程序要求,本程序应采用模块化设计方法,设计几个功能模块。例如(仅供参考):
将字符串中的大写字母转换为小写字母
统计输入的字符串中字母的使用频率
按使用频率从大到小进行排序
主函数中控制输入、函数调用和输出。
四、主要技术问题的描述
根据三的分析,主要问题在于:
1) 为统计字母的使用频率,定义一个长度为26的int数组存放所统计的各个字母的使用频率。
2) 在统计字母的使用频率时,不要使用if语句或switch语句,利用字母的ASCII码与数组元素下标之间的关系来求得。
3) 按使用频率从大到小进行排序时,建议使用指针数组更为方便。
五、创新要求
实现程序功能后,可进行创新设计:
1) 使用多文件,即主函数和各个函数分别存放在不同的.c文件中,在头文件中进行函数原型声明。
2) 读入一篇英文文档,并对其进行字母频率分析。
解决方案(流程图)
开始
开始
输入
输入英文句子(字符串)
将字符串中的小写字母转换为大写字
将字符串中的小写字母转换为大写字母
统计输入的字符串中字母的使用频率
统计输入的字符串中字母的使用频率
按使用频率从大到小进行排序
按使用频率从大到小进行排序
输出字母
输出字母排序结果与频率
结束
结束
源代码
#includestdio.h#includectype.h#includestring.hint change(char *b)//将字符串中的小写字母转换为大写字母{?int n,len;?len=strlen(b);?for(n=0;nlen;n++)?b[n]=tolower(b[n]);?return 0;}int count(char *b,char *w,int *a)//统计输入的字符串中字母的使用频率{??? int n,m,len;??? len=strlen(b);??? for(m=0;mlen;m++)??????? for(n=0;n26;n++)??? {??????? if(b[m]==w[n])??????????? a[n]++;??? }??? return 0;}int order(char *w,int *a)//按使用频率从大到小进行排序{??? int n,m,t1;??? char t;??? for(n=0;n25;n++)??????? for(m=0;m25-n;m++)??????? if(a[m]a[m+1])??? {??????? t=w[m],t1=a[m];??????? w[m]=w[m+1],a[m]=a[m+1];??????? w[m+1]=t,a[m+1]=t1;??? }??? return 0;}int main()//主函数中控制输入、函数调用和输出{?char w[26];?int n,a[26];?for(n=0;n26;n++)??? {???????? w[n]=a+n;????????? a[n]=0;??? }?char b[200];?gets(b);?change(b);?count(b,w,a);?order(w,a);?for(n=0;n26;n++)??? printf(%d %c\n,a[n],w[n]);??? return 0;}
运行结果
主要函数描述
按照程序要求,本程序应采用
您可能关注的文档
最近下载
- 黄磷尾气在循环流化床锅炉中的掺烧使用介绍.PDF VIP
- 静脉输液安全隐患及防范措施.pptx VIP
- 碗扣钢管楼板模板支架计算书97027.doc VIP
- Boss Roland逻兰ME-90B 贝斯综合效果器[Simplified Chinese] ME-90B Reference Manual 说明书用户手册.pdf
- 玩转手机银行APP.doc VIP
- 征信报告模板详细版带水印可编辑2025年9月新版.pdf VIP
- 征信电子版PDF个人信用报告简版2024年12月最新版可编辑带水印模板.pdf VIP
- 征信详细版纸质个人信用报告2024年12月版可编辑带水印.pptx VIP
- 羽毛球单双打简易规则和图解.doc VIP
- 第1讲职业生涯规划概论.ppt VIP
原创力文档


文档评论(0)