1. 了解程序设计中两种类型的循环结构——当型循环和直到型循环。
2. 掌握For …… Next语句的使用。
3. 掌握Do …… Loop语句的使用。
4. 能够利用循环嵌套处理稍微复杂一些的循环问题。
5. 继续学习调试程序的基本方法,避免死循环的出现。
一、利用循环结构计算∑n和n!
利用循环结构计算S=1+2+3+……+100。下面给出了使用For …… Next语句设计的循环程序,请调试通过。
PrivateSub Form_Click()
DimS As Integer, I As Integer
S = 0
For I = 1 To 100
S = S + I
Next I
Print "1+2+3+……+100=", S
EndSub
运行该程序,然后依次解决如下几个问题。
(1)修改程序中的循环部分,用Do While …… Loop语句实现同样的功能。
(2)修改程序中的循环部分,用Do …… Loop Until语句实现同样的功能。
(3)利用上述循环结构计算20!,与计算累加和相比,计算阶乘时应注意什么问题?如何保证运算结果不会发生溢出错误?
二、多重循环的使用
利用二重循环结构计算S=1!+2!+……+20!。补充完善如下代码,并调试通过。
PrivateSub Form_Click()
DimS As Single, temp As Single
Dim I As Integer, J As Integer
S = 0
For I = 1 To 20
temp = 1 (a)
For J = 1 To I (b)
Next J
Next I
Print "1!+2!+……20!=", S
EndSub
运行该程序,然后依次解决如下几个问题。
(1)在程序代码中,若将语句(a)和语句(b)的位置相互交换后,程序的计算结果是什么? 先不要运行程序,自己考虑一下程序的计算结果,然后再调试程序并运行,看运行结果与自己的计算是否一致。
(2)在两层循环结构中,内层循环体中的语句共执行了多少次?
(3)使用循环嵌套编写程序时,应注意一些什么样的问题?
(4)请将该题目改用一层循环结构实现,并调试通过。
(5)在一层循环结构中,循环体共执行了多少次?
(6)对于本程序,你认为用一层循环实现好,还是使用两层循环实现好?为什么?
三、查找水仙花数
找出100~999之间的所有水仙花数。所谓水仙花数,也叫阿姆斯特朗数,是指这样三位数:它的各位数字的立方和等于它本身。例如:407=43+03+73 。补充完善如下代码,并调试通过。
PrivateSub Form_Click()
Dim I As Integer, a As Integer
Dim b As Integer, c As Integer
For I = 100 To 999
a =
b =
c =
If I = Then Print I
Next I
EndSub
运行该程序,然后修改它,通过三层循环结构完成水仙花数字的查找。提示:对于任何一个三位数,若用变量I表示其百位数字,变量J表示其十位数字,变量K表示其个位数字,则I的取值范围为1~9,J的取值范围为0~9,K的取值范围为0~9。然后通过三层循环将I、J、K的各种取值所组成的数字检验一遍,即可找到所有的水仙花数。
四、百钱买百鸡问题
编程计算古代算术题。鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
提示:设鸡翁x只,鸡母y只,鸡雏z只,可以列出以下两个方程:
x+y+z=100
5x+3y+z/3=100
在这两个方程中,由于有3个未知数,所以无法直接用代数方法求解。下面用“穷举法”将各种组合的可能性全部一一测试,检查它们是否符合给定的条件。然后,将符合条件的组合输出即可。
先设x=1,y=1,则由第一个方程可知z=100-x-y=98,检查这一组数据是否符合第二个方程式的要求,通过两层循环将x和y的所有取值检查一遍(在x和y一定时,可根据第一个方程得到z),即可求得此不定方程组的解。
补充完整如下的程序代码,并调试通过。
PrivateSub Form_Click()
Dimx As Integer
Dimy As Integer
Dimz As Integer
Forx = 1 To 100
For y = 1 To 100
(此处可能包含数条语句)
Next y
Nextx
EndSub
五、计算e 的值
按下列公式计算e的值,使误差小于0.000001。
e=1+ 1/1! + 1/2! + 1/3! + …… + 1/n! + ……
提示:参照本实验中关于S=1!+2!+……+20!的计算,自己编写代码,通过一层或两层循环完成并调试通过。需要注意的是,由于n!的计算可能会导致溢出的发生,因此在本程序中应避免使用乘法进行计算,尽量使用除法来设计本程序。