用一个字符数组保存一个英文句子高级语言课程设计.docx
- 文档编号:18093609
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:20
- 大小:158.36KB
用一个字符数组保存一个英文句子高级语言课程设计.docx
《用一个字符数组保存一个英文句子高级语言课程设计.docx》由会员分享,可在线阅读,更多相关《用一个字符数组保存一个英文句子高级语言课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
用一个字符数组保存一个英文句子高级语言课程设计
《高级语言程序设计》课程设计
设计题目:
用一个字符数组保存一个英文句子
指导教师:
班级:
小组人员:
计算机科学与工程系
2011年8月
附录二:
参考文献……………………………………………………………16
一、课程设计题目:
用一个字符数组保存一个英文句子
二、课题设计要求:
1.删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间留一个空格);
2.统计该句子中单词出现的频率;
3.查找并替换某个单词。
三、系统环境:
1.硬件平台
硬件平台是程序设计与运行所需要的硬件环境,主要包括计算机机型及硬件配置。
由于本课程是用字符数组保存一个英文句子的程序设计,因此对计算机硬件的要求不高,比较经济,只要配备有PII300处理器(或以上)、64M内存(或以上)、20G硬(或以上)的普通微机即可顺利运行。
2.软件平台
软件平台是程序设计与运行的软件环境。
本程序开发使用的是VisualC++6.0
⑴VisualC++6.0特点
VisualC++6.0是功能最为强大的可视化开发工具之一,它不仅支持传统的软件开发方法更重要的是它能支持面向对象、可视化的开发风格。
因此VisualC++6.0又称作是一个集成开发工具,它提供了软件代码自动生成和可视化资源编辑功能。
⑵VisualC++6.0具有的优点:
提供了面向对象的应用程序框架MFC(MicrosoftFoundationClass),简化了程序员的编程工作,提高了模块的可重用性;提供了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、ClassWizard、VisualStudio、WizardBar等,实现了直观、可视的程序设计风格,方便的编译和管理各种类,维护程序的源代码;封装了Windows的API函数、USER、KERNEL、GDI函数,简化了编程时创建、维护窗口的许多复杂的工作。
其中MFC是一个很大的、扩展了的C++类层次结构,它能使开发Windows应用程序变得更加容易。
MFC是在整个Windows家族中都是兼容的,也就是说,无论是Windows3.x、Windows95还是WindowsNT,所使用的MFC是兼容的。
每当新的Windows版本出现时,MFC也会得到修改以便使旧的编译器和代码能在新的系统中工作。
MFC也回得到扩展,添加新的特性、变得更加容易建立应用程序。
使用MFC的最大优点是它为你做了所有最难做的事。
MFC中包含了上成千上万行正确、优化和功能强大的Windows代码。
你所调用的很多成员函数完成了你自己可能很难完成的工作。
从这点上将,MFC极大地加快了你的程序开发速度。
由于MFC编程方法充分利用了面向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序的良好的可调试性。
四、课程设计目的:
1.掌握高级程序设计语言的基本思想、基本概念、基本方法和基本技能;
2.初步学会利用c语言编制一些程序以解决一般实际应用问题;
3.培养学生分析问题和解决问题的能力;
五、程序设计内容:
★第一步:
删除该英文句子中的前导空格,后导空格,并删除句子中多余的空格(单词之间留一个空格);流程图设计如下:
程序设计①
#include
#include
charstr[200];------------定义字符串str(最大的存储量为200个字符)。
chartmp[200];------------定义字符串tmp(最大的存储量为200个字符)。
charfrequency[200];--------定义字符串frequency(最大的存储量为200个字符)。
voidtz()---------------函数tz
{-------------函数tz开始
inti,j,flag,len;-------------定义整形字符i,j,flag,len
j=0;--------------给j赋值0
flag=1;----------------给flag赋值1
len=strlen(str);------------把strlen(str)值赋值给len
for(i=0;i {---------for循环,开始 if(str[i]==''&&flag==1)-------------if判断,str[i]==''并且flag==1 {-------------if条件判断开始 tmp[j++]=str[i];-------------使用str[i]给tmp[J++]赋值 flag=0;-------------给flag赋值0 }-------------if条件判断结束 else-------------else如果上面if条件不符合 if(str[i]! ='')-------------if条件判断,判断str[i]! ='' {-------if条件开始 tmp[j++]=str[i];---------使用str[i]给tmp[J++]赋值 flag=1;---------给flag赋值1 }---------if条件结束 }---------for循环,结束 len=strlen(tmp);---------------把strlen(tmp)值赋值给len j=0;------------给j赋值0 if(tmp[0]! ='')---------if条件判断,判断条件是tmp[0]! ='' str[j++]=tmp[0];--------符合上面条件,使用tmp[0]给str[j++]赋值 for(i=1;i str[j++]=tmp[i];-------------使用tmp[i]给str[j++]赋值 if(tmp[len-1]! ='')------------if条件判断,判断条件tmp[len-1]! ='' str[j++]=tmp[len-1];-----符合if条件下,使用tmp[len-1]给str[j++]赋值 str[j]='\0';--------------给str[j]赋值'\0'; printf("\ntzresult: \n%s\n",str);----输出符合"删除该句子中的前导空格,后导空格,并删除句子中多余的空格;单词之间只留一个空格"条件的字符串 }-------函数tz结束 ★第二步: 统计该句子中单词出现的频率 ;流程图设计如下: 程序设计② #include #include charstr[200];---------定义字符串str(最大的存储量为200个字符)。 chartmp[200];--------定义字符串tmp(最大的存储量为200个字符)。 charfrequency[200];------定义字符串frequency(最大的存储量为200个字符)。 voidtj()------------函数tj {-----------函数tj开始 inti,j,len,k,h,count;----------定义整形字符i,j,len,k,h,count k=0;-------------给k赋值0 len=strlen(str);---------------把strlen(str)值赋值给len printf("\nfrequency: \n");-----------输出\nfrequency: \n" for(i=0;i {----------for循环,开始 j=0;--------------给j赋值0 count=0;------------给count赋值0 while(str[i]! =''&&str[i]! ='\0')---while循环,循环条件是str[i]! =''并且str[i]! ='\0' tmp[j++]=str[i++];-----------使用str[i++]给tmp[j++]赋值 tmp[j]='\0';-----------给tmp[j]赋值为'\0' for(k=0;k {----------for循环,开始 h=0;-----------给h赋值0 while(str[k]! =''&&str[k]! ='\0')------while循环 frequency[h++]=str[k++];--------使用str[k++]给frequency[h++]赋值 frequency[h]='\0';-------------给frequency[h]赋值'\0' if(! strcmp(tmp,frequency))---if条件判断,判断条件是! strcmp(tmp,frequency) count++;---------count自增相当于count=count+1 }---------for循环,结束 printf("%s: %d\n",tmp,count);-------输出每个单词以及他们的个数 }---------for循环,结束 }-------------函数tj结束 ★第三步: 查找并替换某个单词。 流程图设计如下: 程序设计③ #include #include charstr[200];-------定义字符串str(最大的存储量为200个字符)。 chartmp[200];--------定义字符串tmp(最大的存储量为200个字符)。 charfrequency[200];------定义字符串frequency(最大的存储量为200个字符)。 voidfind()-------函数find {--------------函数find开始 charkey[200],left[200],right[200];---------定义字符数组key,left,right intlen,i,k,h;-----------定义整形字符len,i,k,h k=0;-------------给整形变量k赋值 printf("\ninputthewordyouwanttofind: ");--输出一个字符串 scanf("%s",key);---------给字符串key赋值 len=strlen(str);-----------把strlen(str)值赋值给len for(k=0;k {-------for循环开始 h=0;--------------给h赋值0 while(str[k]! =''&&str[k]! ='\0')----str[k]! =''而且str[k]! ='\0'两个条件同时成立,为执行该while循环的判定条件。 {----------while循环开始 tmp[h++]=str[k++];----------使用str[k++]给tmp[h++]赋值 }---------------while循环结束 tmp[h]='\0';--------------给tmp[h]赋值'\0' if(! strcmp(tmp,key))-----------if条件判断,! strcmp(tmp,key)成立 {--------if条件判断开始 printf("%d\n",k);----------输出要修改字符所在的下标 printf("\ninputthewordtoreplacewhatyoufind: ");----输出字符串"\ninputthewordtoreplacewhatyoufind: " scanf("%s",tmp);------给字符串tmp赋值 len=strlen(key);----------把strlen(key)值赋值给len for(h=0;h left[h]=str[h];----------使用str[h]给left[h]赋值 left[h]='\0';---------给left[h]赋值'\0' i=0;------------给i赋值0 for(h=k;h right[i++]=str[h];-----------使用str[h]给right[i++]赋值 right[i]='\0';-----------给right[i]赋值'\0' str[0]='\0';--------给str[0]赋值'\0' strcat(str,left);------------将left字符串连接到str字符串的后面 strcat(str,tmp);-------------将tmp字符串连接到str字符串的后面 strcat(str,right);--------------将right字符串连接到str字符串的后面 printf("\nreplaced: \n%s\n\n",str);----输出被替换后的字符串str }-------------if条件判断结束 }-------------for循环结束 }-----------------函数find结束 ★第四步: 完善程序,设计输入输出程序,如下: #include #include charstr[200];------------定义字符串str(最大的存储量为200个字符)。 chartmp[200];------------定义字符串tmp(最大的存储量为200个字符)。 charfrequency[200];--------定义字符串frequency(最大的存储量为200个字符)。 intmain()-----------这里是这个编程语言的开始,主函数。 {---------------主函数开始。 printf("inputstr: \n");-------输出"inputstr: \n"这个字符串 str[0]='\0';----------给str[0]赋值'\0' gets(str);-------------进入函数gets tz();--------------进入函数tz tj();-------------进入函数tj find();---------------进入函数find return0;------------返回一个0 }-------------主函数结束。 六.设计结果与分析: 运行过程中出现了很多次错误导致运行结果错误,在老师的指导下以及我们查阅资料,我们查找出程序中的错误,经过改正,最终运行结果如下: 七.心得体会 【】通过本次课程设计我第一次通过自己的实践对书本上的知识进行了运用。 在这个程序中,主要应用了上学期所学习的循环,条件语句,数组以及调用函数。 这些知识的应用使我对课本内容的认识得到了加深。 在编写程序的过程中,也出现了很多错误。 比如程序语句错误导致检测时连续报错;函数语句编写错误导致输出结果与实际不符等。 出现这些情况后,我们小组成员一起讨论,思考,通过对一些新知识的学习和对网上相关资料的阅览,我们发现了程序的问题所在并进行了改正。 最后得到了正确的结果。 从这次课程设计真的学到了很多,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时也感觉到自己专业知识掌握的不够,在设计中走了很多弯路,刚开始是根本无从下手,不知道要干嘛,如果平时课余时间多加强对这些专业知识的学习,那么在这次课程设计中将会少走很多的弯路。 整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑周全。 这段时间里,我又学到了更多C知识,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。 也看到了团队精神和互帮互助的重要性,这一点会让我终生受益。 如果没有同学们的互相帮助,这次课程设计就不会这么顺利,这种同舟共济的团队精神深深震撼了我,《礼记学记》上也有讲过: “独学而无友,则孤漏而寡闻”。 当然这次程序设计也让我看到了自己基础的薄弱。 古人有诗云: “路漫漫其修远兮,吾将上下而求索”。 从今天起我将不断继续求索,学习之路也好,人生之路也罢。 【】这是第一次进行课程设计,可能完成的不是很好,不过通过这一次的磨练,我也确实发现了自己的一些问题。 首先,就是发现了自己的C语言课程学的真是不理想,缺少了同组人员的帮忙,我就无法完成这一次的课程设计。 而且一直无法正确的把握思路,所以浪费了不少时间。 其次,我现在才发现C语言远比我想象中的要有更大的用处,从中我是真的体会到了作为一个程序编辑员的辛苦,每一行的程序都要进行的多次的检查,才能编出一个完美的程序。 最后,觉得这个课程设计真是花费了同组人员的相当的精力,不过完成之后还是有一点点满足的,这也算是自己的一次跨越吧。 【】一个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。 是啊,读了那么多年的书,课程设计可是第一次。 看着劳动成果,很欣慰! 虽然这不是我一个人做的,是大家的共同努力得来的。 另外平时扎实的基础也很关键,因为如果你平时学得就不怎么样,那么你面对这么一个比较有难度的程序,你可能会望而却步,看他人的程序都是个难点,更别说让你自己去设计。 为了解决此。 类问题,最好就是多向同学,老师请教,不要怕难为情。 尤其是老师,评他们多年的编写程序的经验。 整个课程设计终于完成了,完成的好辛苦,好艰难,但还是顺利的完成了。 我们付出了很多心血和汗水,但我认为我们得到的更多。 同时有些同学积极的态度让我感到一丝惭愧,他们所体现出的坚持不懈的品质更令我折服。 总之我受益匪浅。 【】程序有点复杂,对于初学习程序的我们有很大难度,通个星期的折腾,总算把课程设计给完成了,这是一个坚苦而又漫长的过程。 是啊,读了那么多年的书,课程设计可是第一次。 看着劳动成果,很欣慰! 虽然这不是我一个人做的,是大家的共同努力得来的。 “也许完成不了! ”一个星期前我们这样说,“完成他没问题! ”一个星期前我们这样说,现在我们可以说: “哈哈,完成啦”! 刚开始,可以说是没有头绪,于是就去图书馆找资料,找到了一些关于画图方面的,可是这点小进展远远不够,这只是一个小小的开始。 下一步是上网查,找到了些与我们题目相似的,那时我们每个人都很高兴,可是那还不是我们要的,于是又上网查到了些有关的函数等等,终于在我们大家的努力下,完成了这个程序 附录一: 程序源代码 #include #include charstr[200]; chartmp[200]; charfrequency[200]; voidtz() { inti,j,flag,len; j=0; flag=1; len=strlen(str); for(i=0;i { if(str[i]==''&&flag==1) { tmp[j++]=str[i]; flag=0; } else if(str[i]! ='') { tmp[j++]=str[i]; flag=1; } } len=strlen(tmp); j=0; if(tmp[0]! ='') str[j++]=tmp[0]; for(i=1;i str[j++]=tmp[i]; if(tmp[len-1]! ='') str[j++]=tmp[len-1]; str[j]='\0'; printf("\ntzresult: \n%s\n",str); } voidtj() { inti,j,len,k,h,count; k=0; len=strlen(str); printf("\nfrequency: \n"); for(i=0;i { j=0; count=0; while(str[i]! =''&&str[i]! ='\0') tmp[j++]=str[i++]; tmp[j]='\0'; for(k=0;k { h=0; while(str[k]! =''&&str[k]! ='\0') frequency[h++]=str[k++]; frequency[h]='\0'; if(! strcmp(tmp,frequency)) count++; } printf("%s: %d\n",tmp,count); } } voidfind() { charkey[200],left[200],right[200]; intl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 一个 字符 数组 保存 英文 句子 高级 语言 课程设计