友情提示:同学您好,此页面仅供预览,在此页面学习不会被统计哦! 请进入学习空间后选择课程学习。

实验目的

1. 了解程序设计中两种类型的循环结构——当型循环和直到型循环。

2. 掌握For …… Next语句的使用。

3. 掌握Do …… Loop语句的使用。

4. 能够利用循环嵌套处理稍微复杂一些的循环问题。

5. 继续学习调试程序的基本方法,避免死循环的出现。

实验内容

一、利用循环结构计算∑nn!

利用循环结构计算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~9J的取值范围为0~9K的取值范围为0~9。然后通过三层循环将IJK的各种取值所组成的数字检验一遍,即可找到所有的水仙花数。

四、百钱买百鸡问题

编程计算古代算术题。鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

提示:设鸡翁x只,鸡母y只,鸡雏z只,可以列出以下两个方程:

x+y+z=100

5x+3y+z/3=100

在这两个方程中,由于有3个未知数,所以无法直接用代数方法求解。下面用“穷举法”将各种组合的可能性全部一一测试,检查它们是否符合给定的条件。然后,将符合条件的组合输出即可。

先设x=1y=1,则由第一个方程可知z=100-x-y=98,检查这一组数据是否符合第二个方程式的要求,通过两层循环将xy的所有取值检查一遍(在xy一定时,可根据第一个方程得到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!的计算可能会导致溢出的发生,因此在本程序中应避免使用乘法进行计算,尽量使用除法来设计本程序。