第5章设计循环结构程序_第1页
第5章设计循环结构程序_第2页
第5章设计循环结构程序_第3页
第5章设计循环结构程序_第4页
第5章设计循环结构程序_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、大学计算机基础教程taiyuan university of technology第第5 5章章 设计循环结构程序设计循环结构程序visual basic 程序设计教程程序设计教程visual basic程序设计教程2循环结构又称重复结构。循环结构又称重复结构。本章主要介绍:本章主要介绍:逻辑表达式逻辑表达式for/next语句语句do/loop语句语句while/wend语句语句循环的嵌套使用。循环的嵌套使用。visual basic程序设计教程3循环结构是根据条件来决定某段代码是否重复执行。循环结构是根据条件来决定某段代码是否重复执行。循环结构中一种常用的流程可以表示如图:循环结构中一种常

2、用的流程可以表示如图:条件满足就执行条件满足就执行a块程序段块程序段然后再进行条件判别然后再进行条件判别如果满足条件,则继续执行如果满足条件,则继续执行a块程序段块程序段直到条件不满足,才执行直到条件不满足,才执行a块后面的程序。块后面的程序。visual basic程序设计教程4其中的其中的a程序块段称为循环体。程序块段称为循环体。条件使用逻辑表达式。条件使用逻辑表达式。循环的另一种形式是把判断条件放在循环体之后。循环的另一种形式是把判断条件放在循环体之后。visual basic程序设计教程5循环结构中有两个基本问题需要考虑:循环结构中有两个基本问题需要考虑:(1)条件必须明确,能使循环过

3、程正常结束)条件必须明确,能使循环过程正常结束(2)循环体内,必要时可改变控制循环的条件)循环体内,必要时可改变控制循环的条件改变可能导致循环结束改变可能导致循环结束改变也可能导致循环进入无休止的状态(死循改变也可能导致循环进入无休止的状态(死循环)。环)。visual basic程序设计教程6循环有两种类型:循环有两种类型:计数控制计数控制控制累计执行循环体的次数控制累计执行循环体的次数次数已到则结束循环次数已到则结束循环如如1+2+3+100或或98+96+94+4+2事态控制事态控制由某些条件决定循环结束。由某些条件决定循环结束。如计算一系列正整数之和,遇负数停止循环。如计算一系列正整数

4、之和,遇负数停止循环。也可以在一个循环过程中同时使用这两种类型也可以在一个循环过程中同时使用这两种类型visual basic程序设计教程7【例【例5-1】 设计一个判断素数的程序。若不是素数,要设计一个判断素数的程序。若不是素数,要求分解为求分解为a*b的形式的形式控件:控件:1个文本框和个文本框和1个命令按钮个命令按钮事件:命令按钮的事件:命令按钮的click。首先要了解什么是素数。首先要了解什么是素数。素数是指除了素数是指除了1和自身外,不能被其它整数整除的正整数。和自身外,不能被其它整数整除的正整数。判断判断a是否为素数的基本方法是:是否为素数的基本方法是:将将a分别除以分别除以2、3

5、、a-1,若都不能整除,则它为,若都不能整除,则它为素数。素数。判断判断a被被i整除可以采用表达式:整除可以采用表达式:a mod i = 0 或:或:a / i = a i 或:或:a / i = int(a /i) visual basic程序设计教程8 option explicitprivate sub command1_click() dim a as long, i as integer a存放要判断的数。存放要判断的数。i取值为取值为2a-1 dim flag as boolean flag作素数标志,作素数标志,false时,表示不是素数时,表示不是素数 a = val(tex

6、t1.text) flag = true 先设先设a是素数,当是素数,当a2或能被或能被i整除时,再置为整除时,再置为false if a 2 then flag = false a2,不是素数,不是素数 else i = 2 do while i 0 and b0 and c02数据类型数据类型逻辑运算的数据及结果均为布尔类型。逻辑运算的数据及结果均为布尔类型。visual basic程序设计教程113运算方式运算方式4优先级优先级逻辑运算符关系运算符字符串运算符算术运算符impeqvxororandnotvisual basic程序设计教程125逻辑表达式举例逻辑表达式举例(1)设变量)设

7、变量name1的值为的值为“王小华王小华”、变量、变量addr的值为的值为“上海上海”,则,则表达式:表达式:name1 = “王小华王小华” or addr = 杭州杭州 值:值:true 表达式:表达式: name1 = “王小华王小华” and addr = 沪沪 值:值: false (2)写出数学表达式)写出数学表达式0 x 0 and x 10visual basic程序设计教程13(3)描述)描述name1的值不等于的值不等于“王小华王小华”的表达式。的表达式。该表达式可写为:该表达式可写为:name1 王小华王小华 或:或: not name1 = 王王小华小华(4)x=3、y

8、=4、z=5,求表达式,求表达式x2 xor yx+1的值。的值。执行次序如图所示,最终值为执行次序如图所示,最终值为false。visual basic程序设计教程14闰年的条件是:闰年的条件是:能被能被4整除,但不能被整除,但不能被100整除;或能被整除;或能被400整除。整除。设变量设变量y存放年份,则该逻辑存放年份,则该逻辑表达式应为:表达式应为: y mod 4=0 and y mod 1000 or y mod 400=0【例【例5-2】 设计程序,要求对文本框的年份判断是否为设计程序,要求对文本框的年份判断是否为闰年,并在标签中显示相应的信息。闰年,并在标签中显示相应的信息。vi

9、sual basic程序设计教程15程序代码如下:程序代码如下:option explicitprivate sub command1_click() dim y as integer if command1.caption = 闰年判断闰年判断 then 闰年判断闰年判断 y = val(text1.text) if y mod 4 = 0 and y mod 100 0 or y mod 400 = 0 then label1.caption = 是闰年是闰年 else label1.caption = 不是闰年不是闰年 end if command1.caption = 清除清除 els

10、e 清除清除 text1.text= : label1.caption= : command1.caption=闰闰年判断年判断 text1.setfocus end ifend subvisual basic程序设计教程165.4.1 for/nextfor/next语句语句使用使用for/next语句可以方便地实现计数循环语句可以方便地实现计数循环for/next由由for语句、循环体、语句、循环体、next语句组成。语句组成。格式:格式:for 循环控制变量循环控制变量 = 初值初值 to 终终 值值 step 步长步长 循环体循环体 next 循环控制变量循环控制变量visual ba

11、sic程序设计教程171执行过程执行过程(1)将初值送至循环控制变量)将初值送至循环控制变量(2)判断循环控制变量的值是否超过终值:若未超过)判断循环控制变量的值是否超过终值:若未超过终值,执行步骤(终值,执行步骤(3);超过终值执行步骤();超过终值执行步骤(5)。)。(3)执行循环体。)执行循环体。(4)遇到)遇到next,使循环控制变量加上步长再送入循,使循环控制变量加上步长再送入循环控制变量中,转步骤(环控制变量中,转步骤(2)。)。(5)循环终止,执行)循环终止,执行next语句后面的语句。语句后面的语句。注意:其中注意:其中“超过终值超过终值”不一定是大于终值。不一定是大于终值。v

12、isual basic程序设计教程182关于格式关于格式省略省略“step 步长步长”则默认为则默认为“step 1” 。初值、终值、步长分别控制循环变量的起始值、初值、终值、步长分别控制循环变量的起始值、终止值和增量。终止值和增量。for和和next必须成对出现。必须成对出现。next后若有循环控制变量,则必须与后若有循环控制变量,则必须与for中的中的相同。相同。建议建议next后不要省略循环控制变量,以有利于后不要省略循环控制变量,以有利于阅读程序阅读程序visual basic程序设计教程193关于循环体关于循环体循环体是一条或多条语句循环体是一条或多条语句可以包括分支结构和循环结构可

13、以包括分支结构和循环结构可以写成一行或多行。可以写成一行或多行。循环体中可以引用循环控制变量,也可以不引用。循环体中可以引用循环控制变量,也可以不引用。但不要随便修改循环控制变量的值,以防引起循但不要随便修改循环控制变量的值,以防引起循环混乱。环混乱。4强行终止死循环强行终止死循环使用使用ctrl+break可以暂停程序运行可以暂停程序运行再使用再使用vb工具栏上的工具栏上的“结束结束”按钮终止程序执行。按钮终止程序执行。visual basic程序设计教程20【例【例5-3】 输入输入10个非负整数,求所有偶数之和。个非负整数,求所有偶数之和。 假定存放和的变量为假定存放和的变量为sum,先

14、让,先让sum=0。然后可采。然后可采用以下方法:用以下方法: 将第将第1个数送入个数送入a,如果,如果a是偶数,则让是偶数,则让sum加上加上a,否则否则sum不变。不变。 将第将第10个数送入个数送入a,如果,如果a是偶数,则让是偶数,则让sum增加增加a,否则否则sum不变。不变。最终得到的最终得到的sum就是和。由此可见,每步都做着同样的工就是和。由此可见,每步都做着同样的工作,即:作,即: 将第将第i个数送入个数送入a,如果,如果a是偶数,则让是偶数,则让sum增加增加a,否则否则sum不变。不变。visual basic程序设计教程21option explicitprivate

15、sub command1_click() 输入输入10个非负整数,求偶数和。个非负整数,求偶数和。 dim sum as long, i as integer dim a as integer sum = 0 赋初值赋初值,注意位置注意位置 for i = 1 to 10 a = val(inputbox(请输入第请输入第 & i & 个数个数:, 输入非负整数输入非负整数) if a mod 2 = 0 then sum = sum + a next i msgbox sum= & sumend sub 一个好的程序,应该为自己用于累加、累乘等的变量赋初值。一个好的程序,应该为自己用于累加、

16、累乘等的变量赋初值。visual basic程序设计教程22【例【例5-4】 求表达式值。求表达式值。x、n由键盘输入。由键盘输入。这是一个求和的例子。这是一个求和的例子。它由它由n项构成,能表示成项构成,能表示成sum=sum+item的形式的形式第第i项等于第项等于第i-1项乘以项乘以x/(i+1),即,即item=item*x/(i+1) 故循环体可由故循环体可由item=item*x/(i+1)和和sum=sum+item构成。构成。初值问题:初值问题:sum初值为初值为0,item初值应为初值应为1。 )!1(!3!22nxxxn为防止溢出,为防止溢出,item和和sum声明为双精度

17、型。声明为双精度型。程序运行结果:程序运行结果:当当x=6,n分别为分别为1、2、3时,其和分别为时,其和分别为3、9、18。visual basic程序设计教程23private sub command1_click() dim sum as double, item as double, i as integer dim n as integer, x as double n = val(inputbox(请输入项数请输入项数: ) x = val(inputbox( x= ) sum = 0: item = 1 for i = 1 to n item = item * x / (i +

18、1) sum = sum + item next i msgbox x/2!+x2/3!+.= & sum, , 信息信息 end subvisual basic程序设计教程245.4.2 exit forexit for语句语句循环中,中途退出循环,称为跳出循环。循环中,中途退出循环,称为跳出循环。跳出跳出for/next循环的语句就是循环的语句就是exit for。跳出循环后,将执行跳出循环后,将执行next语句后面的语句。语句后面的语句。exit for语句一般往往与语句一般往往与if语句合用。如:语句合用。如: if a = 2 then 素数判断素数判断 for i = 2 to i

19、nt(sqr(a) if a mod i = 0 then exit for a能被能被i整除整除,不是素数不是素数,退出退出for循环循环 next i if i int(sqr(a) then 表示表示a不能被不能被2 int(sqr(a)中的数整除中的数整除 print a; 是素数是素数 else 此时表示程序运行是通过此时表示程序运行是通过exit for转出来的转出来的 print a; 不是素数不是素数 end ifelse print a; 不是素数不是素数end ifvisual basic程序设计教程255.5.1 do/loopdo/loop语句语句对只知道循环终止条件,

20、可采用对只知道循环终止条件,可采用do/loop循环循环for/next语句可改写成语句可改写成do/loop循环,反之则不然。循环,反之则不然。do/loop语句有五种表示形式,它们的格式为:语句有五种表示形式,它们的格式为:visual basic程序设计教程261执行过程执行过程(1)对格式一和二,)对格式一和二,vb将先判断条件,再执行循环体。将先判断条件,再执行循环体。(2)对格式三和四,先执行循环体,再判断条件。循环体至)对格式三和四,先执行循环体,再判断条件。循环体至少执行一次。少执行一次。(3)对用)对用while的语句,当条件满足(的语句,当条件满足(true)时,执行循环)

21、时,执行循环体。体。(4)对用)对用until的语句,当条件不满足(的语句,当条件不满足(false)时,执行循)时,执行循环体。环体。(5)格式五的循环体内必须存在)格式五的循环体内必须存在exit do语句,否则会出现死语句,否则会出现死循环。循环。若程序运行出现死循环,同样可用若程序运行出现死循环,同样可用ctrl break暂停程序执行。暂停程序执行。visual basic程序设计教程272关于格式关于格式(1)条件一般应为关系或逻辑表达式,一般应有变量。)条件一般应为关系或逻辑表达式,一般应有变量。(2)do和和loop必须成对出现必须成对出现3关于循环体关于循环体循环体是一条或多

22、条语句循环体是一条或多条语句可以包括分支结构和循环结构。可以包括分支结构和循环结构。可以写成一行或多行。可以写成一行或多行。循环体中应有改变循环条件的语句,以避免出现死循环。循环体中应有改变循环条件的语句,以避免出现死循环。visual basic程序设计教程28private sub command1_click() dim n as integer, result as doubledim i as integer n = val(inputbox(n=) result = 1 for i = 1 to n result = result * i next i msgbox n & !=

23、& resultend sub0private sub command2_click() dim n as integer, result as double dim i as integer n = val(inputbox(n=) result = 1: i = 1 do while i n result = result * i i = i + 1 loop msgbox n & != & resultend subprivate sub command4_click() dim n as integer, result as double dim i as integer n = va

24、l(inputbox(n=) result = 1: i = 1 do result = result * i i = i + 1 loop while i = n msgbox n & “!=” & resultend sub5.5.1 do/loopdo/loop语句语句- -编程序:求编程序:求n!n!visual basic程序设计教程29【例【例5-6】 在文本框中输入两个整数,求它们的最在文本框中输入两个整数,求它们的最大公约数和最小公倍数。大公约数和最小公倍数。求最大公约数可用辗转相除法。求最大公约数可用辗转相除法。该方法的基本思想是使用带余除法:该方法的基本思想是使用带余除法:

25、(1)a除以除以b,得余数为,得余数为r1;(2)若)若r10,则,则b为最大公约数。为最大公约数。 若若r10,则,则b赋值给赋值给a,r1赋值给赋值给b,求余,求余数数r2; 若若r20,则继续以上步骤。,则继续以上步骤。visual basic程序设计教程30(3)经过有限()经过有限(n+1)步后,)步后,rn+1=0。这时这时a和和b的最大公约数是的最大公约数是rn。最小公倍数为。最小公倍数为a*b/rn。该算法循环次数未知,但循环条件已知:余数不为该算法循环次数未知,但循环条件已知:余数不为0。因此适用于。因此适用于do/loop语句编程。语句编程。其循环体为:其循环体为:把上一个

26、把上一个b作为新的作为新的a,把上一个余数作为新的,把上一个余数作为新的b,求出新余数。,求出新余数。visual basic程序设计教程315.5.1 do/loopdo/loop语句语句求最大公约数和最小公倍数求最大公约数和最小公倍数private sub command1_click() dim a as long, b as long, r as long a = val(text1.text) b = val(text2.text) r = a mod b do while r 0 a = b: b = r r = a mod b loop msgbox 最大公约数最大公约数= &

27、b msgbox 最小公倍数最小公倍数= & val(text1.text)*val(text2.text)/bend sub 如果如果s在两个文本框中分别输入在两个文本框中分别输入351和和675,单击命令按,单击命令按钮后,得出最大公约数为钮后,得出最大公约数为27,最小公倍数为,最小公倍数为8775。visual basic程序设计教程32【例【例5-7】 编程:输入一批非负数,当输入负数时,编程:输入一批非负数,当输入负数时,表示输入结束。求这批非负数据的最大值、最小值和表示输入结束。求这批非负数据的最大值、最小值和平均值。平均值。由于输入的个数不确定,故应采用由于输入的个数不确定,故

28、应采用do/loop语句。语句。本题关键在于如何设置最大值、最小值的初值。本题关键在于如何设置最大值、最小值的初值。visual basic程序设计教程33private sub command1_click() dim x as integer, min as integer, max as integer dim n as integer, average as single n作为计数,存放项数作为计数,存放项数 x = val(inputbox(x=): max = x: min = x 最大最小值初值最大最小值初值 n = 0: average = 0 do while x = 0

29、if x max then max = x if x min then min = x n = n + 1 average = average + x average暂存数据和,最后再除暂存数据和,最后再除n x = val(inputbox(x=) 从第从第2个开始输入个开始输入 loop if n 0 then average = average / n print max=; max, min=; min, average=; round(average, 3)end sub当输入当输入23、41、35、61、12、1、7、-1后,后,运行结果:运行结果:max=61 min=1 ave

30、rage=25.714visual basic程序设计教程345.5.2 exit do语句语句exit do是跳出是跳出do/loop循环的语句循环的语句跳出循环后,将执行跳出循环后,将执行loop语句后面的语句。语句后面的语句。exit do语句同样也往往与语句同样也往往与if语句合用语句合用如求阶乘的程序片断为:如求阶乘的程序片断为: n = val(inputbox(n= ) result = 1: i = 1 do result = result * i i = i + 1 : if i n then exit do loop msgbox n & != & result visua

31、l basic程序设计教程35while/wend语句的作用与语句的作用与do while 条件条件/循环体循环体/loop相同。相同。格式:格式: while 条件条件 循环体循环体 wend执行过程:执行过程:先计算条件的值,若条件的值为先计算条件的值,若条件的值为true,执行循环体,否则执,执行循环体,否则执行行wend语句后面的语句。语句后面的语句。while和和wend必须成对出现必须成对出现循环体中必须要有设法改变循环条件的语句循环体中必须要有设法改变循环条件的语句while/wend语句没有对应的跳出语句。语句没有对应的跳出语句。visual basic程序设计教程36【例【例

32、5-8】 编程:求编程:求的值。有关的值。有关的级数公式为:的级数公式为: 要求逐项累加,直到最后一项要求逐项累加,直到最后一项= precision sum = sum + sign * item n = n + 2 item = 1 / n sign = -sign wend pi = 4 * sum print “= ”; piend sub在单击命令按钮后,若精度用缺省值在单击命令按钮后,若精度用缺省值0.0000001,则显示则显示 3.1415924535898。.121) 1(715131141nnvisual basic程序设计教程38循环结构中可以嵌套循环循环结构中可以嵌套循

33、环当循环体中包含了循环时,称为循环嵌套,或称当循环体中包含了循环时,称为循环嵌套,或称为多重循环。为多重循环。循环体中包含的循环语句可以与外循环相同,也循环体中包含的循环语句可以与外循环相同,也可以不同。可以不同。嵌套一层称为二重循环。嵌套一层称为二重循环。多重循环中遇到多重循环中遇到exit for(do),只能跳出当前一,只能跳出当前一层循环。层循环。visual basic程序设计教程39【例【例5-9】 窗体上显示窗体上显示3100之间的所有素数。每之间的所有素数。每行显示行显示5个。个。前面的例子中判断前面的例子中判断a是否为素数是一重循环。是否为素数是一重循环。现让现让a分别等于分

34、别等于3、5、7、97、99就可以了。就可以了。为了每行显示为了每行显示5个,设置一个计数变量个,设置一个计数变量count。 private sub command1_click() dim a as integer, i as integer, count as integer count = 0 素数个数计数变量素数个数计数变量 print 以下数据为素数:以下数据为素数: for a = 3 to 99 step 2 for i = 2 to int(sqr(a) if a mod i = 0 then exit for 被整除被整除 next i if i int(sqr(a) th

35、en count = count + 1 : print a, if count mod 5 = 0 then print 换行换行 end if next aend subvisual basic程序设计教程40【例【例5-10】 在窗体上如图图案,它由在窗体上如图图案,它由“*”组成。分析:组成。分析:上三角形中,第上三角形中,第i行有行有i个,可使用循环:个,可使用循环:for j = 1 to i : print * ; : next j因每行起点不同,而且一行结束后要换行,因每行起点不同,而且一行结束后要换行,所以在所以在j循环的前后各有一循环的前后各有一print。这样的行有这样的

36、行有7行,故外循环使行,故外循环使i从从1至至7。下三角形,操作过程与上三角相似下三角形,操作过程与上三角相似visual basic程序设计教程41 private sub command1_click() dim i as integer, j as integer cls for i = 1 to 7 print spc(20 - i); 打印时空打印时空20-i格格 for j = 1 to i print * ; next j print 用于换行用于换行 next i for i = 6 to 1 step -1 print spc(20 - i); for j = 1 to i

37、print * ; next j print next iend subvisual basic程序设计教程425.8.1 递推法递推法【例【例5-11】 有一个数列,前两项是有一个数列,前两项是1、1,第三项是前二项之和,第三项是前二项之和,以后每一项都是前二项之和。即为:以后每一项都是前二项之和。即为:1、1、2、3、5、8、13、21,34。 要求输出该数列的前要求输出该数列的前30项。项。该数列又称斐波那契数列。由该数列又称斐波那契数列。由“兔子问题兔子问题”引发引发这是一个递推问题这是一个递推问题所谓递推关系是指一串函数之间的关系,它把每一个函数表示为前所谓递推关系是指一串函数之间的

38、关系,它把每一个函数表示为前k个函个函数的线性组合。本题中数的线性组合。本题中k=2。解决递推问题必须具备两个条件:解决递推问题必须具备两个条件:(1) 有初始值,如有初始值,如f1=1、f2=1 (2) 存在递推关系。如存在递推关系。如fn=fn-1+fn-2(n2) 在程序中一般设置二或三个变量就可以了。在程序中一般设置二或三个变量就可以了。程序中用程序中用f1、f2、f3表示三个数,在循环中,它们不断用新值代替旧值。表示三个数,在循环中,它们不断用新值代替旧值。这种操作称为迭代,这种操作称为迭代,visual basic程序设计教程43程序代码如下:程序代码如下:private sub

39、command1_click() dim f1 as long, f2 as long, f3 as long dim i as integer cls f1 = 1: f2 = 1 print f1, f2, for i = 3 to 30 f3 = f1 + f2 print f3, if i mod 4 = 0 then print 每行显示每行显示4个数个数 f1 = f2 : f2 = f3 用新值代替旧值 nextend subf1和和f2始终作为前两个数,始终作为前两个数,f3作为新产生的数作为新产生的数因第因第24个月兔子数已超过个月兔子数已超过32767对,故变量声明为对,故

40、变量声明为longvisual basic程序设计教程445.8.2 穷举法穷举法【例【例5-12】 我国古代数学家在我国古代数学家在算经算经中出了一道题:中出了一道题:“鸡翁鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?问鸡翁、母、雏各几何?”即:当时用即:当时用100元钱买元钱买100只鸡,其中公鸡每只只鸡,其中公鸡每只5元,母鸡每只元,母鸡每只3元,小鸡元,小鸡3只只1元,问可买公鸡、母鸡、小鸡各多少只?元,问可买公鸡、母鸡、小鸡各多少只?设公鸡设公鸡x只,母鸡只,母鸡y只,小鸡只,小鸡z只,列出

41、方程式:只,列出方程式: x+y+z=100 5x+3y+z/3=1002个方程求个方程求3个未知数,无法用代数方法求解个未知数,无法用代数方法求解可将可将x、y、z分别为分别为0100的每一种可能性都去试一下,如符合,则就是其的每一种可能性都去试一下,如符合,则就是其中的一种购买方案。中的一种购买方案。列举所有可能的方案,找出符合要求的,这样的算法称为穷举法。列举所有可能的方案,找出符合要求的,这样的算法称为穷举法。visual basic程序设计教程45可测试方案分别为:可测试方案分别为:0、0、0;0、0、1;0、0、100;1、0、0;1、0、1;1、0、100;100、100、0;1

42、00、100、1;100、100、100事实上当事实上当x和和y确定时,确定时,z可以用可以用100-x-y求得,因此可以求得,因此可以把三重循环改为二重循环。把三重循环改为二重循环。 private sub command1_click()dim x as integer, y as integer, z as integerprint 公鸡公鸡, 母鸡母鸡, 小鸡小鸡for x = 0 to 100 for y = 0 to 100 z = 100 - x - y if 5 * x + 3 * y + z / 3 = 100 then print x, y, z next ynext xe

43、nd sub事实上x和y的循环可分别为0到20和0到33visual basic程序设计教程465.8.3 求水仙花数求水仙花数【例【例5-13】 求数求数100999所有满足:数所有满足:数x = 数数x个位、十位、百位的立方和。如:个位、十位、百位的立方和。如:153 = 1*1*1 + 5*5*5 + 3*3*3说明:该程序主要是能分出个位、十位、百位说明:该程序主要是能分出个位、十位、百位 private sub command1_click() dim i as integer dim n1 as integer, n2 as integer, n3 as integer for i

44、 = 100 to 999 n1 = i 100 求百位求百位 n2 = (i - n1 * 100) 10 求十位求十位 n3 = i mod 10 求个位求个位 if i = n1 3 + n2 3 + n3 3 then 计算水仙花数计算水仙花数 print i; =; n1; 3 +; n2; 3 +; n3; 3 end if nextend subvisual basic程序设计教程475.8.4 验证哥德巴赫猜想验证哥德巴赫猜想【例【例5-14】 输入一个大于等于输入一个大于等于6的偶数,将它分解的偶数,将它分解为两个素数之和。为两个素数之和。对每一个大于等于对每一个大于等于6的

45、偶数的偶数n都可表示成:都可表示成:n=3+(n-3)、n=4+(n-4)、n=5+(n-5)、n=(n-3)+3,即即a、b的范围为的范围为3n-3由于大于由于大于2的偶数不是素数,处理前可以去掉这些数,的偶数不是素数,处理前可以去掉这些数,由于由于3+(n-3)和和(n-3)+3是一致的,故是一致的,故a的范围为的范围为3n/2,b=n-a。程序设计思路:程序设计思路:当输入一个大于等于当输入一个大于等于6的偶数的偶数n后,后,让让a在在3n/2的奇数范围内循环,的奇数范围内循环,若若a是素数,则求出是素数,则求出b=n-a,再判断,再判断b是否为素数,是否为素数,若若b也是素数,则输出也是素数,则输出a和和b。visual basic程序设计教程48 private sub command1_click() dim a as long, b as long, n as long, i as integer, j as integer do 该循环是为了必须获得一个大于等于该循环是为了必须获得一个大于等于6的偶数的偶数 n = val(inputbox(请输入一个大于请输入一个大于6的偶数的偶数) print 输入的数为输入的数为 & n loop while n / 2 n 2 or n sqr(a) then 若若a是素数是素数 b = n - a 求出求出b for

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论