文章编辑_第1页
文章编辑_第2页
文章编辑_第3页
文章编辑_第4页
文章编辑_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、数据结构课程设计报告题 目 文 章 编 辑 学生姓名 学 号 08120116 专业班级 计算机0801 指导老师 设计日期 2009/12/18 指导老师评阅意见:评阅成绩:签名:一、问题定义5.5文章编辑功能:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;要求:(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能。输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。输

2、出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章。二、可行性分析主要流程:首先调用initlist()输入一段字符,并输出。然后运用switch提供5个选择,第一个统计整篇文章的总字数,并输出;第二个统计某一字符串在文章中出现的次数,并输出;第三个删除某一字符串,并输出剩下的字符;第四个分行输出用户输入的字符;第五个退出。Main (InitlistPrint20print1(ca *LDelStr(ca *LStr

3、No(ca*L)print2(ca *L, int &p1, int &p2, int &p3, int &n图1开始输入cC=#?假 L->next =new caL=L->next真 L->next = NULL输出:输入nn退出Printf2统计p1,p2,p3,nStrNo统计s次数DelStr删除所有sPrintf1分行输出c图2三、程序设计#include #include #include struct ca char c;ca *next;void InitList(ca *L /输入文字printf("输入一页文字(

4、以#结束:n"while(L->c = getchar( != '#' /当输入的字符不为#时,开辟新的空间,继/续输入L->next = new ca;L = L->next;L->next = NULL;void StrNo(ca *L /统计字符出现的次数int n = 0; /初始化总数nchar s80, *q;ca *p;printf("输入一字符串: "cin>>s;while(L->next /L链表的next域为真 for (p = L, q = s; *q != '0'

5、&& p->next; p = p->next, q+/指针p指向L,q指向输入的字符串s,当q指向的不为空时,并且p有next域,则,P指/针后移,q+,重新循环. if (p->c != *q break; /当p指向的字符不等于q时,跳出循环if (*q = '0' n+; /当L中的某一字符串与s相对应完全,即q指向空时,n+1L = L->next;cout<<"字符串 "< 出现 "< 次 n" ca *DelStr(ca *L /删除一个字符串ca *H = L

6、;char s80, *q;ca *p;cout<<"输入该子串: "cin>>s;while(L->next for (p = L->next, q = s; *q != '0' && p->next; p = p->next, q+if (p->c != *q break;if (*q = '0' L->next = p;else L = L->next; /后面的字符串前移return H;void print1(ca *L while(L->nex

7、t cout< c; L = L->next;cout< void print2(ca *L, int &p1, int &p2, int &p3, int &n n = p1 = p2 = p3 = 0;for( ; L->next; L = L->next, n+if(isalpha(L->c p1+; /统计英文字母的个数else if(isdigit(L->c p2+; /统计数字的个数else if(L->c = ' ' p3+; /统计空格的个数else if(L->c = 

8、9;n' n-; cout<<"n全部字母数: "< cout<<"n数字个数: "< cout<<"n空格个数: "< cout<<"n文章总字数: "< void main( ca *L = new ca;int p1, p2, p3, n, c;InitList(L;do cout<<"n0:退出n""1:统计中英文字母和空格数以及整篇文章总字数n""2:统计某一字符串

9、在文章中出现次数n""3:删除某一子串n""4:分行输出用户输入的各行字符n"cin>>c;switch(c case 1:print2(L, p1, p2, p3, n;break;case 2:StrNo(L;break;case 3:DelStr(L;case 4:print1(L;while(c;四、调试过程及其解决方法原程序:#include #include #include Class ca Public:char c;ca *next;void InitList(ca *L while(L->c = getch

10、ar( != '#' L->next = new ca;L = L->next;L->next = NULL;void StrNo(ca *L int n = 0; char s80, *q;ca *p;printf("输入一字符串: "cin>>s;while(L->next for (p = L, q = s; *q != '0' && p->next; p = p->next, q+ if (p->c != *q break;if (*q = '0'

11、n+;L = L->next;cout<<"字符串 "< 出现 "< 次 n" ca *DelStr(ca *L ca *H = L;char s80, *q;ca *p;cout<<"输入该子串: "cin>>s;while(L->next for (p = L->next, q = s; *q != '0' && p->next; p = p->next, q+if (p->c != *q break;if (*q

12、= '0' L->next = p;else L = L->next; return H;void print1(ca *L while(L->next cout< c; L = L->next;cout< void print2(ca *L, int &p1, int &p2, int &p3, int &n n = p1 = p2 = p3 = 0;for( ; L->next; L = L->next, n+if(isalpha(L->c p1+; else if(isdigit(L-&

13、gt;c p2+; else if(L->c = ' ' p3+; else if(L->c = 'n' n-; cout<<"n全部字母数: "< cout<<"n数字个数: "< cout<<"n空格个数: "< cout<<"n文章总字数: "< void main( ca *L = new ca;int p1, p2, p3, n, c;InitList(L;do cout<<"n0:退出n""1:统计中英文字母和空格数以及整篇文章总字数n""2:统计某一字符串在文章中出现次数n""3:删除某一子串n""4:分行输出用户输入的各行字符n"cin>>c;switch(c case 1:print2(L, p1, p2, p3, n;break;case 2:StrNo(L;break;case 3:DelStr(L;case 4:print1(L;while(c;1、 成员的数据类型不同,定义一个结构体;2、 运用函数isalpha isdigit来查找字母与

温馨提示

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

评论

0/150

提交评论