c5_3循环算法举例.pptVIP

  • 23
  • 0
  • 约1.94千字
  • 约 11页
  • 2017-12-09 发布于河南
  • 举报
c5_3循环算法举例

循环程序设计(枚举算法举例) 算法举例: 1、穷举算法:对问题的所有可能一一测试,直到找出解或将全部状态测试过为止。 循环控制有两种办法:记数法与标志法。记数法是先要确定循环次数,然后逐次测试,完成测试次数后,循环结束。标志法是循环次数无法事先确定的情况下,就确定一个结束目标,达到目标后,使循环结束。 循环程序设计(枚举算法举例) 例1:百钱买百鸡。(鸡翁一值钱五,鸡母一值钱3,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何? 循环程序设计(枚举算法举例) Cocks从0到19,每取一个值,对hens的取值范围内的每个值依次测试,看能找到哪些hens及chicks满足题意(例L3_11) 循环程序设计(枚举算法举例) 使用枚举法,主要掌握两条原则: 1、确定搜索范围。 2、选择搜索策略。 搜索策略选择得好坏,直接决定程序的工作量的大小。 迭代(1) 算法2:迭代。不断用新值取代变量的旧值或由旧值递推出变量的新值的过程。 迭代(2) 迭代与下列因素有关: 迭代(3) 例L3_13 求2个非负整数的最大公约数。 作业 求两个整数的最小公倍数。 找出所有的三位数,要求它的各位数字的立方和正好等于这个三位数。例如:153=13+53+33就是这样的三位数。 一位卡车司机违反交通规则,撞死了行人。当时有三位目击者,都没有看清卡车的牌照号码,只记住了牌照的某些特征:甲记住前两个数字是相同的,乙记住牌照的后两位数字是相同的,丙是一位数学家,他说:“牌照号码肯定是一个四位数,并且这个四位数恰好是一个整数的平方。”根据这些,你能否正确判断出牌照号码?(此题为选做题) 作业 下面的公式可以用来计算圆周率PI的近似值: PI/8=1/(1*3)+1/(5*7)+1/(9*11)+…… 请编程序计算公式的前15项,看PI的近似值是多少。 3.13.4 输入一个整数,将此数的每一位数按逆序打印(如输入1235,则输出5321) 练习 指出下列程序的运行结果: main() {int x=1,i=1; for ( ;x50;I++) {if(x=10) break; if(x%2!=0) {x+=3; continue;} x-=1; } printf(“%d\n”,x); printf(“%d\n”,I);} * Cocks+hens+chichs=100; 5*cocks+3*hens+chicks/3=100; 由题意可知 Cocks: 0-------19; Hens: 0--------33; Chicks: 0------100; 例2、搬砖问题:36块砖,36人搬,男搬4,女搬3,两个小孩抬一块砖。要求一次全搬完,问男、女、小孩各若干? 解:据题意: men的值:0--8 women的值:0--11 children的值:0--36 例L3—15:验证素数: 分析:看在2——n/2中能否找到一个整数m能将n整除,若m存在,则n不是素数;若找不到m,则n为素数。 分析:设现有人口数为M,则第一年后人口变为: M*(1+2%),第二年后,把上述赋值表达式再执行一次,要计算10年后的人口,就是把上述表达式执行10次。可以用循环来实现。 例如:人口增长问题: 现有12亿人,按年2%的增长速度,10年后将有多少人? 初值; 迭代公式; 迭代次数 例L3—12:兔子繁殖问题: 设有一队新生兔子,从第三个月开始每个月都生一对兔子,按此规律,并假设没有兔子死亡,一年后共有多少兔子?(请同学们写出每月兔子数,找出规律) 每月兔子呈如下规律:1,1,2,3,5,8,13,21,34…… 找出迭代规律: f1=f2=1; f3=f1+f2;f4=f2+f3; …… f n+1=f n+f n-1 u=55 v=15 r=u%v=10 u=15 v=10 r=u%v=5 u=10 v=5 r=u%v=0 u=5 v=0(终止) Main() {int u, v,r; scanf(“%d%d”,u,v); while (v != 0) { r=u%v; u=v; v=r; } printf(“%d\n”,u); } Main() {int m=7;n=5;i=1; do {if(i%m==0) if(i%n==0) {printf(“%d\n”,i); break;} i++;}while (i!=0) }

文档评论(0)

1亿VIP精品文档

相关文档