文章编辑报告

上传人:F****n 文档编号:99254898 上传时间:2019-09-18 格式:DOC 页数:7 大小:52KB
返回 下载 相关 举报
文章编辑报告_第1页
第1页 / 共7页
文章编辑报告_第2页
第2页 / 共7页
文章编辑报告_第3页
第3页 / 共7页
文章编辑报告_第4页
第4页 / 共7页
文章编辑报告_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《文章编辑报告》由会员分享,可在线阅读,更多相关《文章编辑报告(7页珍藏版)》请在金锄头文库上搜索。

1、课题:文章编辑一、问题分析和认为定义1功能要求:输入一页文字,程序可以统计出文字、数字、空格的个数。静态存储一页文章,每行最多不超过80个字符,共N行;1) 分别统计出其中英文字母数和空格数及整篇文章总字数;2) 统计某一字符串在文章中出现的次数,并输出该次数;3) 删除某一子串,并将后面的字符前移。存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。2输出形式:1) 分行输出用户输入的各行字符;2) 分4行输出全部字母数、数字个数、空格个数、文章总字数3) 输出删除某一字符串后的文章;二、概要设计1、存储结构此模块使用静

2、态的字符数组作为存储结构,定义如下:char wzN80; /* 存储文章的字符数组 ,为全局变量*/2、算法设计说明此模块主要有三个算法:(1)、统计字符个数算法流程图i=0 n=0i=Nj=0 len=strlen(wzi)j=lenif(wzij=n1&wzij=n2)n+j+i+return n算法结束(2)、查找某一字符串出现的次数算法流程图i=0 n=0i=Nc=strstr(wzi,s)c!=0 c=0c=strstr(c+lens,s)n+i+return n算法结束(3)、删除某一字符串算法流程图i+i=0 n=0i=Nc=strstr(wzi,s)c!=0 c=0leni=

3、strlen(wzi);lenc=strlen(c);p=leni-lencreturn n算法结束for(k=1;k=lens;k+)for(j=p;j=leni;j+)wzij=wzij+1; leni=strlen(wzi) wzij-1=0;leni=strlen(wzi);c=strstr(wzi,s); 三、编码实现#include#include#define N 20 /* 文章的行数 */char wzN80; /* 存储文章的字符数组 ,为全局变量*/*输入函数*/void readdat()FILE *fp; int i,j,len; char *str; if(!(fp

4、=fopen(E:/yy/wzin.dat,r+)/*打开文件*/ printf(The file cant found!n); for(i=0;iN;i+) fgets(wzi,80,fp);/*读文件*/*输出函数*/void out()int i=0; for(i=0;iN;i+) printf(%s,wzi);int countword(int n1,int n2)/*统计ASC 码在n1与n2之间的字符*/int i,j,len; int n=0; /*统计字符数*/ for(i=0;iN;i+) len=strlen(wzi); for(j=0;j=n1&wzij=n2)/*wzi

5、j的ASC 码在n1与n2之间,n+*/ n+; return n;int cz(char *s) /*查找某一字符串出现的次数*/int n=0; int i; int lens;/*要查找字符串 *S 的长度*/ char *c; lens=strlen(s); for(i=0;iN;i+) c=strstr(wzi,s);/*字符串*S在文章第i 行第一次出现的位置*/while(*c!=0) n+; c=strstr(c+lens,s);/*字符串*S在文章第i 行下一次出现的位置*/ return n;void del(char *s)int i,j,k,leni,lenc,lens

6、; int p; char *c; lens=strlen(s);/*要删除字符串的长度*/ for(i=0;iN;i+) c=strstr(wzi,s);/*字符串s 在文章第i行首次出现的位置*/ while(c!=0)/*c=0 则表明字符串s 在文章第i行没有出现*/ leni=strlen(wzi);/*文章第i 行的长度*/ lenc=strlen(c);/*从字符串s 在文章第i行首次出现的位置处后的字符串的长度*/ p=leni-lenc;/* 两个长度的差 从此行的第p 个位置开始删除*/ for(k=1;k=lens;k+)/*删除lens次*/ for(j=p;j=len

7、i;j+) wzij=wzij+1;/*字符前移*/ leni=strlen(wzi); wzij-1=0; leni=strlen(wzi); c=strstr(wzi,s); main() int word,space,num,zifu;/*字母数,空格数,数字数,字符数*/ int n; /*某字符串数*/ int leni; int i=0,j=0; char s180,*s; printf(Where do you want the file come from ?n );/*从文件读入数据,还是从键盘输入数据*/ printf(From wenjian please input 1

8、 nfrom keyboard please input 2 n);/*从文件读入数据输入1,还是从键盘输入数据输入2*/ scanf(%d,&n); getchar(); switch(n) case 1:readdat();break; case 2:printf(please input the file until n); gets(s1);while(strcmp(s1,)!=0&iN) strcpy(wzi,s1);/*将s1中的内容复制到wzi中*/ leni=strlen(s1); wzileni=n; gets(s1); i+; break; default:printf(W

9、rong input !n);break; printf(The files content:n ); out();word=countword(a,z)+countword(A,Z);/*统计字母*/printf(nThe total word is :t%dn,word);space=countword( , );/*统计空格*/printf(The total space is :t%dn,space);num=countword(0,9);/*统计数字*/printf(The total shuzi is :t%dn,num);/*统计所有字符*/zifu=countword(32,4

10、4)+num+countword(59,94)+countword(97,126)+countword(174,175);printf(The total zifu is :t%dn,zifu+space);/*字符串的查找*/printf(nplease input a srting:t);scanf(%s,s);n=cz(s);printf(nThe string %s chuxian %d ci n,s,n);getchar();/*字符串的删除*/printf(nWhich string do you want to del:n);printf(please input a strin

11、g :t);scanf(%s,s);printf(nBefore del string %s:n,s); out();n=cz(s);if(n=0) printf(nCant find the string!n);else del(s); printf(nAfter del string %s :n,s); out(); 四、软件测试1、测试结果2、时间复杂度分析 统计字符个数算法时间复杂度为O(N*80) 查找某一字符串出现的次数算法时间复杂度为O(N*80)删除某一字符串算法所耗费的时间最多,每次进行删除操作时都要读遍整篇文章,删除字符串s 时是将 s 中的字符一个个的删除,每删除一个字符

12、都需要一次前移操作,所以平均时间复杂度为O(N*(N+1)/2)调试时的问题及思考调试时用键盘输入文章内容的语句为gets(s1),若要换成scanf(“%s”,s1);将会出现不能输入空格的问题。所以在进行输入时要使用正确的输入语句不然就会出现这样那样的问题。 算法改进思想删除某一字符串算法的时间复杂度最大,原因在于每删除一个字符都要进行前移操作,占用了大量时间。假如在进行删除时进行同时前移strlen(s)个字符,可能会减少一些时间。考虑到公司仍有部分低层及高层人员的补充,因此在选择招聘渠道供应商的附加值时以配送普工现场招聘会和高端人才交流会为佳,另外根据供应商平台实力,若能给公司提供合适的猎头服务也应当纳入甄选范畴。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号