资源简介 程序中的循环——循环语句实例 破解密码 一个QQ帐号的密码是6位数字,如果想破解这个帐号的密码,同学们有什么办法? 最简单的方法就是一个一个地去试。 利用计算机的快速运算能力,一个一个的去试,需要多久时间呢,展示程序,提问6位数字密码安全吗? 破解程序核心思路:枚举,列举所有可能的密码组合,一一验证,就可以找到正确密码。 枚举法是计算机程序解决问题常用的一个方法。 鸡兔同笼 今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何? 程序方法解题思路 枚举,列举所有可能的组合,一一验证 枚举所有的可能,鸡(a=1 to 35)免(b=1 to 35) 一一验证,a+b=35 且 2a+4b=94 输出结果,Print "鸡"; a;"兔"; b 整理输入语句 Print 35; "只"; 94; "脚" For a = 1 To 35 For b = 1 To 35 If a + b = 35 And 2 * a + 4 * b = 94 Then Print "鸡"; a;"兔"; b Next b Next a 修正程序功能缺点 只能完成35只,94脚的问题求解,如何适应其它情况 如果鸡兔同笼问题中的已知量变成(35,96),(35,98),(35,100)呢,怎么解决? 修改代码?把已知量从代码中取出,放入窗口 提示:引入text1,text2,在窗口中修改已知量 修正程序功能缺点 tou=val(text1.text) jiao=val(text2.text) Print tou; "只"; jiao; "脚" For a = 1 To tou For b = 1 To tou If a + b = tou And 2 * a + 4 * b = jiao Then Print "鸡"; a;"兔"; b Next b Next a 完善程序功能 如果程序使用者在窗口中输入的已知量是(35,95),(35,160),(35,68)时,为什么没结果显示? 程序错了? 头数和脚数有限制。 2倍头数<脚数<4倍的头数,且脚数为偶数。 2*tou完善程序功能 tou=val(text1.text) jiao=val(text2.text) Print tou; "只"; jiao; "脚" If 2*touFor a = 1 To tou For b = 1 To to tou If a + b = tou And 2 * a + 4 * b = jiao Then Print "鸡"; a;"兔"; b Next b Next a Else Print "此情况无解" End if 简化层次结构 层次太多,可以通过定义子过程,简化程序层次结构 If 2 * tou < jiao And jiao < 4 * tou And jiao Mod 2 = 0 Then cc Else Print "此情况无解" End If Public Sub cc() For a = 1 To tou For b = 1 To tou If a + b = tou And 2 * a + 4 * b = jiao Then Print "鸡"; a;"兔"; b Next b Next a End Sub 补充例题 百元买百鸡问题 今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何? 总结 使用FOR语句来解决鸡兔同笼的问题,核心思路是枚举法,列举所有可能一一验证,利用计算机的快速运算能力,很快就能找到答案。 核心语句FOR+IF。 单击此处编辑母版标题样式 单击此处编辑母版副标题样式 展开更多...... 收起↑ 资源预览