C语言版数据结构课程设计-文章编辑系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文章编辑系统
1、课程设计目的
(1)较熟练地掌握C语言的基本内容及程序设计的基本方法与编程技巧。 (2)较熟练地掌握在系统上编辑、编译、连接和运行C 程序的方法。
(3)通过设计一个完整程序,掌握数据结构的算法编写、类C 语言算法转换成C 程序并上机调试的基本方法。
2、课程设计方案论证
2.1 设计思路
(1)定义结构体 struct line ,文本行采用顺序存储,行与行之间采用链式存储
图1:功能模块图
(2)主要函数:
int CountNumber(LINE * &head) /*统计数字数*/
沈 阳 大 学
课程设计说明书 N O.2
文章编辑系统
统计字符
删除字符
统计文字
查找字符
开始
*p=head,count=0 int len=str len(p->data)
i=0
i p->data[i]>=48 && p->data[i]<=57 count++ i++ p=p->next !p=NULL 结束N Y N Y N 图2:统计数字函数流程图 沈阳大学 课程设计说明书 N O.3 int FindString(LINE * &head,char *str) /*统计str 在文章中出现的次数*/ 沈 阳 大 学 开始 count=0;h=0;len1=0; len2=strlen(str); p->data[i]==str[0] i++ k=0;j=0; p->data[i+j]==str[j] k++;j++; k=len2 count++; i=i+k-1; 结束 Y N Y N N Y 图3:统计str 在文章中的出现次数 2.2 源程序清单 #include #include typedef struct line { char *data; struct line *next; }LINE; void Create(LINE * &head) { LINE *p; printf ("请输入一页文章,以#为结尾(每行最多输入80字符!):\n"); p=(struct line*)malloc(sizeof(struct line)); head=p; char tmp[200]; for(;1;) { gets(tmp); if(strlen(tmp)>80) { printf("每行最多输入80字符"); break; } if(tmp[0]==35)break; p=p->next=(struct line*)malloc(sizeof(struct line)); p->data=(char*)malloc(strlen(tmp)); strcpy(p->data,tmp); if(tmp[strlen(tmp)-1]==35) { p->data[strlen(tmp)-1]='\0'; 沈阳大学 break; } } p->next=NULL; head=head->next; } int CountLetter(LINE * &head) { LINE *p=head; int count=0; do { int Len=strlen(p->data); for(int i=0;i if((p->data[i]>='a'&&p->data[i]<='z')||(p->data[i]>='A'&&p->data[i]<='Z')) count++; } while((p=p->next)!=NULL); return count; } int CountNumber(LINE * &head) { LINE *p=head; int count=0; do { int Len=strlen(p->data); for(int i=0;i if(p->data[i]>=48 && p->data[i]<=57)count++; 沈阳大学 while((p=p->next)!=NULL); return count; } int CountSpace(LINE * &head) { LINE *p=head; int count=0; do { int Len=strlen(p->data); for(int i=0;i if(p->data[i]==32)count++; } while((p=p->next)!=NULL); return count; } /*统计文章的总字数*/ int CountAll(LINE * &head) { LINE *p=head; int count=0; do { count+=strlen(p->data); } while((p=p->next)!=NULL); return count; } 沈阳大学