VB上机DEF 下载本文

实验D 循环结构

一、 实验目的

1.掌握For语句的使用。

2.掌握Do语句的各种形式的使用。

3.掌握如何控制循环条件,防止死循环或不循环。

二、实验内容

1.利用单循环结构显示如图D.1所示的界面。

提示:

循环体内的显示用String函数来实现,找出循环控制变量与String函数内字符个数的关系:即String(2*i-1,Trim(Str(i)))。其中Str(i)表示将数值型i转换成字符串,Trim函数表示去除字符串两边的空格,因为将数值转换成字符串后,系统自动在数字前面符号位,正数为空格,负数为“—”,而String函数只取字符串中的第一个字符,本例为空格,因此需要用Trim函数。

2.用单循环实现如图D.2所示的界面。

图D.1 实验D.1运行界面 图D.2 实验D.2运行界面

3.计算S?1?1111111???????...当第i项的值<10?4时结束。 24711162229提示:

找出规律,第i项的分母是前一项的分母加i开始计数。可利用For循环结构的循环控制变量获得项数,当某项达到规定的精度时就退出循环。

4.计算π的近似值,π的计算公式为:

2224262(2n)??2??????

1?33?55?7(2n?1)?(2n?1)注意:

1分别显示当n=10,100,1000时的结果,由此可见,此计算公式收敛程度如何? ○

○2同时要防止大数相乘时结果溢出的问题,将变量类型改为长整型或实数类

型。

5.求

Sn?a?aa?aaa?aaaa?…+aa?aaa(n个a),其中a是一个由随机数产生的1~9

(包括1,9)中的一个正整数,n是一个由随机数产生的5~10(包括5,10)中的一个数。 例如,当,a=2,n=5时,Sn?2?22?222?2222?22222.

提示:

该题的关键是通项T是一个不断在原来基础上增加1位的过程,通项关系式为: Ti?1?Ti?10?a

T的初始值为0。

6.编一程序,显示出所有水仙花数。所谓水仙花数,是指一个3位数,其各位数字立方和等于该数字本身。例如,153是水仙花数,因为153=1?5?3。

333提示:

解该题有两种方法:

1利用三重循环,将三个数连成一个3位数进行判断。 ○

例如,将1~9连成一个九位数123 456 789,程序段如下:

s=0

For i = 1 To 9

s=s*10+i Next i

2利用单循环将一个3位数逐位分离后进行判断。 ○

例如,将一个九位数123 456 789,从右边开始逐位分离,程序段如下:

s=123456789 Do While s>0

s 1=s Mod 10 s=s\\10

Print s1; ‘从右边开始显示分离出的每一位 Loop

7.参阅教材例4.20,用迭代法求x?3a。求立方根的迭代公式为:

xi?1?2axi?2 33xi?5迭代到|xi?1?xi|???10为止,xi?1为方程的近似解。显示a=3,27的值,并通过求3a的表达式加以验证。 提示:

假定x0的初始值为a,根据迭代公式求得x1,若|x1?x0|???10?5,迭代结束;否

则用x1代替x0继续迭代。迭代的流程图如图D.3所示。

图D.3 迭代法求根流程图

8.一个富翁试图与陌生人做一笔生意,换钱规则为:陌生人每天给富翁10万元钱,直到满一个月(30天);而富翁第一天给陌生人1分钱,第二天2分钱,第天4分钱,……,富翁每天给陌生人的钱是前一天的两倍,直到满一个月。分别显示富翁给陌生人的钱和陌生人给富翁的钱为多少?

提示:

设富翁第一天给出的钱为x0是0.01,第二天给出的钱为前一天的两倍,即x0=2*x0,

如此重复到30天,累计求得富翁给出的钱数远远超过陌生人给出的钱数10万*30=300万元。

9.用计算机按排考试日程。期末某专业在周一~周六的6天时间内要考X,Y,Z三门课程,考试顺序为X,Y,Z,规定一天只能考一门,且Z只能安排在周五或周六考。编写程序安排考试日程(即三门课各在哪天考),要求列出满足条件的所有方案。