数据结构课程设计文章编辑(附录中有全部代码)

合集下载

数据结构课程设计报告模板(内附C代码)

数据结构课程设计报告模板(内附C代码)

数据结构课程设计报告学院专业:软件工程班级:学号:学生姓名:指导老师:彭伟民日期: 2016.01.01目录1猴子吃桃子问题 (3)1.1 需求分析 (3)1.2 程序设计思想 (3)1.3 程序源代码 (3)1.4 程序运行结果 (5)2进制数转化问题 (5)2.1 需求分析 (5)2.2 程序设计思想 (6)2.3 程序源代码 (6)2.4 程序运行结果 (7)3长整数运算 (8)3.1 需求分析 (8)3.2 程序设计思想 (8)3.3 程序源代码 (8)3.4 程序运行结果 (12)4学生成绩管理系统 (13)4.1 需求分析 (13)4.2 程序设计思想 (13)4.3 程序源代码 (14)4.4 程序运行结果 (20)5哈夫曼编码应用 (22)5.1 需求分析 (22)5.2 程序设计思想 (22)5.3 程序源代码 (23)5.4 程序运行结果 (24)6学校超市选址问题 (26)6.1 需求分析 (26)6.2 程序设计思想 (26)6.3 程序源代码 (26)6.4 程序运行结果 (30)7学生成绩管理系统 (30)7.1 需求分析 (30)7.2 程序设计思想 (30)7.3 程序源代码 (30)7.4 程序运行结果 (36)8排序综合 (37)8.1 需求分析 (37)8.2 程序设计思想 (38)8.3 程序源代码 (38)8.4 程序运行结果 (46)9课程设计总结 (47)1猴子吃桃子问题1.1需求分析有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。

用多种方法实现求出原来这群猴子共摘了多少个桃子。

1.2程序设计思想已知第十天只余下1个桃子,第一天开始每天都吃当前桃子一半再多一个,那么就只需要从第十天开始倒推即可,用链表、数组、递推、常规方法都可以采用这种思路实现计算第一天桃子数量。

1.3程序源代码#include<iostream>using namespace std;//有一群猴子摘了一堆桃子,他们每天都吃当前桃子的一半且再多吃一个,到了第10天就只余下一个桃子。

数据结构课程设计报告含代码

数据结构课程设计报告含代码

西安邮电学院数据结构课程设计报告题目:校园导航系统院系名称:计算机学院专业名称:计算机科学与技术班级:学生姓名:学号(8位):指导教师:设计起止时间:2011年12月11日~2011年12月15日一. 设计目的1.通过本次课程设计巩固《数据结构》中所学的内容;2.提高自己上机编程以及调试能力。

二. 设计内容1.设计所在学校的校园平面图,所含景点不少于10个。

以图中顶点表示校园内各景点,存放景点名称、代号、简介等信息;以边表示路径,存放路径长度等相关信息。

2.为来访客人提供图中任意景点相关信息的查询。

3.为来访客人提供图中任意景点的问路查询,即查询任意两个景点之间的一条最短的简单路径。

三.概要设计1.功能模块图;2.各个模块详细的功能描述。

1. 可以手动创建一个校园图。

2. 可以直接从文件读取校园各个景点的信息。

3. 可选择从任意个景点作为起点进行遍历。

4. 输入景点序号查询该景点相关信息。

5. 输入两个景点查询两个景点的最短,最佳及其所有的路径。

6. 将校园图信息保存入文件。

四.详细设计1.功能函数的调用关系图2行参数传递。

2. 全局变量visited 数组在后再在depthfirstsearch()中用。

3. 全局变量shorest[][],path[][]在floyd()中被赋值来分别记录v[i]-v[j]最短路径和 v[i]-v[j]所经过景点。

3.重点设计及编码两景点最短距离 弗洛伊德算法void floyd(adjmatrix *g){int i,j,k;for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)shortest[i][j]=0;for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++){shortest[i][j]=g->arcs[i][j].adj;path[i][j]=0;}for(i=0;i<g->vexnum;i++)for(j=0;j<g->vexnum;j++)for(k=0;k<g->vexnum;k++)if(shortest[i][j]>(shortest[i][k]+shortest[k][j])){shortest[i][j]=shortest[i][k]+shortest[k][j];path[i][j]=k;path[j][i]=k;}}五.测试数据及运行结果1.正常测试数据和运行结果要求提供3组正常测试数据和运行结果2(遍历功能)1(起始景点序号)1 校门呈长方形,校训:爱国、求实、奋进2 喷泉呈鸽子形状,喷射出水花3 教学楼传授知识和学习知识4 实验楼供学生进行课程实验和教师办公5 洗浴中心供学生洗澡,内设单人间和双人间6 美食广场仅一层,快餐味道不错7 图书馆共七层,存储大量书籍供学生查阅和学习8 旭日苑共三层,主要的就餐场所9 体育馆内设篮球场,羽毛球场和观看席10 宿舍休息的场所5(查询景点信息)2(景点序号)2 喷泉呈鸽子形状,喷射出水花6(查询两景点最短路径)1 9(两景点序号)1->2->7->91->9 最短距离:570米2.异常测试数据及运行结果要求提供2组异常测试数据和运行结果9无此功能模块请重新输入5(功能模块)11(景点序号)无此景点请重新输入六.调试情况,设计技巧及体会1.改进方案1. 可将景点文件,边文件及账户密码合并为一个文件。

数据结构课程设计(5篇)

数据结构课程设计(5篇)

数据结构课程设计(5篇)第一篇:数据结构课程设计课程设计说明书设计名称:数据结构课程设计题目:设计五:二叉树的相关操作学生姓名:专业:计算机科学与技术班级:学号:指导教师:日期: 2012 年 3 月 5 日课程设计任务书计算机科学与技术专业年级班一、设计题目设计五二叉树的相关操作二、主要内容建立二叉树,并对树进行相关操作。

三、具体要求1)利用完全二叉树的性质建立一棵二叉树。

(层数不小于4层)2)统计树叶子结点的个数。

3)求二叉树的深度。

4)能够输出用前序,中序,后序对二叉树进行遍历的遍历序列。

四、进度安排依照教学计划,课程设计时间为:2周。

本设计要求按照软件工程的基本过程完成设计。

建议将时间分为三个阶段:第一阶段,根据题目要求,确定系统的总体设计方案:即系统包括哪些功能模块,每个模块的实现算法,并画出相应的流程图.同时编写相应的设计文档;第二阶段,根据流程图编写程序代码并调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在《课程设计说明书》上,并参加答辩。

三个阶段时间分配的大概比例是:35: 45: 20。

五、完成后应上交的材料本课程设计要求按照学校有关规范的要求完成,在课程设计完成后需要提交的成果和有关文档资料包括课程设计的说明书,课程设计有关源程序及可运行程序(含运行环境)。

其中课程设计说明书的格式按学校规范(见附件),其内容不能过于简单,必须包括的内容有:1、课程设计的基本思想,系统的总功能和各子模块的功能说明;2、课程设计有关算法的描述,并画出有关算法流程图;3、源程序中核心代码的说明。

4、本课程设计的个人总结,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。

5、源代码要求在关键的位置有注释,增加程序的可读性。

程序结构和变量等命名必须符合有关软件开发的技术规范(参见有关文献)。

数据结构课程设计代码

数据结构课程设计代码

数据结构课程设计代码根据提供的输入输出需求,下面是一个示例的数据结构课程设计代码。

```pythonclass Node:def __init__(self, data):self.data = dataself.next = Noneclass LinkedList:def __init__(self):self.head = Nonedef add(self, data):new_node = Node(data)if self.head is None:self.head = new_nodeelse:current = self.headwhile current.next is not None:current = current.nextcurrent.next = new_nodedef remove(self, data):current = self.headprev = Nonewhile current is not None:if current.data == data:if prev is None:self.head = current.next else:prev.next = current.next returnprev = currentcurrent = current.nextdef display(self):current = self.headwhile current is not None:print(current.data, end=" ")current = current.nextprint()if __name__ == "__main__":linked_list = LinkedList()while True:print("1. Add element")print("2. Remove element")print("3. Display elements")print("4. Quit")choice = input("Enter your choice: ")if choice == "1":data = input("Enter element to add: ")linked_list.add(data)elif choice == "2":data = input("Enter element to remove: ")linked_list.remove(data)elif choice == "3":linked_list.display()elif choice == "4":breakelse:print("Invalid choice")```这个代码示例实现了一个简单的链表数据结构,在命令行中提供了添加元素、删除元素和显示元素的选项。

数据结构课程设计源代码(完整版)

数据结构课程设计源代码(完整版)

算法与数据结构课程设计报告设计题目:专业班级学生学号指导教师2014年第1学期第一部分:需求分析1、系统名称:航空客运订票系统航空客运订票的业务活动包括:查询航线、客票预定和办理退票等。

要求在TC或VC环境下设计一个航空客运订票系统,以使上述业务可以借助计算机来完成。

2、要求:(1)每条航线所涉及的信息有:终点站名、航班号、飞机号、飞行日期(星期几)、乘员定额、余票量、已经订票的客户名单(包括姓名、订票量)以及等候替补的客户名单(包括姓名、所需票量)。

(2)作为模拟系统,全部数据可以只存放在内存中。

(3)通过此系统可以实现如下功能:①录入功能:可以录入航班情况②查询功能:根据客户提供的终点站名进行查询,可以输出以下信息:航班号、飞机号、星期几飞行和余票量等。

也可以根据航班号,查询飞机某个航线的情况。

③订票功能:根据客户提出的要求(姓名、终点站名、订票数量)查询该航班的余票量情况。

如尚有足够的余票,则为客户办理订票手续;若已满员或余票量少于订票数量,则需要重新询问客户要求,如需要,可登记排队候补。

④退票功能:根据客户提供的情况(姓名、日期、航班号),为客户办理退票手续,然后查询该航班是否有人排队候补,若有人排队,则为排在第一位的客户办理订票手续。

第二部分:系统设计图样一:设计说明1:添加航班:整个航班的信息保存在一个结构体flight中,采用结构体数组,每一个航班信息包含航班号、起飞时间、起飞城市、降落时间、降落城市、余票数量。

航班信息通过lulu()函数进行添加。

添加的信息保存在航班flight结构体数组中。

2:查询航班:查询板块分为两个部分,按姓名查找和按站名查找。

按姓名查找:通过所输入的姓名和已定客户的姓名相匹配,匹配成功则查找成功。

按站名查找:通过所输入的起始站名和终点站名进行匹配,匹配成功则查找成功。

3:订票功能:根据用户的姓名和航班号进行订票,如果所查找的航班号的余票满足用户需要的票数,则订票成功,该信息保存在Customer中,才用结构体数组,包含已定客户的姓名、客户ID、订的票数、起飞时间、起飞城市、降落时间、降落城市、航班号。

数据结构课程设计目录及正文

数据结构课程设计目录及正文

数据结构课程设计目录及正文一、课程设计目的数据结构是计算机科学中的一门重要基础课程,通过课程设计,旨在让学生更深入地理解和掌握数据结构的基本概念、原理和算法,并能够将其应用到实际问题的解决中。

培养学生的问题分析能力、算法设计能力、程序编写能力和调试能力,提高学生的综合素质和创新能力。

二、课程设计要求1、学生需独立完成课程设计任务,不得抄袭他人成果。

2、课程设计应具有清晰的结构和良好的可读性,代码规范,注释详细。

3、选择合适的数据结构和算法解决给定的问题,并对算法的时间复杂度和空间复杂度进行分析。

4、完成课程设计报告,包括问题描述、算法设计、程序实现、测试结果和总结等内容。

三、课程设计题目1、图书管理系统实现图书的添加、删除、查询、修改等功能。

按照图书的分类、作者、书名等进行排序和查找。

2、学生成绩管理系统录入学生的成绩信息,包括学号、姓名、课程名称、成绩等。

计算学生的平均成绩、总成绩,并按照成绩进行排序。

3、公交线路查询系统建立公交线路的网络模型。

实现站点之间的最短路径查询和换乘方案查询。

4、停车场管理系统模拟停车场的车辆进出管理。

计算停车费用,显示停车场的当前状态。

四、课程设计目录1、引言2、需求分析问题描述功能需求数据需求性能需求3、总体设计系统架构模块划分数据结构设计4、详细设计模块功能描述算法设计界面设计5、编码实现代码框架关键代码实现6、测试与调试测试用例测试结果调试过程7、总结课程设计的收获遇到的问题及解决方法对数据结构课程的进一步理解8、参考文献9、附录源程序代码五、正文内容(一)引言随着信息技术的不断发展,计算机在各个领域的应用越来越广泛。

数据结构作为计算机科学的重要基础,对于提高程序的效率和质量起着至关重要的作用。

本次课程设计旨在通过实际项目的开发,让学生将所学的数据结构知识运用到实践中,提高解决实际问题的能力。

(二)需求分析1、问题描述以图书管理系统为例,系统需要对图书馆中的图书进行有效的管理,包括图书的基本信息(书名、作者、出版社、出版日期、ISBN 号等)、图书的库存数量、借阅状态等。

文章编辑代码

文章编辑代码

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

(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)删除某一子串,并将后面的字符前移。

存储结构使用线性表,分别用几个子函数实现相应的功能;输入数据的形式和范围:可以输入大写、小写的英文字母、任何数字及标点符号。

输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数"(3)输出删除某一字符串后的文章;(4)画出模块之间的调用关系图;写出函数形式的算法框架。

请用数据结构编写,关系图,算法结构一定要有#include<stdio.h>#include<malloc.h>#include<string.h>#include<stdlib.h>#include<iostream.h>typedef char TreeItem;struct a{char ch[256];}work[256];typedef struct btnode *btlink ;typedef struct btnode{TreeItem * word;//字符串指针btlink left , right , parent ;int count;} BtNode ;typedef struct bstree *Tree ;typedef struct bstree{btlink root ; // 根结点指针}BSTree;Tree T;Tree Init(){T = (Tree)malloc(sizeof(T));T->root = 0 ;return T ;}btlink NewNode(char * x){btlink p;if((p=(btlink)malloc(sizeof(BtNode)))==0) {cout<<"开辟失败!"<<endl;exit(0);}p->word=x;p->left=0;p->right=0;p->parent=0;p->count=1;return p;}int less(char * x,char * y){return (strcmp(x,y)<0);//x<y}void Search(TreeItem *x, btlink p ) {while(p){if( less(x,p->word) )p = p->left ;else if( less(p->word,x))p=p->right;elsebreak ;}if(p){cout<<"有找到"<<x<<endl;cout<<p->word<<"有"<<p->count<<"个"<<endl;; }else cout<<"没有找到"<<endl;}void InOrder(btlink t){if(t){InOrder(t->left);cout<<"字符串:"<<t->word<<endl;cout<<"个数:"<<t->count<<endl;InOrder(t->right);}}void Insert(char *x ,Tree T){btlink p,r,pp=NULL ;p = T->root ;while( p ){pp = p ; // 保存父结点// 通过和根结点比较,选择要搜索的子树 if(less(x,p->word))p = p->left ;else if(less(p->word,x))p = p->right ;else{p->count++;return ;// 元素x已存在于字典中}}r = NewNode(x);if(T->root){if(less(x,pp->word))pp->left = r ;elsepp->right = r ;r->parent = pp ;}elseT->root = r ; // 插入空树}void open(Tree T){char seps[]=" ,.\t\n;?:";int k=0;char *taken;char filename[20];FILE *fp;cout<<"输入你所要打开的文件名:"<<endl;cin>>filename;cout<<endl;if((fp=fopen(filename,"r"))==NULL){printf("cannot open file!\n");exit(0);}while(!(feof(fp))){fscanf(fp,"%s",work[k++].ch);//这里还真不能用char str【256】taken=strtok(work[k-1].ch,seps);while(taken!=NULL){Insert(taken,T);taken=strtok(NULL,seps);}}fclose(fp);}void add(){char filename[20];FILE *fp;cout<<"输入你所要打开的文件名:"<<endl;cin>>filename;cout<<endl;if((fp=fopen(filename,"a"))==NULL) //追加文本{printf("cannot open file!\n");exit(0);}cout<< "输入要增加的内容以@为结束"<<endl;getchar();ch=getchar();while(ch!='@'){fputc(ch,fp);ch=getchar();}fclose(fp);}void find(Tree T){cout<<"输入要查找的内容:"<<endl; char word[256];gets(word);cout<<word<<endl;char * w;w=word;btlink p=T->root;Search(w,p);}void main(){Tree T;btlink p;loop:cout<<"功能选择:"<<endl;cout<<"1 打开文件"<<endl;cout<<"2 中序显示"<<endl;cout<<"3 增加文本内容"<<endl; cout<<"4 查找"<<endl;int cs;cin>>cs;switch(cs){case 1:T=Init();open(T);goto loop;case 2:p=T->root ;InOrder(p);goto loop;case 3:add();goto loop;find(T); goto loop;。

《数据结构》课程设计报告-目录及正文

《数据结构》课程设计报告-目录及正文

目录1 前言 (1)2 需求分析 (1)2.1课程设计目的 (2)2.2课程设计任务 (2)2.3设计环境 (2)3 概要设计 (2)3.1数据结构设计 (2)3.2模块设计 (6)4 详细设计 (10)5 测试分析 (26)6 课程设计总结 (29)参考文献 (30)致谢 (30)1 前言在交通网络非常发达的今天,人们出差、旅游或做其他出行时,不仅关心节省交通费用,而且对里程和所需时间等问题也很感兴趣。

对于这样一个人们关心的问题,可用一个图结构来表示交通网络系统,利用计算机建立一个交通指南系统。

图中顶点表示城市,边表示城市之间的交通关系。

设计一个交通指南系统,能让旅客咨询从任一个城市顶点到达另外一个城市顶点之间的最短路径(里程)的问题.2 需求分析2.1课程设计目的本实验的核心代码是用FLOYD算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其带权长度D[v][w],其中利用到了一些稍许繁琐的数据存储结,求解最优路线问题解决相关实际问题,得到软件设计技能训练。

2.2课程设计任务假设以一个带权有向图表示某一区域的公交线路网,图中顶点代表一些区域中的重要场所,弧代表已有的公交线路,弧上的权表示该线路上的票价(或搭乘所需时间),试设计一个交通指南系统,指导前来咨询者以最低的票价或最少的时间从区域中的某一场所到达另一场所。

2.3设计环境(1)WINDOWS 2000/2003/XP/7/Vista系统(2)Visual C++或TC集成开发环境3 概要设计3.1数据结构设计结点类型:struct ArcCell{int adj; //存放弧长bool *info; //是否用过该弧};struct _MGraph{char vexs[20]; //存放站点ArcCell arcs[20][20]; //<i,j>int vexnum;int arcnum;};类定义:class MGraph //没用私有成员{public:_MGraph mgraph;//void DestroyGraph(); //析构函数销毁图int LocateVex (char u); // 返回顶点在图中的位置bool CreateDN(); //构造有向网void ShortestPath_FLOYD(Path &P,Distanc &D);};}3.2模块设计3.21构造有向网bool MGraph::CreateDN()//构造有向网{int i,j ,w;char v1, v2;cout<<"请输入站点个数,直接线路的条数: ";cin>>mgraph.vexnum>>mgraph.arcnum ;cout<<"\n请输入各站点名: ";for(i = 0;i<mgraph.vexnum;i++)//构造顶点向量{cin>>mgraph.vexs[i];}for(i = 0;i<mgraph.vexnum;i++) //初始化邻接矩阵{for(j = 0;j<mgraph.vexnum;j++){if(i==j)mgraph.arcs[i][j].adj = 0;elsemgraph.arcs[i][j].adj = 20000; //infinity;mgraph.arcs[i][j].info = false;}}for(i = 0;i<mgraph.arcnum;i++) //构造邻接矩阵{cout<<"\n请输入一条线路的起点,终点,距离(公里): ";cin>>v1>>v2>>w;int m = LocateVex(v1);int n = LocateVex(v2);mgraph.arcs[m][n].adj = w; // <v1, v2>的权值}return true;}3.22销毁有向图void MGraph::DestroyGraph(){for(int i = 0 ;i<mgraph.vexnum;i++)for(int j = 0;j<mgraph.vexnum;j++){if(mgraph.arcs[i][j].info){delete []mgraph.arcs[i][j].info;mgraph.arcs[i][j].info = false;}}mgraph.vexnum = 0;mgraph.arcnum = 0;}3.23定位点int MGraph::LocateVex(char u){for(int i = 0 ;i<20;i++){if(u == mgraph.vexs[i]){return i;}}return -1;}3.24最短路径void MGraph::ShortestPath_FLOYD(Path &P,Distanc &D)//求每对顶点间的最短路径// 用Floyd算法求有向网G中各对顶点v和w之间的最短路径P[v][w]及其带权长度D[v][w]// 若P[v][w][u]为TRUE,则u是从v到w当前求得最短路径上的顶点。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计任务书专业名称:计算机科学与技术(软件工程)课程名称:数据结构课程设计设计题目:文章编辑问题起止时间:2013年6 月24 日至2013年7 月12 日问题描述静态存储一页文章,每行最多不超过80个字符,共N行,程序可以统计出文字、数字、空格的个数,并且可以对文章中特定内容进行查找及替换,同时也可以删除指定内容。

基本要求(1)分别统计出其中英文字母数和空格数及整篇文章总字数;(2)统计某一字符串在文章中出现的次数,并输出该次数;(3)查找出文章中某一段文字,并用其他文字进行替换;(4)删除某一子串,并将后面的字符前移。

输出形式:(1)分行输出用户输入的各行字符;(2)分4行输出"全部字母数"、"数字个数"、"空格个数"、"文章总字数";(3)查找出指定字符串在文章中出现的所有地方并替换,输出替换后结果;(4)输出删除某一字符串后的文章;实现提示存储结构使用线性表,分别用几个子函数实现相应的功能,并且使用菜单的形式,可以选择所要进行的操作(查找、替换、删除、统计等)。

文章编辑系统1概要设计本次课程设计的题目是文章编辑系统,本系统的功能描述如下:用户新建文本、浏览新建文本、文本字符统计、指定字符串统计、指定字符串删除、指定字符串替换等操作。

1.新建文本2.浏览输入文本3.文本字符统计4.指定字符串统计5.指定字符串删除6.指定字符串替换7.退出系统本系统包含七个功能模块,分别为:新建文本模块,浏览输入文本模块,指定字符串统计模块,指定字符串删除模块,指定字符串删除模块,指定字符串替换模块以退出系统模块。

新建文本模块实现用户录入文本信息,并且系统自动保存录入信息。

浏览输入文本模块实现了显示用户录入信息的功能。

指定字符串统模块实现了对英文字母数和空格数及整篇文章总字数的统计。

指定字符串统计实现了统计用户自定义字符串个数的功能。

指定字符串删除模块实现了对用户自定义字符串的删除。

指定字符串替换模块实现了替换用户自定义字符串为用户定义的新字符功能。

退出系统模块实现了退出系统功能。

图1.1 系统功能模块图2详细设计这部分详细介绍了系统中主要部分的功能实现,以及代码功能说明。

void Create(LINE * &head){printf ("请输入一页文章,以Ctrl+E为结尾(每行最多输入80字符!):\n"); //以Ctrl+E结束文本录入,避免发生混淆LINE *p=new LINE; /*首先为链表建立一个附加表头结点*/ head=p; /*将p付给表头指针*/char ch[100];while(1){gets(ch); /*输入字符串!*/if(strlen(ch)>80){printf("每行最多输入80字符");break;}if(ch[0]==5)break; /*如果发现输入 ^E,则退出输入*/ p=p->next=new LINE;p->data=new char[strlen(ch)+1]; /*为结点分配空间 */ strcpy(p->data,ch);if(ch[strlen(ch)-1]==5) /*除去最后一个控制符 ^E */{p->data[strlen(ch)-1]='\0';break;}}p->next=NULL; /*最后的一个指针为空 */head=head->next;}/**文本字数统计**/int Count_Space(LINE* &head)//统计空格数{LINE *p=head;int asc_space=32;int count=0;int i;int Len;do{Len=strlen(p->data);for(i=0;i<Len;i++)if(p->data[i]==asc_space)count++;}while((p=p->next)!=NULL);return count;}int Count_Num(LINE * &head)//统计数字个数{LINE *p=head;int count=0;int Len;int i;do{Len=strlen(p->data);for(i=0;i<Len;i++)if(p->data[i]>=48 && p->data[i]<=57)count++;}while((p=p->next)!=NULL);return count;}int Count_All_Word(LINE * &head)//统计文章的总字数{LINE *p=head;int count=0;do{count+=strlen(p->data);}while((p=p->next)!=NULL);return count;}int Count_Letter(LINE * &head)//统计字母数{LINE *p=head;int count=0;int Len;int i;do{Len=strlen(p->data);for(i=0;i<Len;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 Find_Word(LINE * &head,char *sch)//统计 sch 在文章中出现的次数{LINE *p=head;int count=0;int len1=0;int len2=strlen(sch);int i,j,k;do{len1=strlen(p->data);//当前行的字符数for(i=0;i<len1;i++){if(p->data[i]==sch[0]){k=0;for(j=0;j<=len2-1;j++)if(p->data[i+j]==sch[j])k=k+1;if(k==len2) {count++;i=i+k-1;}}}}while((p=p->next)!=NULL);return count;}/**特定字符串的删除**/void del_string_word(char *s,char *sch){char *p=strstr(s,sch);char tmp[80];int len=strlen(s);int k,kk;int i=len-strlen(p);int j=i+strlen(sch);int count=0;for(k=0;k<i;k++)tmp[count++]=s[k];for(kk=j;kk<len;kk++)tmp[count++]=s[kk];tmp[count]='\0';strcpy(s,tmp);}void Del_String(LINE * &head,char *sch)//删除指定的字符串{LINE *p=head;do{while(strstr(p->data,sch)!=NULL)del_string_word(p->data,sch);}while((p=p->next)!=NULL);}/**特定字符串的替换**/void replace_string_word(char *s,char *sch,char *reh){int StringLen;char caNewString[100];char *FindPos = strstr(s, sch);// if((!FindPos) || (!sch))// return -1;while(FindPos){memset(caNewString, 0, sizeof(caNewString));StringLen = FindPos - s;strncpy(caNewString, s, StringLen);strcat(caNewString, reh);strcat(caNewString, FindPos + strlen(sch));strcpy(s, caNewString);FindPos = strstr(s, sch);}/* return 0; */}void Replace_String(LINE * &head,char *sch,char *reh)//替换指定的字符串{LINE *p=head;do{while(strstr(p->data,sch)!=NULL)replace_string_word(p->data,sch,reh);}while((p=p->next)!=NULL);}/**打印输入的文本**/void OutPutTxt(LINE * &head)//向屏幕输出文章{LINE *p=head;printf("文本文件输出如下:");do{printf("%s\n",p->data);}while((p=p->next)!=NULL);}void Count(LINE * &head){printf("文章统计信息结果:\n");printf("全部字母数:%d\n",Count_Letter(head));printf("数字个数:%d\n",Count_Num(head));printf("空格个数: %d \n",Count_Space(head));printf("文章总字数: %d\n",(Count_All_Word(head)+Count_Num(head)+Count_Space(head)+Co unt_Letter(head))/2);printf("\n");}void main(){LINE *head;char sch[20];char reh[20];char ID[10];char ch;char tmp_sch[20];char tmp_rch[20];3调试报告在本次程序设计中,在编译过程中,出现了几次问题(1)错误提示:error C2660: 'search' : function does not take 1 parameters错误类型: Search函数参数错误改正方法:将case语句后加break语句进行返回。

相关文档
最新文档