




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本节课我们将通过实例来加强对For循环语句的使用。例1:求Fibonacci数列的前30个数。这个数列有如下特点:前两个数为1,从第三个数开始,其值是前两个数的和,即: F1=1 (n=1) F2=1 (n=2) Fn= Fn1+ Fn2 (n3) 程序如下: Private Sub Command1_Click() Dim i As Integer Dim f1 As Long, f2 As Long, fn As Long f1 = 1 f2 = 1 Print f1, Print f2,For i = 3 To 30 f1,f2已知,从第三个数开始计算 fn = f1 + f2 f1 = f2 f2 = fn 更改f1,f2的值 Print fn,If i Mod 4 = 0 Then Print 打印4个数后换行打印Next End Sub 例2:利用随机数函数模拟投币,方法是:每次随机产生一个0或1的整数,相当于一次投币,1代表正面,0代表反面1、设计界面 在窗体上添加三个标签、三个文本框和一个命令按钮。初始界面如图7-3所示。 图7-31 初始界面 图7-32 设置属性后的界面2、设置属性表7-3 属性设置对象属性属性值Label1Caption投币总次数Label2Caption正面次数Label3Caption反面次数Text1TextText2TextText3TextCommand1Caption开始窗体中各个控件的属性设置按照表7-3进行设置,属性设置后的界面如图7-33所示。3、程序代码Private Sub Command1_Click()Randomizen=CInt(Text1.Text)n1=0n2=0For i=1 To nr=Int(Rnd*2)If r=1 Thenn1=n1+1Elsen2=n2+1End IfNextText2.Text=n1Text3.Text=n2End Sub 4、程序说明 在窗体上有三个文本框,名称分别是Text1、Text2、Text3,分别用于显示用户输入投币总次数、出现正面的次数和出现反面的次数。随机产生0或1的整数的表达式为:Int(Rnd*2)。 5、运行程序运行程序,在文本框Text1中输入总次数,然后单击“开始”按钮,按照输入的次数模拟投币,分别统计出现正面、反面的次数,并显示结果。运行界面如上图所示。 例3:小猴吃桃:有一堆桃,小猴当天吃了一半多一个。第二天吃了剩下的桃子的一半多一个。以后每天都是吃剩下的桃子的一半多一个。到第10天小猴要吃时只剩下一个了。问原来那堆桃有多少个?程序代码如下: Private Sub Form_Click() Dim n%,i% n=1 For i=9 to 1 step -1 n=(n+1)*2 Next i Print “peachs of the first day are:”;n(二)复习根据步长型循环语句FORNEXT的格式和功能填空 1、在 FOR- NEXT 循环语句中,对于循环变量要指定它的_、_及步长,但步长在增量为时,可以省略。 2、“NEXT I”意思是_. 3、在NEXT语句中,_可以省略, 但如果出现, 要与FOR语句中的_一致。 4、终止 FOR- NEXT 循环语句的条件是 _。5、计算循环次数的公式是_(三)新课讲授本节课我们将通过实例来学习对For双重循环语句的使用。一、引入:在屏幕上输出如下右图所示内容该程序实现一行个*,一共4行。用循环语句实现for i=1 to 4 print * next其中对于print *我们也可以循环进行输出for i=1 to 5 print *next 将两者相结合For i = 1 To 4For j = 1 To 5Print *;Next jPrintNext i即可得到完整代码二、循环嵌套也称为多重循环,即在一个循环结构中包含另外一个循环,这种结构可以实现很多复杂的算法。语法:for i=初值to 终值for j=初值to 终值循环体next jnext i其中i为外循环控件变量,j为内循环控制变量,这两个变量不可用同一个变量名双重循环的次数是:内循环次数外循环次数三:图形专题简单文本图形的程序设计 (用for和for双重循环嵌套语句)输出一个文本图形需要考虑4点:(1)图形有几行(一般由外循环控制)(2)每行首字符位置(一般由tab( )函数控制)tab(n)函数:输出时表达式定位于第n列(3)每行由几个字符(一般由内循环控制) (4)用什么字符组成图形下面举例说明:1、 打印如下图形 Private Sub Form_click() 图2Dim i%, j%For i = 5 To 1 Step -1For j = 1 To iPrint *;Next jPrintNext iEnd SubPrivate Sub Form_click() 图1Dim i%, j%For i = 1 To 5For j = 1 To iPrint *;Next jPrintNext iEnd Sub*图1 * *Private Sub Form_click() 图4Dim i%, j%For i = 5 To 1 Step -1Print Tab(6 - i);For j = 1 To iPrint *;Next jPrintNext iEnd SubPrivate Sub Form_click() 图3Dim i%, j%For i = 1 To 5Print Tab(6 - i);For j = 1 To iPrint *;Next jPrintNext iEnd Sub* * 图2 * * * * 图3 * * * *图4For i = 1 To 5 图5Print Tab(6 - i);For j = 1 To 2 * i - 1Print *;Next jPrintNext i2、 打印如下等腰三角形,如图5示 * * * * *For i = -2 To 2 图6Print Tab(Abs(i) + 1);For j = Abs(i) - 2 To 2 - Abs(i)Print *;Next jPrintNext i3、 打印如下菱形,如下图6示 * * * * *For i = 1 To 5 图7Print Tab(6 * 3 - i * 3);For j = 1 To iPrint j;Next jPrintNext i4、 若将“*”改为数字,如图7示: 112123123412345提示:打印数值类型数据,数字前有个符号位,数字后面有一个空格。今天我们来介绍循环控制语句的第二种当循环控制结构。(三)新课讲授循环分为两大类:一类是循环次数已知,一类是循环次数未知的情况。前者我们可以用for.next语句实现,但对于后者呢?我们可以使用while当型循环。事先不能确定需要执行多少次循环,只有当条件满足时才结束循环,称为“当型循环”。While循环结构用WhileWend语句来实现,语句格式如下: While Wend 语句说明: (1)“条件表达式”可以是关系表达式、逻辑表达式或数值表达式。如果是数值表达式,值为0被作为False,非零值则为True。 (2)语句的执行过程是:先计算条件表达式的值,若为True,则执行循环中的语句块,遇到Wend语句时返回While语句继续判断条件表达式的值,若仍为真,则继续执行语句块,重复上述过程直到条件表达式的值为False,则退出循环结构,执行Wend语句的后续语句。循环环执行过程如图74。 (3)如果条件一开始就不成立,则语句块一次也不会被执行。 表达式语句块FT 图74例如,求1到100的和。 (用FOR循环)Private Sub Command1_Click() Dim i As Integer, sum As Integer sum = 0 给变量sum赋初值0For i = 1 To 100 sum = sum + i 累加Next iPrint sum End Sub也可用While循环语句改写上例,程序代码如下:Private Sub Command1_Click() Dim i As Integer, sum As Integer sum = 0 :i=1While i=100 sum = sum + ii=i+1 WendPrint sum End Sub下面举例说明:例1:我国有13亿人口,以年平均增长率0.5%计算,多少年后我国人口就会增长到15亿。程序代码如下: Private Sub Form_Click()Dim p!,n%p=13n=0While p15 p=p*1.005 n=n+1WendPrint n;”年后人口将达到:”;p;”亿” End SubDo循环结构的形式较灵活,可分为以下几种:(1)先判断条件的DoLoop循环格式一: Do While Loop 语句执行过程:先计算条件表达式的值,若为True,则执行语句块中的语句;若为False则退出循环结构。循环环执行过程如图7-5-1。 格式二: Do Until Loop 语句执行过程和格式一基本相同,唯一不同的是,它在条件表达式为False时重复执行语句块,直到条件为True时退出循环结构。循环环执行过程如图7-5-2。 表达式语句块TF 表达式语句块TF 图7-5-1 图7-5-2例1:用DoLoop循环结构实现求和sum=1+2+3+100。编写程序代码。解法一:采用当型循环Do WhileLoopPrivate Sub Command1_Click() Dim i As Integer,sum As Integer i=1 计数器初值置为1 sum=0 累加器初值置为0 Do While i100 sum=sum+i i=i+1 Loop Label2.Caption=Str(sum)End Sub例2:将10000元存入银行,按3.25%的利率,试问多长时间就会连本带利翻一番。程序代码如下:Private Sub Form_Click() Dim year%,money!,original!,interest! original=10000money=originalInterest=3.25/100Do While money2*original year=year+1 money=money+interest*money 累计每过一年的连本带利的金额LoopPrint “In”;year;”years,youll have”;moneyEnd Sub请同学们使用格式二改写上述程序。(2)后判断条件的DoLoop循环格式三: Do Loop While 语句执行过程:首先执行语句块中语句,然后计算条件表达式,如果条件表达式值为True,则继续执行语句块,否则退出循环结构。循环体至少执行一次。循环环执行过程如图7-5-3。 格式四: Do Loop Until 格式四的执行过程和格式三基本一样,也是先执行后判断。唯一不同的是,它在条件表达式值为假时重复执行语句块,直到条件表达式值为真时退出循环结构。循环环执行过程如图7-5-4。 语句块表达式TF 语句块表达式FT 图7-5-3 图7-5-4例3:用辗转相除法求两正整数m,n的最大公约数。 求最大公约数的算法如下: (1)对于已知两数m,n,使得mn; (2)m除以n得余数r; (3)令m n,n r; (4)若r0,转到(2)继续执行,直到r=0求得最大公约数为m,循环结束。 程序代码如下: Private Sub Form_Click() Dim m%,n%m = InputBox(输入m) n = InputBox(输入n) If mn t=m : m=n : n=tEnd If m1=m :n1=n Do r = m Mod n :m = n :n = r Loop while ( r 0) Print m1; ,; n1; 的最大公约数为; m End Sub (3)无条件循环格式:Do Loop重复执行循环体,循环不会停止,除非在循环体中有Exit Do语句或在执行时按下Ctrl+Break键。例如: Private Sub Form_Click()s=0i=0Do i=i+1 s=s+iIf s=3000 Then Exit Do 当s3000,执行Exit Do语句退出循环LoopPrint i,s End Sub例4:输入一个整数,对其进行因数分解。如:126=2*3*3*7。程序代码如下: Private Sub Form_Click()Dim x%,m%,flag as Booleanx= val(InputBox(“输入一个整数”)m=2flag=TrueDo While m=x Do While x mod m=0 If flag Then Print x;”=”;m; Flag=False Else Print “*”;m; End If X=xm Loop M=m+1LoopEnd Sub例1:编程输出九九乘法表。程序代码如下: Private Sub Form_Click()For i=1 to 9 For j=1 to 9 Print tab(j-1)*14) ;i;”;j;”;i*j; Next j PrintNext i End Sub例2:输出3-100之间的素数。素数,就是一个大于2且只能被1和本身整除的整数。判断某数m是否为素数的算法是:对于m从i=2,3,m-1判别m能否被i整除,只要有一个能整除,m就不是素数,否则m是素数。程序代码如下:Private Sub Form_Click()Dim m%,i%,k%,Flag As BooleanFor m=3 To 100 Flag=True For i=2 To m-1 内循环判断m是否为素数 If (m mod i)=0 Then Flag=False Next i If Flag Then k = k + 1 If (k Mod 10) = 0 Then Print m Else Print m; 每行显示10个 End If Next mEnd Sub实际上m不可能被大于m的数整除,因此为减少循环次数,可将内循环语句改为: For i=2 To int(sqr(m)循环次数就会大大减少。例3:百鸡问题:已知公鸡每只3元,母鸡每只5元,小鸡每三只1元,现有100元,要求买100只鸡,每种鸡至少买一只且必须买整只鸡,问有多少种方法。方法一(用三重循环) 枚举范围:公鸡x 198 母鸡y 198 小鸡z 198 测试条件:3x+5y+z3=100 And x+y+z=100方法二(用两重循环) 枚举范围:公鸡x 131 母鸡y 118 小鸡z 100-x-y 测试条件:3x+5y+z3=100思考:如何用单层循环求解?程序如下:Private Sub Form_Click() 第二种方法 Dim x%, y%, z% For x = 1 To 31 For y = 1 To 18 z = 100 - x - y If 3 * x + 5 * y + z / 3 = 100 Then Print x, y, z End If Next y Next xEnd Sub例4:输入20个数,从中找出最大值和最小值。 提示:以第一个数作为最大(小)值,然后将剩余的数依次与最大(小)值比较,每当最大(小)值小于(大于)被比较的数时,就修改最大(小)值。 程序如下:Dim max%,min%,a%,I% a=InputBox(“输入a”) max=a:min=a For I=2 to 20 a=InputBox(“输入a”) If max a Then m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 代理推广合同样本
- 修公墓合同样本样本
- 保底收益合同样本
- 公司 成立 合同样本
- 人防车位出让合同标准文本
- 代建单位合同样本
- 人防商铺售卖合同样本
- 2025企业保密合同模板
- 2025至2030年中国卷纸匣市场分析及竞争策略研究报告
- 2025至2030年中国单头棘轮梅花扳手行业投资前景及策略咨询报告
- 2023版药品生产质量管理规范 附录1 无菌药品
- 2023年新疆铁道职业技术学院单招面试模拟试题及答案解析
- 天星乡养羊项目绩效评价报告
- GB/T 39489-2020全尾砂膏体充填技术规范
- 《民法》全册精讲课件
- 厂内机动车辆课件
- 四川方言词典(教你说一口地道的四川话)
- 企业标准编写模板
- 《新媒体运营》考试参考题库(含答案)
- 学校食堂餐厨具操作规程
- DB32T 3916-2020 建筑地基基础检测规程
评论
0/150
提交评论