串的查找和替换.docx

上传人:b****5 文档编号:6471552 上传时间:2023-01-06 格式:DOCX 页数:15 大小:60.82KB
下载 相关 举报
串的查找和替换.docx_第1页
第1页 / 共15页
串的查找和替换.docx_第2页
第2页 / 共15页
串的查找和替换.docx_第3页
第3页 / 共15页
串的查找和替换.docx_第4页
第4页 / 共15页
串的查找和替换.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

串的查找和替换.docx

《串的查找和替换.docx》由会员分享,可在线阅读,更多相关《串的查找和替换.docx(15页珍藏版)》请在冰豆网上搜索。

串的查找和替换.docx

串的查找和替换

 

计算机工程学院

实习报告

课程名称:

算法设计技能训练

 

设计题目:

串的查找和替换

院系:

计算机工程学院

专业:

计算机科学与技术(单招)

学生姓名:

高苏生学号:

起止日期:

2015年1月5日~2015年1月12日

指导教师:

严云洋张亚红

学年学期:

2014~2015学年第1学期

 

设计任务书

课题

名称

集合运算

设计

目的

综合运用程序设计、算法设计的方法,对实际应用中的问题进行数据分析和组织、算法设计和分析、程序设计和调试等环节,将理论与实践相结合,掌握利用计算机解决实际问题的基本方法和基本步骤,培养学生良好的程序设计风格、算法设计和分析能力。

实验

环境

PIV以上计算机,WindowXP以上操作系统;

编程语言不限。

任务

要求

要求学生结合课程体系的实际需求及实践能力、实验条件等外部因素,完成集合运算课题的设计任务。

课题功能:

功能:

打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。

任务要求:

1)界面友好,函数功能要划分好;2)总体设计应画流程图;3)程序要加必要的注释。

4)学生完成设计任务后,按要求提交算法设计报告,设计报告规范化,并能够反映算法设计的实际内容。

工作进度计划

序号

起止时间

工作内容

1

1~6周

制定课程设计计划,编写课程设计指导书

2

13~14周

下发任务,学生选题,分组,查阅资料

3

18周

上机系统调试,课程设计报告,课程设计答辩

4

18周

上交报告电子及打印文档

指导教师:

2015年1月5日

课程设计摘要(题目)…………………………………………………03

1.引言………………………………………………………………03

2.需求分析…………………………………………………………04

3程序源代码………………………………………………………13

4.测试结果…………………………………………………………16

5.设计体会…………………………………………………………18

参考文献……………………………………………………………20

1.设计内容和要求

设计内容:

打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。

设计要求:

(1)符合课题要求,实现相应功能;

(2)操作方便易行;

(3)注意程序的实用性、安全性;

2.本设计所采用的数据结构

3.1数组

数组在编程应用时调用很方便随意,但在更改数组时比较麻烦必须调用数组中的所有元素。

charkeyWords[SIZE];

charcopyWords[SIZE];

charstrOne[MAXLEN];

charstrTwo[MAXLEN];

3.2串的匹配

if(keyWords[0]==strOne[i])

if(keyWords[j]!

=strOne[countFlag++])

3.功能模块详细设计

3.1详细设计思想

a)需求分析

打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。

b)概要设计

Ø程序头设计

对程序作简单介绍以及输出程序制作人的基本信息。

main()

{

printf("\n\n\n\t\t\t数据结构课程设计\n");

printf("\n\t\t\t题目:

串的查找与替换\n");

printf("\n\t\t\t专业:

计算机科学与技术\n");

printf("\n\t\t\t学号:

\n");

printf("\n\t\t\t姓名:

高苏生");

printf("\n\t程序作用:

打开一篇英语作文,在该文章中找出所有给定的单词,然后对\n\t所有给定的单词替换为另一个单词再存盘。

");

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

}

主函数voidmain()

通过for循环对字符串进行匹配,找到匹配的单词然后将copy的单词字符放入strTwo数组中,不匹配的单词也放入数组strTwo中完成替换,最后把strTwo中的字符放回文件中完成操作。

C)设计思想

串的查找与替换要实现的功能是:

打开一篇英文文章,在该文章中找出所有给定的单词,然后对所有给定的单词替换为另外一个单词,再存盘。

首先实现程序比较简单的功能,即:

输入要替换的单词和给定单词gets(keyWords);gets(copyWords)。

然后实现程序打开文件的功能。

最后编写最核心的替换功能,首先用关键字来匹配要查找的单词,第一个单词匹配上的话再判断这个关键字在不在单词的首字母上,否则不匹配,主要是要实现替换单词的功能不替换其他单词中的字符串。

然后匹配第二个字母,这样一次类推的判断。

不匹配的单词直接放入strTwo数组中,匹配的单词先替换然后再放入strTwo数组中。

D)流程图

3.2核心代码

Ø打开文件

if((fp=fopen("filename","r"))==NULL)

{

printf("文件打开失败!

\n");

exit(0);

}

Ø查找和替换单词

while(!

feof(fp))/*读文件*/

{

strOne[countOne++]=fgetc(fp);/*这是从指定稳中取得一个字符strOne[countOne++]=fgets(fp);这是从指定文章中取得一个字符串*/

}

countOne--;/*减去最后一个文件结束字符*/

for(i=0;i

{

if(keyWords[0]==strOne[i])

{

if((''==strOne[i-1])||('\n'==strOne[i-1])||(0==i))

{

flag=1;

countFlag=i+1;

for(j=1;keyWords[j]!

='\0';j++)

{

if(keyWords[j]!

=strOne[countFlag++])/*是否匹配*/

{

flag=0;

break;

}

}

if((''==strOne[countFlag])||('\n'==strOne[countFlag])||(EOF==strOne[countFlag]))/*2.检查单词后的一个字符*/

{

if(1==flag)/*若匹配,则进行拷贝*/

{

i=countFlag-1;

for(j=0;copyWords[j]!

='\0';j++)

{

strTwo[countTwo++]=copyWords[j];

}

}

}

else/*另外*/

{

strTwo[countTwo++]=strOne[i];

}

}

else/*另外*/

{

strTwo[countTwo++]=strOne[i];

}

}

else/*另外*/

{

strTwo[countTwo++]=strOne[i];

}

}

3.3调试分析

1开始执行

2.调试程序

4.课程设计心得及存在问题

心得:

通过这次做课程设计,发现了学习中的很多问题,平时学习的东西在做起来时有很大的困难,独立构思一个程序很难,不像平时看程序一样简单。

想出来程序结构后,就一个简单的打开文件就费了好大的劲,运行几次都出现了异常,最后找学长请教才学会使用exit()命令。

核心程序就更复杂了,做了很久都没头绪,最后在一位学长的辅助下完成了核心程序。

存在问题:

刚开始实现的功能是先输入要查找和替换的单词,再输入要打开的文件,做完程序后想把打开文件的程序放到前面,可换位置后就一直出错。

5.源程序

#include

#include

#defineSIZE20/*查找单词字符和输入替换单词少于20*/

#defineMAXLEN10000/*文章字符不大于10000*/

voidmain()

{

inti,j;

intflag;/*用于标记匹配单词*/

intcountFlag;/*用于检查匹配计数*/

intcountOne=0;/*记录未改文章字符个数*/

intcountTwo=0;/*记录改后文章字符个数*/

charkeyWords[SIZE];/*查找单词*/

charcopyWords[SIZE];/*替换单词*/

charstrOne[MAXLEN];/*将未改文章的所有字符储存在里面*/

charstrTwo[MAXLEN];/*将改后文章的所有字符储存在里面*/

charfilename[20];/*输入的文件名的字符个数*/

{

printf("\n\n\n\t\t\t数据结构课程设计\n");

printf("\n\t\t\t题目:

串的查找与替换\n");

printf("\n\t\t\t专业:

计算机科学与技术\n");

printf("\n\t\t\t学号:

\n");

printf("\n\t\t\t姓名:

高苏生");

printf("\n\t程序作用:

打开一篇英语作文,在该文章中找出所有给定的单词,然后对\n\t所有给定的单词替换为另一个单词再存盘。

");

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

}

FILE*fp;

printf("请输入要查找的单词:

");

gets(keyWords);

printf("请输入要替换的单词:

");

gets(copyWords);

printf("请输入要打开的文件名:

");

scanf("%s",filename);

if((fp=fopen(filename,"r"))==NULL)/*读文件,前边的就是输入的文件名,后边是指只读read*/

{

printf("文件打开失败!

\n");

exit(0);

}

while(!

feof(fp))/*读文件*/

{

strOne[countOne++]=fgetc(fp);/*这是从指定稳中取得一个字符strOne[countOne++]=fgets(fp);这是从指定文章中取得一个字符串*/

}

countOne--;/*减去最后一个文件结束字符*/

for(i=0;i

{

if(keyWords[0]==strOne[i])/*判断查找单词第一个字符是否匹配*/

{

if((''==strOne[i-1])||('\n'==strOne[i-1])||(0==i))/*1.检查单词前的一个字符*/

{

flag=1;

countFlag=i+1;

for(j=1;keyWords[j]!

='\0';j++)

{

if(keyWords[j]!

=strOne[countFlag++])/*是否匹配*/

{

flag=0;

break;

}

}

if((''==strOne[countFlag])||('\n'==strOne[countFlag])||(EOF==strOne[countFlag]))/*2.检查单词后的一个字符*/

{

if(1==flag)/*若匹配,则进行拷贝*/

{

i=countFlag-1;

for(j=0;copyWords[j]!

='\0';j++)

{

strTwo[countTwo++]=copyWords[j];

}

}

}

else/*另外*/

{

strTwo[countTwo++]=strOne[i];

}

}

else/*另外*/

{

strTwo[countTwo++]=strOne[i];

}

}

else/*另外*/

{

strTwo[countTwo++]=strOne[i];

}

}

fclose(fp);

if((fp=fopen("filename","w"))==NULL)/*写入文件*/

{

printf("文件打开失败!

\n");

exit

(1);

}

for(i=0;i

{

fputc(strTwo[i],fp);

}

fclose(fp);

}

参考文献

【1】严蔚敏,吴伟民数据结构(C语言版)清华大学出版社

【2】谭浩强C程序设计(第三版)清华大学出版社

【3】胡学钢.数据结构算法设计指导[M].北京:

清华大学出版社,1999

【4】罗宇等.数据结构[M].北京:

北京邮电大学出版社,2003

指导教师评语

学号

姓名

李克勤

班级

计算机11112

选题

名称

哈夫曼树应用

序号

评价内容

权重(%)

得分

1

考勤记录、学习态度、工作作风与表现。

5

2

自学情况:

上网检索机时数、文献阅读情况(笔记)。

10

3

论文选题是否先进,是否具有前沿性或前瞻性。

5

4

成果验收:

是否完成设计任务;能否运行、可操作性如何等。

20

5

报告的格式规范程度、是否图文并茂、语言规范及流畅程度;主题是否鲜明、重心是否突出、论述是否充分、结论是否正确;是否提出了自己的独到见解。

30

6

文献引用是否合理、充分、真实。

5

7

答辩情况:

自我陈述、回答问题的正确性、用语准确性、逻辑思维、是否具有独到见解等。

25

合计

指导教师(签章):

年月日

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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