VB实验任务9 下载本文

内容发布更新时间 : 2024/5/13 15:22:29星期一 下面是文章的全部内容请认真阅读。

实验任务九

课程名称:程序设计基础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 使用下面的级数公式求?的值,当计算到某一项式(?1)足精度,停止计算。

n?11的绝对值小于0.0001时,认为满2n?1?1111?1????L?(?1)n?1?L 43572n?1提示:

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

使用通项式的形式求解,通项式an=(?1)n?11,该方法程序比较简单。 2n?1实验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; \年后我国人口将达到\亿\

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-24 循环显示

思考:如果改成如图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位的过程,即前一项和后一项的关系为Wi+1=Wi*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

(2)

Private Sub Command1_Click() Dim i As Integer For i=l To 7

Print Tab(8-i);String(i,Trim(Str(I))) Next I End Sub

注意: String(i,Trim(Str(I)))与 String(i,CStr(I))相同 (3)

Private Sub Command1_Click()

Dim ch1 As String, ch2 As String, ch3 As String, i As Integer ch1 = \ For i = 1 To Len(ch1)

ch3 = ch3 & Mid(ch1, i, 1) & Mid(LCase(ch2), i, 1) Print ch3 Next i

Print Chr(Asc(ch3) - 32) & Mid(ch3, 2, 5); Right(ch3, 6) End Sub (4)

Private Sub Command1_Click()

Dim a As Integer, b As Integer, i As Integer a = 10: b = 0

For i = 5 To 1 Step -2 Do

a = a - 4 b = b + 1

Loop Until b > 2 Or a < -1 Next i

Print a, b, i End Sub (5)

Private Sub Command1_Click()

Dim a As Integer, b As Integer, c As Integer Dim i As Integer, j As Integer, k As Integer a = 0: b = 0: c = 0 For i = 1 To 2

For j = i To 2

For k = 1 To j a = a + 1 Next k b = b + a Next j Next i c = a + b

Print a + b + c End Sub

三、实验体会(包括对于本次实验的小结,实验过程中碰到的问题、掌握的知识等)