文章编辑报告

上传人:汽*** 文档编号:470066816 上传时间:2024-01-04 格式:DOC 页数:7 大小:259.50KB
返回 下载 相关 举报
文章编辑报告_第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) 输出删除某一字符串后的文章;二、概要

2、设计1、存储结构此模块使用静态的字符数组作为存储结构,定义如下:char wzN80; /* 存储文章的字符数组 ,为全局变量 */2、算法设计说明此模块主要有三个算法:(1)、统计字符个数算法流程图(3)、删除某一字符串算法流程图三、编码实现#in clude#in clude#defi ne N 20 /* 文章的行数 */char wzN80; /*存储文章的字符数组,为全局变量*/*输入函数*/void readdat()FILE *fp;int i,j,le n;char *str;if(!(fp=fopen(E:/yy/wzin.dat,r+)/*打开文件 */prin tf(Th

3、e file cant foun d!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)/*wzij的 ASC 码在 n1 与 n2 之间,n+;return n;int cz(

4、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;int p;char *c;for(i=0;iN;i+) c=strst

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

6、j+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 nfrom keyboard please inpu

7、t 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(Wrong input !n);break;printf

8、(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,44)+num+countword(5

9、9,94)+countword(97,126)+countword(174,175)Jprintf(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 string :t);scan

10、f(%s,s);printf(nBefore del string %s:n,s);out();n=cz(s);if(n=0)printf(nCant find the string!n);elsedel(s);printf(nAfter del string %s :n,s);out();四、软件测试1测试结果2、时间复杂度分析统计字符个数算法时间复杂度为O(N*80)查找某一字符串出现的次数算法时间复杂度为O(N*80)删除某一字符串算法所耗费的时间最多,每次进行删除操作时都要读遍整篇文章,删除 字符串s时是将s中的字符一个个的删除,每删除一个字符都需要一次前移操作,所以平 均时间复杂度为 O(N*(N+1)/2)调试时的问题及思考调试时用键盘输入文章内容的语句为gets(sl),若要换成seanf( “S ,s1);将会出现不能输入空格的问题。所以在进行输入时要使用正确的输入语句不然就会出现这样那样的问 题。算法改进思想删除某一字符串算法的时间复杂度最大,原因在于每删除一个字符都要进行前移操作,占用了大量时间。假如在进行删除时进行同时前移strle n(s)个字符,可能会减少一些时间。

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

当前位置:首页 > 医学/心理学 > 基础医学

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