- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
杭电算法与编程实习报告.
算法与编程实习
实
习
报
告
班级:
姓名:李明
学号第一题
一、题目:
一、题目:统计字母的使用频率
二、目的与要求
1. 目的:
通过编写程序统计字母的使用频率,培养学生综合利用C语言进行程序设计的能力,熟悉字符串的操作方法,加强函数的运用,提高软件系统分析能力和程序文档建立、归纳总结的能力。
2. 基本要求:
1)要求用C语言编程,在Visual C++环境下调试完成;
2)要求按照程序功能分成几个功能模块来实现,各个功能模块分别使用函数来完成;
3)要求应用本课所讲授的程序设计语言知识来解决问题
三、设计方法和基本原理
1. 课题功能描述
本程序的功能,就是要统计英文字母的使用频率。
2. 问题详细描述
为统计英文字母的使用频率,输入一个不包括空格的由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率,不区分大小写。最后按使用频率从大到小输出字母(小写字母)和使用频率(出现的次数)。
3. 问题的解决方案
按照程序要求,本程序应采用模块化设计方法,设计几个功能模块。例如(仅供参考):
l 将字符串中的大写字母转换为小写字母
l 统计输入的字符串中字母的使用频率
l 按使用频率从大到小进行排序
主函数中控制输入、函数调用和输出。
四、主要技术问题的描述
根据三的分析,主要问题在于:
1) 为统计字母的使用频率,定义一个长度为26的int数组存放所统计的各个字母的使用频率。
2) 在统计字母的使用频率时,不要使用if语句或switch语句,利用字母的ASCII码与数组元素下标之间的关系来求得。
3) 按使用频率从大到小进行排序时,建议使用指针数组更为方便。
五、创新要求
实现程序功能后,可进行创新设计:
1) 使用多文件,即主函数和各个函数分别存放在不同的.c文件中,在头文件中进行函数原型声明。
2) 读入一篇英文文档,并对其进行字母频率分析。
二、功能描述
1.程序运行第一步进行模式选择:从屏幕读入一串字母或从文件中读取文章(从屏幕读入时字符串长度不超过200)。
2.读取文章完毕后,统计各个字母的使用频率,并按从大到小的顺序打印出来,同时,对使用次数相同的字母按字母表顺序打印,对使用次数为0的字母不予打印。
(下页流程图)
三、解决方案
四、主要函数描述
1. Main函数:
功能:负责变量的定义、模式的选择及函数的调用。
2.chang函数
功能:负责将大小写字母统一成小写字母后返回小写字母。
3.cal函数
功能:负责统计某一字母的使用频率并输出。
4.fread函数
功能:读入位于e:\\LDK的文档ldk.txt,通过调用函数统计字母频率并相应输出。
5.fprint函数
功能:按字母使用频率从大到小的顺序输出字母及其使用频率。
五、实验心得
通过这次“统计字母频率”算法编程的实习,我学习并掌握了函数的调用、形参为指针或数组的传递方法以及读取文件数据的方法。
同时,在实习过程中,也遇到了许多问题:
在文件调用的过程中,使用课本上的“while(ch!=EOF)”不能实现对文件结尾的判断,造成函数进入死循环,不能及时退出。
解决方法:后来,运用老师讲述的调试方法,发现程序在运行到文档结尾的时候,从文档中读取的值为-1,于是我把判断文档结尾的条件改为了“while(ch!=-1)”,从而使函数正常地跳出了循环。
心得:当自己的程序出现逻辑错误且自己不知道错误的地点时,用调试的方法一步步观察程序的运行方式,就可以发现错误的原因并加以改正。
在输出字母及其使用频率的过成中,曾因为不知道运用转义字符而重新定义了一个数组用来存放a~z的英文字母,在一次翻书的过程中突然看见了转义字符的使用方法,从而使自己的程序大幅度的简化。
虽然这并不属于程序的语法或逻辑错误,但这次经过使我明白了:程序的编译每个人可能都有不同的方法,但方法与方法之间是存在差别的,只有用心思考,才能以最简单明了的方式实现程序的功能。
附录:第一题源程序
#include stdio.h
#define N 200
/*************************************************
函数:chang
功能:判断字母并将大写字母转换为小写字母后返回
入口参数:字符指针
出口参数:相应的小写字母
*************************************************/
void chang(char *p)
{
int i=0;
for(i=0;*(p+i)!=\0;i+
您可能关注的文档
- 杨集中学思想道德教育教材..doc
- 杨树+基于单片机的用户供暖系统设计..doc
- 杨邑中心小学教研教学计划2013~2014学年上4..doc
- 杭二中高二生物期末试卷..doc
- 杨鑫陈荔张彦明电子游戏中的数学建模..doc
- 杭州交通信息化建设的现状..doc
- 杭州下沙高教东区快递市场营销战略策划方案..doc
- 杭州主题婚礼策划..docx
- 杭州上杭通讯数字程控调度系统(NGN-8000型)..doc
- 杭州五校联考数学的理科卷..doc
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)