VB实验任务9

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验任务九

课程名称:程序设计基础VB

实验名称——九、基本控制语句(三)

一、实验目的:

1.进一步掌握if 语句的三种基本结构

2.掌握多分支语句select 语句的使用

3.清楚循环流程,掌握循环语句的描述

4.掌握循环结构程序的设计方法

二、实验内容(包括实验要求(题目)、实验步骤、程序清单、运行情况):

程序完善题的做题技巧和方法

建议,先根据程序运行的参考界面和题目要求,分析代码中变量和对象各自的作用(一般从输入或输出方面着手推导和分析),然后填充程序[希望同学们通过实践掌握]

实验1实验5-16 找出1~1000之间的全部同构数的和。同构数是指一个数本身出现在它的平方数的右端。例如,5的平方是25,5是25中右端的数,5就是一个同构数。同理,25也是一个同构数。

Private Sub Form_Click()

For i = 1 To 999

j = i * i

Select Case j

Case Is < 99

k = j Mod 10

Case Is < 999

k = j Mod 100

Case Else

k = j Mod 1000

End Select

If k = i Then s = s + i

Next i

Print s

End Sub

实验2实验5-19 使用下面的级数公式求π的值,当计算到某一项式11(1)

21

n n +--的绝对值小于0.0001时,认为满足精度,停止计算。 111111(1)435721

n n +π=-+-++-+-L L 提示:

本题属于事先无法知道循环次数,所以只能采用Do …Loop 循环。

使用通项式的形式求解,通项式a n =11(1)21

n n +--,该方法程序比较简单。 实验3实验5-13 我国现有13亿人口,设年增长率为1%,编写程序,计算多少年后增加到或超过20亿?

【分析】 13*(1+1%)n >=20,求n ?

完善程序代码:

Private Sub Form_Click()

Dim n As Integer, peoplenum As Double

peoplenum = 13

Do

n = n + 1

(1)

Loop (2)

Print n; "年后我国人口将达到"; peoplenum; "亿"

End Sub

实验4实验5-14在窗体上显示出所有的水仙花数。所谓水仙花数是指一个3位数,其中各位数字立方和等于该数字本身。例如,153=13+53+33,所以153就是水仙花数。

提示:

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

例如:设a表示百位数,b表示十位数,c表示个位数,将一个3位数m从右边开始逐位分离的程序段为:

m=123

a=m\100

b=(m−a*100)\10 '十位数上的数计算有多种表示方法,请同学思考

c=m mod 10

方案二:利用三重循环,将3个数连接成一个3位数进行判断。

例如:设a表示百位数,b表示十位数,c表示个位数,则可能出现的3位数m的程序段如下:

For a=1 to 9

For b=0 to 9

For c=0 to 9

m=a*100+b*10+c

Next c

Next b

Next a

方案三:把数值转换成字符串后,利用Mid函数取每一位上的数,这种方法比较容易,请自行完成。

思考题:求Armstrong数。Armstrong数具有如下特征:一个n位数等于其各位数的n次方之和。例如,153=13+53+33 1634=14+64+34+44

课外实验:

实验1.实验5-15利用循环结构显示如图5-24所示的界面。

提示:

方案一:利用单循环实现。

循环体内的显示用Sring函数实现,解题的关键是找出循环控制变量与string函数内字符个数的关系,即String (2*i−1,Trim(Str(i)))。其中Str(i)表示将数值型i转换成字符串,Trim函数表示去除字符串两边的空格,因为将数值转换成字符串后,系统自动在数字前符号位,正数为空格,负数为“−”,而String函数只取字符串中的第一个字符,在该题中,由于i为正数,符号位为空格,所以需要用Trim函数。

方案二:利用循环嵌套实现。

外层循环控制行数,内层循环控制每行显示字符的个数,解题的关键是找出字符个数m与外层循环控制变量i的关系,即m=2*i−1,所以可以采用下面程序段:

For i=1 to 9

For m=1 to 2*i−1

Next m

Next i

思考:如果改成如图5-25(a )和图5-25(b )所示,应如何实现?

(a )

(b ) 图5-25 界面设计

实验2实验5-20 编程找出10000以内所有的回文数的平方仍是回文数的数。实现功能:(1)单击“生成数据”按钮,应将10000以内所有的回文数的平方仍是回文数的数按(11^2=121)形式存放在列表框中。(2)单击“返回”按钮,结束程序运行。所谓回文数是指左右数字完全对称的自然数。例如,11,121,1221等都是回文数。

提示:

(1)找出规律——对于每个数据:首先要判断它是否回文?若是,则判断它的平方数是否回文?若它的平方数是回文,则输出该数;

(2)如何判断数据的回文性?根据回文数的特征:方法一,将数据转换成字符型,首尾对称判等相应字符;方法二,将数据转换成字符型后逆序,判断逆序数和原数据的等值性。

实验3实验5-21 已知x 、y 、z 分别是0~9中的一个数,求x 、y 、z 的值,使得下式成立:xxz+yzz=532(其中xxz 和yzz 不表示乘积,而是由x 、y 、z 组成的三位数)。

实验4 求sn=a+aa+aaa+aaaa+…+aa …aaa (n 个a ),其中a 是一个由随机数产生的1~9(包括1、9)中的一个正整数,n 是一个由随机数产生的5~10(包括5、10)中的一个数。

例如,当a=2,n=6时,sn=2+22+222+2222+22222+222222,运行界面如图所示。

图 程序运行界面图

提示如下:

解题的关键是通式W 是一个不断在原有的基础上增加1位的过程,即前一项和后一项的关系为W i+1=W i *10+a ,其中W 的初值为0。

利用循环实现sn 的求解,sn 的值利用累加实现,即sn=sn+W ,其中sn 的初值为0。

实验5阅读程序,人工列表写出下列循环的运行次数和执行结果(注意输出格式),并上机验证结果,

(1)

Private Sub Command1_Click()

Dim x As Integer, y As Integer

x = 1: y = 3

Do While x <= 5

x = y Mod 3 + 2 * x - 1

y = y + (-1) ^ y

Loop

Print x, y

End Sub

相关文档
最新文档