1、VB 专题题第 1 页1.“四叶玫瑰数” 是指一个四位自然数各位上数字的四次方之和等于该四位数本身的数。如自然数 8208=84+24+84”,那它就是一个“ 四叶玫瑰数” 。现用 VB 编写一个程序,实现如下功能:单击“查找”按钮 Command1,在列表框 List1 中显示所有“四叶玫瑰数”,并在标签 Label2 中显示找到的个数,运行界面如下图所示:(1)为实现上述功能,请在画线处填入正确的代码。Private Sub Command1_Click( )Dim i As Integer, s As IntegerDim a As Integer, b As Integer, c As
2、 Integer, d As Integers = 0For i = 1 000 To 9 999 取出个位数字 b = (i Mod 100)10 取出十位数字c = i 100 Mod 10 取出百位数字d = i 1 000 取出千位数字If a 4+ b 4 + c 4 + d 4 = i ThenList1.AddItem is = End IfNextLabel2.Caption = 四叶玫瑰数共有+ Str(s) + 个End Sub(2)程序中的语句“b = (i Mod 100) 10”和下列哪些项功能相同 ( 多选)。 A.b=i10 Mod 10 B.b=int(i/10
3、) Mod 10C.b = i Mod 10010 D.b=Mid(i,3,1)2、用 VB 设计一个奇数迁移的程序,具体要求是:单击“ 产生”按钮 Command1,清空两个列表框中的内容,并产生 10 个 3 位自然数放入左边列表框 List1 中,如图 1 所示。单击“奇数迁移”按钮 Command2,将列表框 List1 中的所有奇数迁移到列表框List2 中,如图 2 所示。VB 专题题第 2 页图 1 图 2在以下 Visual Basic 程序的画线处填入合适的语句,实现上述功能。Dim a(1 To 10) As IntegerPrivate Sub Command1_Clic
4、k()List1.ClearList2.ClearRandomizeFor i = 1 To 10a(i) = Int(Rnd() * 900 + 100)List1.AddItem Next iEnd SubPrivate Sub Command2_Click()List1.ClearFor i = If a(i) Mod 2 = 1 ThenList2.AddItem a(i)ElseList1.AddItem a(i)End IfNext iEnd Sub3、小贝用 VB6 语言编写了一个拼手气红包程序,实现的功能是:在文本框 Text1 中输入发放红包的总金额 s,在文本框 Text2
5、中输入发放红包的个数 n,单击“发放红包” 按钮 Command1,为 n 个红包随机分配金额,并在列表框 List1 中显示分配后的这些金额。界面如图 1 所示。图 1VB 专题题第 3 页图 2(1)在设计应用程序界面时,应使用图 2 所示“控件工具箱”中的 ( 填写相应编号)添加列表框 List1。 (2)为实现上述功能,请在横线处填入合适代码。Private Sub Command1_Click()Dim s As Single,x As Single,n As Integer,i As IntegerRandomizeList1.Clears= n=Val(Text2.Text)Fo
6、r i=1 To 通过循环语句产生 n-1 个红包的随机值 x=Int(Rnd()*s/(n-i)+0.005)*100)/100List1.AddItem Str(x)s= Next ix=Int(s+0.005)*100)/100 产生最后一个红包List1.AddItem Str(x)End Sub4、利用 Visual Basic 设计一个小写转大写的程序:在文本框 Text1 中输入一串字符,单击“转换”按钮 Command1,将其中的小写英文字母转换为大写英文字母后,在文本框 Text2 中显示转换后的字符串。程序运行界面如图所示。(1)实现上述功能的 VB 代码如下,在画线处应填
7、入正确的语句以实现以上功能。Private Sub Command1_Click()Dim a As String,b As StringDim i As Integer,c As Stringa= VB 专题题第 4 页For i=1 To Len(a)c=Mid(a,i,1)If Then c=Chr(Asc(c)-32)End Ifb=b & cNext iText2.Text=bEnd Sub(2)由程序可知,小写字母比大写字母的 ASCII 编码值大 。5、多数高次方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。由于数轴上的点是有序的,因此我
8、们可以用对分查找法找出高次方程在某一区间的实根。即:不断地将区间对分,使得区间中点的值不断逼近方程的根。当区间小于精度的时候,我们就停止对分,并用此时区间的中点值作为方程的根。如求三次方程 y=5x3-55x2+170x-130 的实根,其函数图像如图 1 所示:图 1 图 2观察该函数图像发现函数有一实根在区域(1,2)之间,因此我们取两者的中点 m=(1+2)/2 代入方程进行检测,发现 f(1.5)=5x3-55x2+170x-130=18.125,因为 f(1.5)0,因此区间应该往左移动,得下一个区间(1,1.5), 然后继续进行检测,如果区间差值误差率,则认为该中点是方程的根。根据
9、上述方法描述,设计一个 VB 求解程序的根。程序运行界面如图 3 所示,单击求解按钮Command1,在文本框 Text1 中显示方程的根。图 3(1)为显示函数的图像,应在窗体中放置的控件是 。(填图 2 中编号) (2)程序代码如下,请在画线处填写正确的 VB 代码。Private Sub Command1_Click()Dim i As Double, j As Double, m As DoubleDim r As Double , y As Doublei=1:j=2:y=1:r=j-iDo While y 0.00001m=(i + j) / 2VB 专题题第 5 页y=5 * m
10、 3 - 55 m 2 + 170 m - 130If y 0 Then ElseIf y = a And c=aAnd c0,则区间应该往左移动,结束点 j=m,如果 y0,则区间应该往右移动,起始点i=m。6、(1)4 (2)Int(Rnd*3) (3) List1.Additem s解析: 程序通过 9 个 If 语句判断胜负情况,结果存放在变量 s 中,最后把结果显示在 List1 中。在列表框中添加一行数据,可使用 Additem 方法。7、 (1)标签或 Label Caption (2)str(a+s)/(b+s)8、答案: (1)Int(w/h 2) (2)BMI 20 (3)
11、 解析算法解析: 本题根据体重与身高求解体质指数 BMI,两者之间的关系为 BMI=w/h2,所以处应填入 Int(w/h 2)。根据成人的 BMI 数值参考 ,低于 20 属于偏瘦,所以处应填入 BMI 20。程序采用的算法是解析 算法。9、 答案: (1)C (2)n+11 str(i) (3)甲辰解析: (1)代码“Private Sub Command1_Click()” 中的 Command1 是对象名,Click 是事件名,Command1_Click则是事件处理过程的名称。(2)程序通过循环列举 12 个年份对应的“天干地支”与“生肖 ”信息,年份 i 的值从 n 到 n+11,
12、因此 1 处填n+11。根据运行界面图中显示的形式可知,变量 C1 表示天干 ,C2 表示地支,C3 表示生肖,所以 2 处填 str(i)。(3)通过程序 a = (i + 6) Mod 10 和 c1 = Mid(s1, a + 1, 1)可知天干,a=(2024+6)Mod 10=0,c1 = Mid(s1, a+1, 1)=“甲”。通过程序 b = (i+8) Mod 12 和 c2 = Mid(s2, b+1, 1)可知地支,b=(2024+8)Mod 12=4,c2 = Mid(s2, b+1, 1)=“辰”。10、答案: (1)caption (2) Int(Rnd * 6) + 1 Command1.Caption=甲方