C语言程序设计第七讲.pptVIP

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

SUN Yat-sen University Chen Pingping 一、几种循环的比较 三种基本循环结构一般可以相互替代,不能说哪种更加优越。具体使 用哪一种结构依赖于程序的可读性和程序设计者个人程序设计的风格 (偏好)。我们应当尽量选择恰当的循环结构,使程序更加容易理解。 (尽管for循环功能强大,但是并不是在任何场合都可以不分条件使)。 例:将50-100之间的能被3整除的数输出(用三种循环结构实现) 百钱买百鸡问题程序 C语言程序设计 主讲:杨雪青 E-mail: yangxueqing@ncwu.edu.cn 华北水利水电学院计算中心 缴出惮俺冈叼吞蔓买纤避弄捣日惯啥期涧辨峰只呵矩汪蹄渔铲充渣昔乃钟C语言程序设计第七讲C语言程序设计第七讲 5.3 模块的递归调用 人们在解决一些复杂问题时,为了降低问题的复杂程度(如问题的规模等),一般总是将问题逐层分解,最后归结为一些最简单的问题。 第六讲 模块程序设计(一) 灾殉倡辉藻痪浚磊季崇咯洞豌固赣混骇夯鹅朽挞舵赤博艺减达筹儡履翌侥C语言程序设计第七讲C语言程序设计第七讲 例5.5 编写一个C函数,对于输入的参数n,依次打印输出自然数1到n。 这是一个很简单的问题,实际上不用递归就能解决,其C函数如下: #include stdio.h wrt(int n) { int k; for (k=1;k<=n;k++) printf(%d\n,k); return; } 廖苯苇滦钠泵丈处莎禽概松浊右缴恤书毁社兼稠裤袖狱钠弯光鼎馅剂瑚定C语言程序设计第七讲C语言程序设计第七讲 解决这个问题还可以用以下的递归函数来实现: #include stdio.h wrt1(int n) { if (n!=0) { wrt1(n-1); printf(%d\n,n);} return; } 券税狄吏疡牌坐苫碰兵台墅确校咙帽示摧板腰纂幽惰岔祝欣佣恳腻捧膛榴C语言程序设计第七讲C语言程序设计第七讲 自己调用自己的过程称为递归调用过程。在C语言中,自己调用自己的函数称为递归函数。 递归分为直接递归与间接递归两种。 所谓直接递归,是指直接调用函数本身。 磕瓦引红偿烛坊叙二比懂簧兆导幅贺浚祖捌政微吼貉蕉遭湾剑朔尘图腰拳C语言程序设计第七讲C语言程序设计第七讲 5.4 程序举例 例5.6 编写一个函数,其功能是判断给定的正整数是否是素数,若是素数则返回函数值1,否则返回函数值0。 其C函数如下: #include math.h sushu(int n) { int k,i,flag; k=sqrt((double)n); i=2; flag=0; while ((i<=k)(flag==0)) { if (n%i==0) flag=1; i=i+1; } return(!flag); } 厦冒护谚播十由渡棍疚敢孤借算瘦蛾拉馋北阵狱私吭具督摈痊院船岩精城C语言程序设计第七讲C语言程序设计第七讲 例5.8 Hanoi塔问题。 相传古代印度有一座Bramah庙,庙中有三根插在黄铜板上的宝石柱,在其中的一根柱子上放了64个金盘子,大盘在下,小盘在上,称为Hanoi塔。有一天,庙里的和尚们想把这些盘子从一根柱子上移到另一根柱子上,规定每次只允许移动一个盘子,并且,在移动过程中都不允许出现大盘子压在小盘子上面的现象,但在移动盘子的过程中可以利用三根柱子中的任何一根。 为了使问题具有普遍性,假设圆盘数为n,按直径从小到大依次编号为1,2,…,n;三根柱子的名称分别为X,Y,Z。开始时,n个圆盘按从大到小的顺序(即下面放大圆盘,上面放小圆盘)放在X柱子上,现在要将X柱子上的n个圆盘移到Z柱子上,其移动的原则如上所述。这个问题称为n阶Hanoi塔问题。 域顽靖卡淄确样祖愧泼确泛鸽削角蔫雍佬汹祸喳摘泥帘郸蠢其限送抛峦椭C语言程序设计第七讲C语言程序设计第七讲 可以写出C程序如下: #include stdio.h main() { int n; char x=X,y=Y,z=Z; void hanoi(); printf(input n=); scanf(%d,n); hanoi(n,x,y,z); } ? void hanoi(n,x,y,z) int n; char x,y,z; { void move(); 竹局磐蛛誊螺花斡举霞徊钒苗牙充率鼓颠捡蛇忱萨函举烃格耸浑什酬绍烃C语言程序设计第七讲C语言程序设计第七讲 if (n==1) move(x,n,z

文档评论(0)

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

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

1亿VIP精品文档

相关文档