基于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语言连加连积类问题快速设计   摘要:从循环结构的特点出发分析连加连积类问题,总结出数列中数据的构造规律,给出该类问题的编程模板,列举实例进一步验证该类问题的编程方法。该教学设计在我校C语言教学中,效果非常明显。   关键词:C语言;程序设计;连加;连积;模板   中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)10-0069-03   C语言是目前使用最广泛的高级程序设计语言之一。C语言表达能力强、使用方便灵活,目标程序执行效率高、可移植性好,既可用于编写系统软件,也可用于编写应用软件[1-2]。因此很多高校把C语言作为理工类专业的计算机程序设计的入门语言。C语言包含了三种基本结构:顺序结构、选择结构和循环结构,其中循环结构的程序设计是最难的部分。笔者在讲解时,通常把问题进行分类,如连加和连积类、穷举类、迭代类、图案打印类等等。其中,连加和连积类是最基本的,也是学生必须掌握的基本编程技巧。但是,学生们在听老师讲课的时候基本上能够理解,但是自己动手编程实现时,往往就不能得到正确结果,有的问题甚至无从下手。究其原因,笔者认为主要是学生们没有真正理解循环结构的本质以及连加和连积类问题的特点。本文从循环结构的特点出发,多角度分析连加连积类问题,给出这类问题的编程模板,让读者能够准确快速地编程实现该类问题。   1 连加与连积类问题分析   连加与连积类问题核心是如何通过已知条件去构造数列中第[n]个数[Jn,1≤n]。如果每个数都能构造出来,那么把这个数进行连加和连乘就变得相当简单。已知条件通常是[Jn]的位序[n]以及[Jn]之前的数列[Jk,1≤kn],即通过位序[n]和已经构造出的数列[Jk]去构造[Jn]。在连加和连积类问题中,[Jn]的构造形式通常有四种形式:   1)[Jn]仅仅与其位序[n]有关,即[Jn=f(n)]。   2)[Jn]仅仅通过前面已经得到的序列[Jk]构造,即[Jn=f(Jk),1≤kn]。一般情况下[k=n-1]或[k=n-2],即[Jn]仅仅与它前面一项[Jn-1]有关,或者与前面两项[Jn-2]、[Jn-1]有关。   3)[Jn]不仅与其位序[n]有关,而且还与前面已经得到的序列[Jk]有关,[Jn=f(n,Jk)]。   4)[Jn]不能由上述三个式子构造出来,但是[Jn]中的一部分[Jn]却可以,而且[Jn]一旦得到,那么[Jn]也就得到了。   2 连加与连积类问题模板代码设计   当把数列的[Jn]项是如何构造的分析出来之后,接下来就可以设计模板代码了。   首先以连加类问题为例分析编码步骤:   2.1连加类问题模板代码设计步骤   1)定义三个变量[i,j,sum]。其中[i]表示位序,即当前进行累加的数是数列中第几项,[j]表示参加累加的数,[sum]是累加器。根据具体题目,为[i,j,sum]选择合适的数据类型,并对其进行如下初始化:[i=1],[ j=]数列中的首项,[sum=0]。   2)建立循环条件表达式。根据题目,判断循环是基于“次数”已知的循环,还是基于“一直连加,直到某一项满足某个条件就停止”的循环。对于“次数”已知的循环,则其循环条件表达式写成[i≤=次数];对于“一直连加,直到某一项满足某个条件就停止”的循环,则其循环条件表达式写成“[j]满足的条件”。   3)写模板代码。   这段模板代码中,最核心的是“如何构造下一次运算的[j]”。   2.2连积类问题模板代码设计   连积类问题与连加类问题很相似,主要是把连加类问题的步骤(1)的[sum]改成[sum=1],把步骤(3)的[sum+=j]改成[sum*=j]。另外,因为连乘容易导致[sum]值超出int类型范围,所以在连加类问题中定义成int类型的问题,在连乘类问题里,可能要改成double范围。   3 案例验证   为了让读者更好地理解上述方法,本节列举多个实例进行讲解。   例1:求下列数列前10项和。   分析:从题目中可以看出:[Jn=f(n)=Jn-1*10+a];因为是求前10个数之和,即循环次数是已知的,所以循环条件表达式写成[i≤=10]。定义三个整型变量并且初始化[i,j,sum],依据模板代码,本题的代码如下:   int i=1,j=2/*数列的首项是2*/,sum=0;   [a+aa+…+a…a]   分析:从题目中可以看出:[Jn=fn=Jn-1*10+a];因为是求前n个数之和,即循环次数是已知的,所以循环条件表达式写成[i≤=n]。定义三个整型变量并且初始化[i,j,sum],依据模板代码,本题的代码如下:   对于模板代码中的核心j=j*10+a,读者要清楚=右边的j是当

文档评论(0)

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

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

1亿VIP精品文档

相关文档