C语言数据结构课程设计文章编辑.docx

上传人:b****9 文档编号:23361567 上传时间:2023-05-16 格式:DOCX 页数:19 大小:190.75KB
下载 相关 举报
C语言数据结构课程设计文章编辑.docx_第1页
第1页 / 共19页
C语言数据结构课程设计文章编辑.docx_第2页
第2页 / 共19页
C语言数据结构课程设计文章编辑.docx_第3页
第3页 / 共19页
C语言数据结构课程设计文章编辑.docx_第4页
第4页 / 共19页
C语言数据结构课程设计文章编辑.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言数据结构课程设计文章编辑.docx

《C语言数据结构课程设计文章编辑.docx》由会员分享,可在线阅读,更多相关《C语言数据结构课程设计文章编辑.docx(19页珍藏版)》请在冰豆网上搜索。

C语言数据结构课程设计文章编辑.docx

C语言数据结构课程设计文章编辑

 

算法与数据结构

课程设计报告

 

题目:

文章编辑

 

2012年5月31日

 

目录

1.问题描述及要求1

1.1问题描述1

1.2基本要求1

2.需求分析1

2.1输入数据的形式和范围1

2.2输出形式1

3.算法思想描述1

4.概要设计1

4.1统计字符个数函数及算法流程图1

4.2统计指定字符串个数函数及算法流程图2

4.3删除指定字符串函数及算法流程图3

5.详细设计4

5.1文章输入函数4

5.2文章输出函数4

5.3统计字符个数函数4

5.4统计指定字符串个数函数5

5.5删除指定字符串函数5

5.6源程序清单6

6.测试数据及分析11

6.1文章输入函数11

6.2文章输出函数11

6.3统计字符个数函数12

6.4统计指定字符串个数函数12

6.5删除指定字符串函数13

7.课程设计总结14

8.参考资料14

 

文章编辑

1.问题描述及要求

1.1问题描述

功能:

输入一页文字,程序可以统计出文字、数字、空格的个数。

1.2基本要求

(1)静态存储一页文章,每行最多不超过80个字符,共N行;

(2)分别统计出其中英文字母数和空格数及整篇文章总字数;

(3)统计某一字符串在文章中出现的次数,并输出该次数;

(4)删除某一子串,并将后面的字符前移;

(5)存储结构使用线性表,分别用几个子函数实现相应的功能。

2.需求分析

2.1输入数据的形式和范围

可以输入大写、小写的英文字母、任何数字及标点符号。

2.2输出形式

(1)分行输出用户输入的各行字符;

(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数;

(3)输出删除某一字符串后的文章;

3.算法思想描述

本程序是对输入的文字进行操作,故使用静态的字符数组作为存储结构,定义如下:

charstr[N][80];//存储文章的字符数组

对于文本的输入,采用头插法将文本信息存储到链表已申请好的存储空间中;对于文本内容的统计,使用循环对已存储的文章进行匹配,大写字母数、小写字母数、空格数、数字数直接通过条件比较即可得到;对于文本内容的处理,查找部分仍是使用循环对已存储的文章进行匹配,判断需要查找的字符或者字符串是否与文章中某部分内容相同,如果存在相同的记录相同的个数。

删除部分先使用程序的查找功能对文章中需要删除的字符或者字符串进行查找,然后对其进行删除。

4.概要设计

本程序主要定义了3个函数:

voidcount(),voidcheckstring(),voidoutputdelstr()

4.1统计字符个数函数及算法流程图

函数:

voidcount()

功能:

统计字母、数字、空格的个数

流程图如下:

 

4.2统计指定字符串个数函数及算法流程图

函数:

voidcheckstring()

功能:

统计某一个指定的字符串的个数

流程图如下:

4.3删除指定字符串函数及算法流程图

函数:

voidoutputdelstr()

功能:

删除某一个指定的字符串

流程图如下:

5.详细设计

5.1文章输入函数

intintput()//文章输入函数

{

printf("请输入第%d行文字\n",i+1);

gets(str[i]);//读取数组的内容

if(strlen(str[i])>80)

{

printf("每行最多输入80字符,请重新输入第%d行文字\n",i+1);

/*当每行输入文字大于80字符时输出此语句,并且重新输入文字*/

gets(str[i]);

}

returnstrlen(str[i]);//返回数组的长度

}

5.2文章输出函数

voidoutput()//文章输出函数

{

for(i=0;i

{

puts(str[i]);//输出数组的内容

}

}

5.3统计字符个数函数

voidcount()//统计字符个数的函数

{for(j=0;j

{

if(str[i][j]>='a'&&str[i][j]<='z')cnum++;//统计小写字母

if(str[i][j]>='A'&&str[i][j]<='Z')cnum++;//统计大写字母

if(str[i][j]>='0'&&str[i][j]<='9')dnum++;//统计数字

if(str[i][j]=='')snum++;//统计空格

}

}

5.4统计指定字符串个数函数

voidcheckstring()//统计指定字符串个数函数

{

charcstr[20];

char*p1,*p2;

printf("请输入需要统计的字符串:

");

gets(cstr);

p2=cstr;

for(i=0;i

{

p1=str[i];

while(strstr(p1,p2)!

=NULL)

/*strstr()函数的原型是:

externchar*strstr(char*str1,char*str2);功能是找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。

*/

{

strnum++;

p1=strstr(p1,p2)+1;

}

}

printf("字符串:

%s在文章中出现的次数为:

%d\n",cstr,strnum);

}

5.5删除指定字符串函数

voidoutputdelstr()//删除指定字符串函数

{

charcstr[20];

char*p,*p1,*p2;

intlen;

printf("请输入要删除的字符串:

");

gets(cstr);

len=strlen(cstr);

p2=cstr;

for(i=0;i

{

p1=str[i];

while(strstr(p1,p2)!

=NULL)

{

p=p1=strstr(p1,p2);

while(*(p+len-1))

{

*p=*(p+len);

p++;

}

}

}

printf("删除字符串:

%s后文章为:

\n",cstr);

output();//输出删除字符串后的文章

}

5.6源程序清单

#include

#include

#include

#defineN3//文章的行数

charstr[N][80];//存储文章的字符数组,为全局变量

inti,j;

intlen[N];

intdnum=0,cnum=0,snum=0,anum=0,strnum=0;//为各变量赋初值

voidmenu();//菜单显示函数

intintput();//文章输入函数

voidoutput();//文章输出函数

voidcount();//统计字符个数函数

voidcheckstring();//统计指定字符串个数函数

voidoutputdelstr();//删除指定字符串函数

intmain()//主函数

{

printf("**************************\n");

printf("*本网络101第4组黄耿宇*\n");

printf("**************************\n");

charkey,t;

for(i=0;i

{

len[i]=intput();

anum+=len[i];

}

for(i=0;i

{

count();//调用count()函数

}

while

(1)

{

printf("**************************\n");

printf("*本网络101第4组黄耿宇*\n");

printf("**************************\n");

printf("\n");

printf("您输入的文章为:

\n");

output();//调用output()函数

printf("\n");

printf("文章中的字母个数为:

%d\n",cnum);

printf("数字个数为:

%d\n",dnum);

printf("空格个数为:

%d\n",snum);

printf("文章总字数为:

%d\n",anum);

printf("\n");

menu();//调用menu()函数

printf("\n");

printf("请输入操作:

");

key=getchar();//接收回车

printf("\n");

switch(key)

{

case'1':

//当key=1时执行此语句调用checkstring()函数

{

fflush(stdin);//功能:

清空输入缓冲区,确保不影响后面的数据读取

checkstring();//调用checkstring()函数

}break;

case'2':

//当key=2时执行此语句调用outputdelstr()函数

{

fflush(stdin);

outputdelstr();//outputdelstr()函数

}break;

case'0':

exit(0);//当key=0时执行此语句退出系统

default:

{

printf("此菜单不存在!

\n");

}break;

}

t=getchar();//接收回车

system("pause");/*是一个系统函数,调用“pause”命令,在命令行上输出“请按任意键继续”一行文字,等待用户按一个键,然后返回。

*/

}

system("pause");

return0;

}

voidmenu()//菜单显示函数

{

printf("**********************\n");

printf("*菜单*\n");

printf("**********************\n");

printf("*1---统计字符串*\n");

printf("*2---删除字符串*\n");

printf("*0---退出系统*\n");

printf("**********************\n");

}

intintput()//文章输入函数

{

printf("请输入第%d行文字\n",i+1);

gets(str[i]);//读取数组的内容

if(strlen(str[i])>80)

{

printf("每行最多输入80字符,请重新输入第%d行文字\n",i+1);

/*当每行输入文字大于80字符时输出此语句,并且重新输入文字*/

gets(str[i]);

}

returnstrlen(str[i]);//返回数组的长度

}

voidoutput()//文章输出函数

{

for(i=0;i

{

puts(str[i]);//输出数组的内容

}

}

voidcount()//统计字符个数的函数

{

for(j=0;j

{

if(str[i][j]>='a'&&str[i][j]<='z')cnum++;//统计小写字母

if(str[i][j]>='A'&&str[i][j]<='Z')cnum++;//统计大写字母

if(str[i][j]>='0'&&str[i][j]<='9')dnum++;//统计数字

if(str[i][j]=='')snum++;//统计空格

}

}

voidcheckstring()//统计指定字符串个数函数

{

charcstr[20];

char*p1,*p2;

printf("请输入需要统计的字符串:

");

gets(cstr);

p2=cstr;

for(i=0;i

{

p1=str[i];

while(strstr(p1,p2)!

=NULL)//strstr()函数的原型是:

externchar*strstr(char*str1,char*str2);

//功能是找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。

{

strnum++;

p1=strstr(p1,p2)+1;

}

}

printf("字符串:

%s在文章中出现的次数为:

%d\n",cstr,strnum);

}

voidoutputdelstr()//删除指定字符串函数

{

charcstr[20];

char*p,*p1,*p2;

intlen;

printf("请输入要删除的字符串:

");

gets(cstr);

len=strlen(cstr);

p2=cstr;

for(i=0;i

{

p1=str[i];

while(strstr(p1,p2)!

=NULL)

{

p=p1=strstr(p1,p2);

while(*(p+len-1))

{

*p=*(p+len);

p++;

}

}

}

printf("删除字符串:

%s后文章为:

\n",cstr);

output();//输出删除字符串后的文章

}

6.测试数据及分析

6.1文章输入函数

 

6.2文章输出函数

6.3统计字符个数函数

6.4统计指定字符串个数函数

6.5删除指定字符串函数

7.课程设计总结

为期一周的课程设计结束了,在这一周里我完成了编写文本编辑程序的任务。

任务书上要求是对输入的信息进行操作,自己开始是不知道该向什么方向去努力,自己应该如何去编写这个程序,后来通过对照着任务书上的要求和到网上查找相关资料,慢慢找到了感觉。

所以自己在整个课程设计的编写程序过程中遇到的困难及问题都通过查阅资料、向老师提问得以解决。

本次课程设计自己最大的体会就是不管写什么程序,自己首先得对这个问题要分析透彻,要知道自己要干什么,然后才能让自己干什么。

通过本次课程设计,我学到了很多:

增强了查阅相关参考资料的能力,独立分析解决问题的能力;自己的上机动手的能力和对课程设计的理解,得到很多启示;课程设计为我们提供了一个即动手又动脑、独立实践的机会,将课本上的知识理论和实际有机的结合起来,锻炼了我们的分析解决实际问题的能力。

这次课程设计使我我对数据逻辑结构的特点和存储表示方式的有了更深的了解和认识,培养了我在具体应用中选择合适的数据结构和存储结构的能力,同时也使我认识到自己在学习编程方面还有很多的不足。

今后我要多读一些纺织方面的书籍,不能只拘泥于课本上的知识,并注重理论与实践的结合,多上机练习编写程序,提高自己的实际动手能力和独立思考的能力,不断充实自己,更好的掌握编程思想。

8.参考资料

[1]陈守孔,《算法与数据结构.C语言版》,清华大学出版社,2009年6月

[2]徐凤生,《数据结构与算法-C语言版》,机械工业出版社,2010年6月

[3]廖雷,《C程序设计实践教程》,电子工业出版社,2006年7月

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1