




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、v提要提要v多重循环多重循环v常用算法常用算法v重点重点v多重循环多重循环v常用算法常用算法第第4章章 Visual Basic言语根底言语根底5v一个循环构造的循环体内包含了另一个循环构造一个循环构造的循环体内包含了另一个循环构造.v嵌套一层称为二重循环嵌套一层称为二重循环v多重循环中遇多重循环中遇Exit For(Do),只跳出当前一层循环,只跳出当前一层循环.v讨论多重循环讨论多重循环内、外循环的循环变量不可同名内、外循环的循环变量不可同名.内、外循环不可交叉内、外循环不可交叉 (外循环完全包含内循环外循环完全包含内循环).执行次数执行次数当外循环执行一次,内循环全部执行当外循环执行一次
2、,内循环全部执行.内循环执行总次数内循环执行总次数=外循环次数外循环次数内循环次数内循环次数错误错误正确正确For i=1 to 6 step 1 Print Next iFor i=1 to 6 step 1 Print ;Next i问题问题1: 要求利用循环构造在一列打印要求利用循环构造在一列打印6个个“问题问题2:要求利用循环构造在一行打印要求利用循环构造在一行打印6个个“, 如何修如何修正正?归纳归纳:分隔符分隔符“;使多个内容一个个紧跟着打印输使多个内容一个个紧跟着打印输出出For k=1 To 3 Next kFor i=1 to 6 Print ;Next i Print问题问
3、题3: 打印打印3行,每行行,每行6个个“,如何处理?,如何处理? For i = 1 To 6 Step 1 Print ; Next I Print For i = 1 To 6 Step 1 Print ; Next i Print For i = 1 To 6 Step 1 Print ; Next iv结论结论v单层循环:控制一行上的一切列单层循环:控制一行上的一切列, ,采用采用“紧凑方式紧凑方式输出输出; ;v双层循环:内循环控制一行上的一切列双层循环:内循环控制一行上的一切列, ,外循环控制外循环控制一切行一切行. .输出一行一切列之后能换行输出一行一切列之后能换行思索思索:
4、打印上三角或下三角程序如何改动?打印上三角或下三角程序如何改动?阐明阐明:Tab(n)函数函数后项内容在第后项内容在第n个字符位上输出个字符位上输出v素数是一个大于素数是一个大于2且只能被且只能被1和本身整除的整数和本身整除的整数.v判别一个数判别一个数n能否为素数的方法能否为素数的方法:v对于对于n 从从 i=2,3,n-1判别判别n能否被能否被i整除,只整除,只需有一个能整除,需有一个能整除,n不是素数,否那么不是素数,否那么n是素数。是素数。v算法算法1: 素数素数不能被不能被2n-1的其中一个整数整的其中一个整数整除除v优化算法优化算法1 :素数素数不能被不能被2n/2的其中一个整的其
5、中一个整数整除数整除v优化算法优化算法2 :素数素数不能被不能被2Sqr(n)的其中一个的其中一个整数整除整数整除问题问题: : 判别一个数判别一个数n n能否为素数能否为素数v 判别一个数判别一个数n n能否为素数能否为素数? ?For i=2 to n-1 if n mod i=0 then Exit For 被整除被整除Next iExit For 退出当前循环退出当前循环If i n-1 then Print n;“是素数是素数 Else Print n;“是非素数是非素数End ifInt(sqr (n)For n = 101 To 300 Step 2 Next n要求要求: :输
6、出输出100300100300之间的一切素数之间的一切素数. .For i = 2 To Int(Sqr(n) If n Mod i = 0 Then Exit For Next iIf i Int(Sqr(n) Print n;“是素数是素数 课后义务课后义务1 11.最大、最小值最大、最小值 课本课本P12 (打擂台打擂台) 假设干数求最大值假设干数求最大值, 普通先假设第一个数为最普通先假设第一个数为最大值初值大值初值; 然后将剩余的每一个数与最大值比较然后将剩余的每一个数与最大值比较, 假设该数大于最大值假设该数大于最大值, 将该数交换为最大值;依次将该数交换为最大值;依次逐一比较逐一
7、比较.(求最小值求最小值:方法一样方法一样) Dim x%,Max% x = Int(Rnd * 101 + 100 ) Max = x For i = 2 To 5 x = Int(Rnd * 101 + 100 ) If x Max Then Max = x Next i Print 最大值最大值=; Max计算计算1100的的3或或7的倍数的和的倍数的和 计算计算310的乘积的乘积2.累加、连乘、计数累加、连乘、计数_课本课本P12 S= 0For I = 1 To 100 If I Mod 3 = 0 Or I Mod 7 = 0 Then S = S + I k = k + 1 En
8、d IfNext IPrint S,k计数器计数器累加器累加器连乘器连乘器S= 0 If I Mod 3 = 0 Or I Mod 7 = 0 Then S = S + I k = k + 1 End If分析分析: 每一项和每次累加之和都是变化量每一项和每次累加之和都是变化量因此,需求两个变量因此,需求两个变量 用用T表示每一项的值表示每一项的值:T=T+1 用用S表示累加之和表示累加之和:S=S+T 循环终止条件循环终止条件: 循环次数循环次数n 初始化初始化: S=0回想回想: 计算计算 s=1+2+3+nPrivate sub Form_Click( ) Dim I% , S%, T%
9、,n% T为每一项为每一项 n=val(Inputbox(“n=) S=0 For I=1 To n T=T+1 S=S+T Next I Print “S=;SEnd Sub S=S+Is=1234 nS=n!S=1For I=1 To n S=S* INext IS=1例例: 计算计算 s=11/21/3 1/n分析分析: T表示每一项表示每一项: T = 1/n S 表示连乘的值表示连乘的值: S = S * T 初始化初始化: S= 1思索思索: 能否交换两者次序能否交换两者次序 即即: 先连乘先连乘,后产生新一项后产生新一项? 而令初值而令初值T=第一项第一项 S=T=S * T1n
10、S=T=S * TBAS=T=S * T1nT可了解为通式可了解为通式) 12() 1-(2nn)(2.75653431222222nS=T=S * Tv察看察看v当当n=10时,时,p = ? ;当当n=50时,时,p = ? ;当当n=100时,时,p = ?;v当当n=10000时,时,p = 比较准确比较准确. 可见该公式收敛较慢可见该公式收敛较慢.(2*n)2 / (2*n-1)*(2*n+1)B=(2*n)2 : A=(2*n-1)*(2*n+1)BA从第二项开场才有规律可循从第二项开场才有规律可循Private Sub Form_Click() Dim S#, T#, i&
11、;, n% n = Val(InputBox(n=) T = 2: S = 1 初值初值 For i = 1 To n S = S * T S为连乘为连乘 T = (2 * i) 2 / (2 * i - 1) * (2 * i + 1) t为每一项为每一项 Next i Print SEnd Sub例例: :用用 公式求圆周公式求圆周率的近似值,直到最后一项率的近似值,直到最后一项t t的绝对值小于的绝对值小于10-10-4 4为止为止. .S=T=S + TBAB=-B : A=A+2Do While Abs(T) = 0.0001LoopA=1: B=1: T=? : S=?m1ii!1
12、1 . !1.3!1! 211!11eiS=T=S+T1A从第二项开场才有规律可循从第二项开场才有规律可循Private Sub Form_Click() Dim i%, n&, T!, S! S = 0: A = 1 i = 1: T = 1 i计数器、计数器、t第第i项的值项的值 Do While T = 0.00001 S = S+ T 累加累加 Print 第第 & i & 项的值为项的值为 & T A= A * i: i = i + 1 连乘连乘 T= 1 / A Loop Print 计算了计算了; i; 项的和是项的和是 ; SEnd Subm1i
13、i!11 . !1.3!1! 211!11eiv累加累加v初值:初值:S=0, T=第一项第一项 v通用公式:通用公式: S=S+T : :T=B/Av连乘连乘v初值:初值:S=1, T=第一项第一项 v通用公式:通用公式: S=S*T : :T=B/A v 阐明阐明: T=B/A中的中的A或或B均可为常量或变量均可为常量或变量表达式表达式v 假设假设A=1, 那么那么T=Bv 假设假设B=1, 那么那么T=1/Av 设小鸡设小鸡x只、公鸡只、公鸡y只、母鸡只、母鸡z只,列出方程:只,列出方程:v x+y+z=100v 0.5x+2y+3z=100v 可见,三个未知数,两个方程,此题有假设干个
14、解。可见,三个未知数,两个方程,此题有假设干个解。v可穷举可穷举X、Y、Z的每一种取值,符合就是其中一种方案的每一种取值,符合就是其中一种方案Private Sub Form_click() For x = 1 To 100 For y = 1 To 100 For z = 1 To 100 If x * 0.5 + y * 2 + z * 3 = 100 And x +y + z = 100 Then Print x, y, z End If Next z Next y Next xEnd Sub问题问题: 100元买元买100只鸡只鸡, 小鸡每只小鸡每只0.5元,公鸡每只元,公鸡每只2元,
15、元, 母鸡每只母鸡每只3元元, 可买公、母、小鸡各多少只可买公、母、小鸡各多少只?4.递推法递推法 (课本课本P11) 猴子吃桃子问题:猴子摘下假设干个桃子,第一天吃猴子吃桃子问题:猴子摘下假设干个桃子,第一天吃了桃子的一半多一个,以后每天吃了前一天剩下的一半多了桃子的一半多一个,以后每天吃了前一天剩下的一半多一个,到第十天吃以前发现只剩下一个桃子,问猴子第一一个,到第十天吃以前发现只剩下一个桃子,问猴子第一天共摘了几个桃子?天共摘了几个桃子?Dim day As Integer, x As Integer, y As Integerx = 1For day = 9 To 1 Step -1
16、y = (x + 1) *2 前一天的桃子数是第前一天的桃子数是第2天桃子数加天桃子数加1的的2倍倍 x = yNext dayPrint xv分析:此问题属于分析:此问题属于“倒推问题,先从最后一天推出倒倒推问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子的桃子v设第设第n天的桃子为天的桃子为x,第,第n-1天的桃子为天的桃子为y, 前一天的桃子前一天的桃子数为:数为: y=x+121. 多重循环的内外循环之间的联络多重循环的内外循环之间的联络2. 常用算法常用算法:累加、最值、穷举、素数等累加、最值、穷举、素数等本节小结本节小结循环控制构造常见错误循环控制构造常见错误1.不循环或死循环的问题不循环或死循环的问题 主要是循环的条件、初值、终值、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 促肺纤维化巨噬细胞功能异质性的线粒体基础及基于外泌体的干预策略
- 2025独家合作协议样书
- 广西壮族自治区2024~2025学年 高二下册开学考试数学试卷附解析
- 广东省佛山市2024~2025学年 高二下册3月月考数学试卷附解析
- 福建省三明市2023−2024学年高二下册期末质量检测数学试卷附解析
- 北京市2024-2025学年高三下册3月月考数学试卷
- 2024~2025学年 浙江省宁波市高一语文上册9月学情诊断试卷附答案
- 冀教版4年级下册数学全册课件(2025年3月修订)
- 湖南林勘院招聘笔试真题2024
- 社区社区服务设施更新改造管理基础知识点归纳
- 职业生涯规划书成长赛道
- 林木育种的种质与材质性状评价
- 大模型在航空航天领域的应用:智能探索宇宙的无限可能
- 《直流电源》课件
- 内燃机车柴油机 课件 2-1-1 16V280型柴油机 固定件认知
- FMECA方法及工程应用案例
- 国开02316-中级财务会计(一)机考复习资料
- 2023年专业英语四级真题试卷及答案(二)
- 数据链系统与技术(第2版) 课件 第3、4章 Link-4、Link-11和Link-22数据链;Link-16数据链
- 猴痘防控工作方案
- 外研版初中英语单词总表(7~9)年级
评论
0/150
提交评论