数据结构课程设计报告模板1.doc_第1页
数据结构课程设计报告模板1.doc_第2页
数据结构课程设计报告模板1.doc_第3页
数据结构课程设计报告模板1.doc_第4页
数据结构课程设计报告模板1.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南城建学院 高级语言程序设计 软件工程 河 南 城 建 学 院 Henan University of Urban Construction数据结构程序设计课程设计报告学 号: 084413120 姓 名: 陈功亮 专 业:软件工程 题 目: 第九题 指导老师:周二强 仝瑞阳 设计时间:第17周 计算机科学与工程学院2013年12月目录一. 设计目的2二. 设计内容2三概要设计2四详细设计31 . 功能函数的调用关系图32各功能函数的数据流程图43重点设计及编码10五测试数据及运行结果10六调试情况,设计技巧及体会11七参考文献11八附录:源代码11一. 设计目的课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。提高学生适应实际,实践编程的能力。高级语言程序设计课程设计是专为学第一门计算机高级语言的学生设立的,安排该课程设计的目的,就是要通过一次集中的强化训练,使学生能及时地巩固已学的知识,补充未学的但又是必需的内容,进一步提高程序设计的能力。本课程设计将以学生上机进行程序设计为主,教师的适当讲授为辅。利用学到的编程知识和编程技巧,通过布置具有一定难度的程序设计题目,帮助学生熟悉程序编写,及时查究错误,独立完成。二. 设计内容9、用一个字符数组保存一个英文句子,要求:删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间只留一个空格);统计该句子中,单词出现的频率;查找并替换某个单词。三概要设计1功能模块图;2各个模块详细的功能描述。第一部分:删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间留一个空格);第二部分:统计该句子中单词出现的频率;第三部分: 查找并替换某个单词。四 详细设计1 . 功能函数的调用关系图;(题简单的可以不写)2各功能函数的数据流程图;(题简单的可以不写)第一步:删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间留一个空格);流程图设计如下: 第二步:统计该句子中单词出现的频率;流程图设计如下: 第三步:查找并替换某个单词。流程图设计如下:3重点设计及编码。第一步:程序设计#include #include -前两行为包含语句,指的是文件stdio.h,string.h包含 在该C语言语句里,这个编程运行时,要把这两个文件打开char str200; - 定义字符串str (最大的存储量为200个字符)。char tmp200; - 定义字符串tmp (最大的存储量为200个字符)。char frequency200; -定义字符串frequency (最大的存储量为200个字符)。void tz() - 函数tz - 函数tz开始 int i,j,flag,len; -定义整形字符 i,j,flag,len j=0; -给j赋值0 flag=1; -给flag赋值1 len=strlen(str); - 把strlen(str)值赋值给len for(i=0;ilen;i+) -for循环,i为循环基 -for循环,开始 if(stri= &flag=1)-if判断,stri= 并且flag=1 -if条件判断开始 tmpj+=stri;-使用stri给tmpJ+赋值 flag=0;-给flag赋值0 -if条件判断结束 else -else如果上面if条件不符合 if(stri!= ) -if条件判断,判断stri!= -if条件开始 tmpj+=stri; -使用stri给tmpJ+赋值 flag=1; -给flag赋值1 -if条件结束 -for循环,结束 len=strlen(tmp); -把strlen(tmp)值赋值给len j=0; -给j赋值0 if(tmp0!= ) -if条件判断,判断条件是tmp0!= strj+=tmp0; -符合上面条件,使用tmp0给strj+赋值 for(i=1;ilen-1;i+) -for循环,i为循环基 strj+=tmpi; -使用tmpi给strj+赋值 if(tmplen-1!= ) -if条件判断,判断条件tmplen-1!= strj+=tmplen-1; -符合if条件下,使用tmplen-1给strj+赋值 strj=0; -给strj赋值0;printf(ntz result:n%sn,str); -输出符合删除该句子中的前导空格,后导空格,并删除句子中多余的空格;单词之间只留一个空格条件的字符串第二步:程序设计#include #include -前两行为包含语句,指的是文件stdio.h,string.h包含 在该C语言语句里,这个编程运行时,要把这两个文件打开char str200; - 定义字符串str (最大的存储量为200个字符)。char tmp200; - 定义字符串tmp (最大的存储量为200个字符)。char frequency200; -定义字符串frequency (最大的存储量为200个字符)。void tj() -函数tj - 函数tj开始 int i, j, len, k, h, count; -定义整形字符 i,j,len,k,h,count k=0; -给k赋值0 len=strlen(str); -把strlen(str)值赋值给len printf(nfrequency:n); - 输出nfrequency:n for(i=0;ilen;i+) -for循环(赋值;判定;循环) -for循环,开始 j=0; -给j赋值0 count=0; -给count赋值0 while(stri!= &stri!=0) - while循环,循环条件是stri!= 并且stri!=0 tmpj+=stri+; -使用stri+给tmpj+赋值 tmpj=0; -给tmpj赋值为0 for(k=0;klen;k+) -双层for循环i,k为循环基 -for循环,开始 h=0; -给h赋值0 while(strk!= &strk!=0) -while循环 frequencyh+=strk+; -使用strk+给 frequencyh+赋值 frequencyh=0; -给frequencyh赋值0 if(!strcmp(tmp,frequency) - if条件判断,判断条件是!strcmp(tmp,frequency) count+; -count自增相当于count=count+1 -for循环,结束 printf(%s:%dn,tmp,count); -输出每个单词以及他们的个数 -for循环,结束 - 函数tj结束第三步:程序设计#include #include -前两行为包含语句,指的是文件stdio.h,string.h包含 在该C语言语句里,这个编程运行时,要把这两个文件打开char str200; - 定义字符串str (最大的存储量为200个字符)。char tmp200; - 定义字符串tmp (最大的存储量为200个字符)。char frequency200; -定义字符串frequency (最大的存储量为200个字符)。void find() -函数find - 函数find开始 char key200,left200,right200; -定义字符数组key,left,right int len,i,k,h; -定义整形字符 len ,i,k, h k=0; -给整形变量k赋值 printf(ninput the word you want to find:); -输出一个字符串 scanf(%s,key); -给字符串key赋值 len=strlen(str); - 把strlen(str)值赋值给len for(k=0;klen;k+) -for循环,k为循环基 -for循环开始 h=0; -给h赋值0 while(strk!= &strk!=0) -strk!= 而且strk!=0两个条件同时成立,为执行该 while循环的判定条件。 -while循环开始 tmph+=strk+; -使用strk+给tmph+赋值 -while循环结束 tmph=0; -给tmph赋值0 if(strcmp(tmp,key) = 0) -if条件判断,!strcmp(tmp,key)成立 -if条件判断开始 printf(%dn,k); -输出要修改字符所在的下标 printf(ninput the word to replace what you find:); -输出字符串ninput the word to replace what you find: scanf(%s,tmp); -给字符串tmp赋值 len=strlen(key); - 把strlen(key)值赋值给len for(h=0;hk-len;h+) -for循环(赋值;判定;循环) lefth=strh; -使用strh给lefth赋值 lefth=0; -给lefth赋值0 i=0; -给i赋值0 for(h=k;hstrlen(str);h+) -for循环,h为循环基 righti+=strh; -使用strh给righti+赋值 righti=0; -给righti赋值0 str0=0; -给str0赋值0 strcat(str,left); -将left字符串连接到str字符串的后面 strcat(str,tmp); -将tmp字符串连接到str字符串的后面 strcat(str,right); -将right字符串连接到str字符串的后面 printf(nreplaced:n%snn,str); -输出被替换后的字符串str -if条件判断结束 -for循环结束 - 函数find结束五测试数据及运行结果1 正常测试数据(3组)及运行结果;22非正常测试数据(2组)及运行结果。六调试情况,设计技巧及体会1此程序熟练的运用函数调用语句,对数组和字符串的理解深刻,可以满足题目中的“删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间只留一个空格);统计该句子中,单词出现的频率;查找并替换某个单词”的要求。不足:不能重复输入,适用性差;当要替换的单词在句中多次出现时,只会替换第一个,后面的不变;函数调用对于团队来说可以提高编程效率,但却降低了运行效率。改进:用do while改写语句。2.对设计及调试过程的心得体会:通过本次课程设计,让发现子平时在c语言学习中的不足:基础知识不够扎实;对某些函数的作用了解的不清,导致在做设计时,不知该怎么运用;做题时思路不清晰,那道题总是想着怎么写代码,没有真正从宏观的角度分析问题,不能把握大局,好好的去设计程序。说句实话,我觉得本次课程设计的题目对我来说有些勉强,刚开始可以说是毫无头绪,查了很多资料,采取的一些小的进展,幸幸苦苦把程序分析出来,还没来得及高兴,又遇上了作程序框图,然后在网上找了很久的作图软件,摸索着做出了几张图,感觉还是不满意,以后在学习中多多练习,多实践。从这次课程设计真的学到了很多,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时也感觉到自己专业知识掌握的不够,在设计中走了很多弯路,刚开始是根本无从下手,不知道要干嘛,如果平时课余时间多加强对这些专业知识的学习,那么在这次课程设计中将会少走很多的弯路。 假期中我打算对今年所学的知识做一个系统的复习,多做语c语言关的题,争取明年能够参加acm竞赛。此外还要做好c+的预习,发展一些自己的爱好。奋斗吧!骚年!每个明天都不一样!七参考文献1 杨文君,杨柳.C语言程序设计教程M.清华大学出版社. 2010.032 谭浩强. C语言程序设计教程M. 清华大学出版社. 2005.073 谭浩强.C程序设计教程.北京:清华大学出版社.2007.074王岳斌等编著.C程序设计案例教程.北京:清华大学出版社.2006.105徐连信编著,C语言程序设计,清华大学出版社,2005.06八附录:源代码#include #include char str200; char tmp200; char frequency200; void tz() int i,j,flag,len; j=0; flag=1; len=strlen(str); for(i=0;ilen;i+) if(stri= &flag=1) tmpj+=stri; flag=0; else if(stri!= ) tmpj+=stri; flag=1; len=strlen(tmp); j=0; if(tmp0!= ) strj+=tmp0; for(i=1;ilen-1;i+) strj+=tmpi; if(tmplen-1!= ) strj+=tmplen-1; strj=0; printf(ntz result:n%sn,str); void tj() int i, j, len, k, h, count; k=0; len=strlen(str); printf(nfrequency:n); for(i=0;ilen;i+) j=0; count=0; while(stri!= &stri!=0) tmpj+=stri+; tmpj=0; for(k=0;klen;k+) h=0; while(strk!= &strk!=0) frequencyh+=strk+; frequencyh=0; if(!strcmp(t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论