基于C语言字符串处理算法研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于C语言字符串处理算法研究

基于C语言字符串处理算法研究   摘要:本文针对字符串中取出整型数据这一问题提出了更加直观简单的算法,并用数组法和指针法都将其实现。实践证明,此算法正确且时间复杂度低,学生容易理解且能建立字符串处理的编程思想。   关键词:字符串;算法;指针法;时间复杂度   中图分类号:G642 文献标识码:B      字符串处理是程序设计中最常见的操作,掌握对字符串的处理也是学习一种语言的基础,对解决实际问题是非常重要的。对C语言课程也不例外,字符串处理问题是C语言课程中的基础知识,也是重点内容。但历年的教学中却发现很多学生对字会串处理这方面的知识掌握的并不好,遇到对字符串处理问题时不知从何入手。究其原因主要有:(1)对字符串的特点不清楚;(2)对字符串的基本处理方法没有掌握;(3)教材中的一些字符串处理算法比较复杂,不够直观,学生不易理解;(4)学生没有建立字符串处理的编程思想。根据多年的教学经验及对字符串处理的算法研究,下面针对一个具体的字符串处理问题进行了分析,找到了一种既直观又简单算法。      1问题的提出[1]      参考文献[1]中有这样一个问题:有一个字符串,内有数字和非数字字符(例如:a123x456 17960?234ext1234)将   其中的连续的数字作为一个整数,依次存放到数组a中(例如123存放在a[0]中,456存放在a[1]……统计其中有多少个整数,并输出这些数)。   对于上述问题参考文献[2]给出了具体编写的程序,采用的是指针法,但对于初学者来讲理解起来非常困难,且程序语句比较长。经过对问题的分析,我对此算法进行了改进,分别用数组法与指针法进行了编写,在给学生讲解时,学生很容易理解,且算法直观易懂,时间复杂度降低。      2改进算法      2.1数组法   图1为数组法算法的N-S结构图。      算法思想:处理字符串要一个一个字符处理,从字符串的第一个字符开始到字符串的最后一个字符,即遇到字符串结束标志\0结束循环,所以外循环为while(x[i]!=\0)。当字符为非数字字符时不用作任何处理,只是将循环变量的值加1让处理的字符后移一个;当字符为数字字符即x[i]>=0x[i]<=9时,说明一个整型数据开始,且将其存放到下标为count的数组元素a[count]中,这个元素的初值设置为零,即a[count]=0。然后用公式x[i]-0将第一个数字字符变成一位整型数据,再利用公式a[count]=a[count]*   10+x[i]-0;将其累加到数组元素a[count]中,如果后面还有连续的数字字符,则用同样的办法进行转换及累加,只到非数字字符时此整型数据计算结束。例如a123x456 17960?234ext1234的处理方法是:   第一步:取到第一个字符为’a’,因为该字符是非数字字符,故对该字符不作任何处理,只是将循环变量i的值加1,开始下一次循环以获取第下一个字符。   第二步:当取到第二个字符’1’时,经判断此字符为数字字符,则说明一个整型数据开始,则将其存放在数组元素a[count]中, 此时count=0,a[count]实际上是a[0]。首先将其初始值清零即a[count]=0,然后利用公式a[count]=   a[count]*10+x[i]-0将当前得到的数字字符存放于该数组元素中,即a[0]=a[0]*10+x[i]-0=0*10+1-0=1。将循环变量i的值加1,开始下一次循环以获取下一个字符。   第三步:因为可能会有多位连续的数字字符存在,所以要用do―while循环语句,若不符合x[i]>=0x[i]<=9,   则该整型数据结束。当取到下一个字符’2’时,符合do―while循环语句的循环条件x[i]>=0x[i]<=9,说明要将此数字字符转换为数值并累加a[count]中。利用的公式仍为a[count]=a[count]*10+x[i]-0 ,即a[0]=a[0]*10+x[i]-   0=1*10+2=12。将循环变量i的值加1,开始下一次循环以获取下一个字符。   第四步:当取到下一个字符’3’时,符合do―while循环语句的循环条件x[i]>=0x[i]<=9,说明要将此数字字符转换为数值并累加a[count]中。利用的公式仍为a[count]=a[count]*10+x[i]-0 ,即a[0]=a[0]*10+x[i]-0=   12*10+3=123。将循环变量i的值加1,开始下一次循环以获取下一个字符。   第五步:当取到下一个字符然’x’时,不再符合do―while循环语句的循环条件x[i]>=0x[i]<=9,说明一个整型数据结束,即a[0]的值为123。然后将统计变

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档