版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告课程设计题目: 文章编辑 学生姓名: 专 业:计算机科学与技术班 级:学 号: 指导教师: 2012年 06月21日目录一、实验题目1二、实验时间、地点1三、实验目的1四、实验要求1五、实现思路21、定义结构体22、主要函数:2六、实现过程4主要代码:4运行结果:10七、实验总结14八、参考文献14一、实验题目文章编辑:输入一页文字,程序可以统计出字母、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;二、实验时间、地点 第十九周,软件楼603三、实验目的本次课程设计的主要目的是综合运用所学的数据结构知识解决一个比较实际问题,侧重对链表、数组、字符串、图、树等相
2、关内容的综合应用,使同学们能进一步熟悉掌握数据结构的基础知识,进一步提升自己的解决问题和编程调试能力,为后续专业课程的学习打下良好的基础。四、实验要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数; (2)统计某一字符串在文章中出现的次数,并输出该次数; (3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。 输出形式:(1)分行输出用户输入的各行字符; (2)分4行输出全部字母数、数字个数、空格个数、文章总字数(3)输出删除某一字符串后的文章; 五、实现思路1、定义结构体 定
3、义结构体 struct line,文本行采用顺序存储,行与行之间采用链式存储2、主要函数:int FindString(LINE * &head,char *str) /*统计str在文章中出现的次数*/求在一行中Str出现的次数的流程图:查找第一个字符,如果有第一个字符即p-datai=str0,设计数器k=0查找这个字符后面的字符与要查找的字符串是否匹配即p-datai+j=strj,如果匹配k+重复第二步,如果k=len2,则查找到,count+;如果没查找到,重新进行第一步开始count=0;h=0;len1=0; len2=strlen(str);p-datai=str0i+k=0;
4、j=0;p-datai+j=strjk+;j+;k=len2count+;i=i+k-1;结束YNYNNYvoid delstringword(char *s,char *str) /*删除字符串*s中的字符串*str*/实现思想:从字符串s中寻找str第一次出现的位置 *p=strstr(s,str);len=strlen(s);i=len-strlen(p)即前i项恰好不含要删除的字符串,将前i项复制到tmp中j=i+strlen(str) 即要删除的字符串在i+1和j之间,将j之后的字符串复制到tmp中将tmp赋给串s,返回s strpi jsfor(m=0;mi;m+)tmpcount
5、+=sm;for(n=j;nlen;n+)tmpcount+=sn;tmp六、实现过程主要代码:#include #include #include #include typedef struct linechar *data;struct line *next;LINE;void Create(LINE * &head) printf (请输入一页文章,以Ctrl+E(E)为结尾(每行最多输入80字符!):n);LINE *p=new LINE; /*首先为链表 建立一个附加表头结点*/ head=p; /*将p付给 表头指针*/ char ch100; while(1) gets(ch);
6、 /*输入字符串!*/ if(strlen(ch)80) printf(每行最多输入80字符); break; if(ch0=5)break; /*如果发现输入 E,则退出输入*/ p=p-next=new LINE; p-data=new charstrlen(ch)+1; /*为结点分配空间 */ strcpy(p-data,ch); if(chstrlen(ch)-1=5) /*除去最后一个控制符 E */ p-datastrlen(ch)-1=0; break; p-next=NULL; /*最后的一个指针为空 */ head=head-next;/*文本字数统计*/int Count
7、_Space(LINE* &head)/统计空格数 LINE *p=head;int asc_space=32;int count=0;int i;int Len;doLen=strlen(p-data);for(i=0;idatai=asc_space)count+;while(p=p-next)!=NULL);return count;int Count_Num(LINE * &head)/统计数字个数 LINE *p=head;int count=0;int Len;int i;doLen=strlen(p-data);for(i=0;idatai=48 & p-datainext)!=
8、NULL);return count; int Count_All_Word(LINE * &head)/统计文章的总字数 LINE *p=head;int count=0;docount+=strlen(p-data);while(p=p-next)!=NULL);return count;int Count_Letter(LINE * &head)/统计字母数 LINE *p=head;int count=0;int Len;int i;doLen=strlen(p-data);for(i=0;idatai=a & p-dataidatai=A & p-datainext)!=NULL);
9、return count;int Find_Word(LINE * &head,char *sch)/统计 sch 在文章中出现的次数LINE *p=head;int count=0;int len1=0;int len2=strlen(sch);int i,j,k;dolen1=strlen(p-data);/当前行的字符数for(i=0;idatai=sch0)k=0;for(j=0;jdatai+j=schj)k=k+1;if(k=len2) count+;i=i+k-1;while(p=p-next)!=NULL);return count; /*特定字符串的删除*/void del_
10、string_word(char *s,char *sch) char *p=strstr(s,sch);char tmp80;int len=strlen(s);int k,kk;int i=len-strlen(p);int j=i+strlen(sch);int count=0;for(k=0;ki;k+)tmpcount+=sk;for(kk=j;kkdata,sch)!=NULL)del_string_word(p-data,sch);while(p=p-next)!=NULL);/*打印输入的文本*/void OutPutTxt(LINE * &head)/向屏幕输出文章 LINE
11、 *p=head;printf(文本文件输出如下:);doprintf(%sn,p-data);while(p=p-next)!=NULL);void Count(LINE * &head)printf(文章统计信息结果如下:n);printf(英文字母数:%dn,Count_Letter(head);printf(空格数: %d n,Count_Space(head);printf(文章中共出现数字:%dn,Count_Num(head);printf(文章出现的汉字和标点(全角)总数: %dn,(Count_All_Word(head)-Count_Num(head)-Count_Spac
12、e(head)-Count_Letter(head)/2);printf(统计文章的总字数: %dn,(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Count_Letter(head)/2);printf(n);void main()LINE *head;char sch20;char ID10;char ch;char tmp_sch20;printf( 文章编辑系统 n);printf( 主菜单如下:n);while(1)printf( *n);printf( 1.新建文本n);printf( 2.浏览输入文本n);prin
13、tf( 3.文本字符统计n);printf( 4.特定字符串的统计n);printf( 5.特定字符串的删除n);printf( 6.退出n);printf( *n);printf(注:请您按关键字代号选择菜单操作!如是第一次操作,务必先选第一步!n);printf(请输入序号:);scanf(%s,ID);while(1)if(strcmp(ID,1)=0)printf(新建文本要覆盖已有文本,是否继续输入?(Y/N)n);getchar();scanf(%c,&ch);system(cls);if(ch=n|ch=N)break;else if(ch=y|ch=Y)Create(head)
14、;break;else if(strcmp(ID,2)=0)system(cls);OutPutTxt(head);break;else if(strcmp(ID,3)=0)system(cls);OutPutTxt(head);printf(n);Count(head);break;else if(strcmp(ID,4)=0)system(cls);printf(请输入要统计的字符串:);scanf(%s,sch);printf(n);OutPutTxt(head);printf(n);printf(出现的次数为: %dn,Find_Word(head,sch);break;else if
15、(strcmp(ID,5)=0)system(cls);printf(请输入要删除的某一字符串:);scanf(%s,tmp_sch);printf(n);OutPutTxt(head);Del_String(head,tmp_sch);printf(删除后);OutPutTxt(head);break;else if(strcmp(ID,6)=0)printf(你确定要退出系统吗?(Y/N)n);getchar();scanf(%c,&ch);system(cls);if(ch=n|ch=N)break;else if(ch=y|ch=Y) exit(0);elsesystem(cls);printf(您输入字母有错,请重新输入!nn);break;运行结果:1、主界面2、新建文本界面3、浏览文本4、文本字符统计5、特定字符串统计6、特定字符串删除七、实验总结 本次课程设计历时一周,所用知识基本上包括了课本所学的知识以及很多有关C+的基础知识,课程设计的过程中自己更更进一步了解了链表,掌握了数据结构的思想与方法,也使我认识到自己在学习编程方面还有很多的不足。自己在编写程序的过程中,不是所有知识一下就想起来的,而是出现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026年湖南省湘教版高中数学概率统计模拟试卷
- 2025-2026年考研政治毛泽东思想和中国特色社会主义理论体系概论模拟试题
- 2025-2026年广东省人教版小学五年级语文上册第7单元综合测试卷
- 2025-2026年人教版高三地理必修一第三章自然地理环境模拟测试卷
- 2025-2026年交通安全知识测试卷
- 2025年浙江省北师大版七年级英语第2单元同步练习题
- 2025-2026年天津市北师大版高三物理选修三第四章电磁学实验测试卷
- 2025-2026年人教版初中数学代数运算冲刺练习
- ESG评价体系下乌龙茶馅饼项目的可持续投资价值重估
- AI大模型重构地产营销SaaS投资逻辑与估值体系变革研究
- 急性肺栓塞诊断和治疗指南(2025 版)
- 《非物质文化遗产概论(第三版)》全套教学课件
- 西安健康工程职业学院《电催化原理与应用》2024-2025学年第一学期期末试卷
- DBJT 13-318-2025建筑施工盘扣式钢管脚手架安全技术标准
- 2024年袁州区事业单位选调工作人员考试真题
- 化粪池清掏安全协议书
- 人教版高中英语选择性必修一教学设计
- 医保工作人员信息与网络安全保密协议书(2篇)
- 军队临床医学题库及答案
- 《煤矿生产安全事故应急预案》会审意见
- 崇明西部分区单元(CM3)地质灾害危险性评估报告(2020年度更新成果)
评论
0/150
提交评论