VB专题题
1.“四叶玫瑰数”是指一个四位自然数各位上数字的四次方之和等于该四位数本身的数。如自然数8208=84+24+84”,那它就是一个“四叶玫瑰数”。现用VB编写一个程序,实现如下功能:单击“查找”按钮Command1,在列表框List1中显示所有“四叶玫瑰数”,并在标签Label2中显示找到的个数,运行界面如下图所示:
(1)为实现上述功能,请在画线处填入正确的代码。 Private Sub Command1_Click( )
Dim i As Integer, s As Integer
Dim a As Integer, b As Integer, c As Integer, d As Integer s = 0
For 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 Then List1.AddItem i s = ② End If Next
Label2.Caption = ″四叶玫瑰数共有″+ Str(s) + ″个″ End Sub
(2)程序中的语句“b = (i Mod 100) \\ 10”和下列哪些项功能相同 (多选)。 A.b=i\\10 Mod 10 C.b = i Mod 100\\10
B.b=int(i/10) Mod 10 D.b=Mid(i,3,1)
2、用VB设计一个奇数迁移的程序,具体要求是:单击“产生”按钮Command1,清空两个列表框中的内容,并产生10个3位自然数放入左边列表框List1中,如图1所示。单击“奇数迁移”按钮Command2,将列表框List1中的所有奇数迁移到列表框List2中,如图2所示。
第1页
VB专题题
图1 图2
在以下Visual Basic程序的画线①②处填入合适的语句,实现上述功能。 Dim a(1 To 10) As Integer
Private Sub Command1_Click() List1.Clear List2.Clear Randomize For i = 1 To 10
a(i) = Int(Rnd() * 900 + 100) List1.AddItem ① Next i End Sub
Private Sub Command2_Click() List1.Clear
For i = ② If a(i) Mod 2 = 1 Then List2.AddItem a(i) Else
List1.AddItem a(i) End If Next i End Sub
3、小贝用VB6语言编写了一个拼手气红包程序,实现的功能是:在文本框Text1中输入发放红包的总金额s,在文本框Text2中输入发放红包的个数n,单击“发放红包”按钮Command1,为n个红包随机分配金额,并在列表框List1中显示分配后的这些金额。界面如图1所示。
图1
第2页
VB专题题
图2
(1)在设计应用程序界面时,应使用图2所示“控件工具箱”中的 (填写相应编号)添加列表框List1。 (2)为实现上述功能,请在横线①②③处填入合适代码。 Private Sub Command1_Click()
Dim s As Single,x As Single,n As Integer,i As Integer Randomize List1.Clear s= ① n=Val(Text2.Text)
For i=1 To ② '通过循环语句产生n-1个红包的随机值 x=Int((Rnd()*s/(n-i)+0.005)*100)/100 List1.AddItem Str(x) s= ③ Next i
x=Int((s+0.005)*100)/100 '产生最后一个红包 List1.AddItem Str(x) End Sub
4、利用Visual Basic设计一个小写转大写的程序:在文本框Text1中输入一串字符,单击“转换”按钮Command1,将其中的小写英文字母转换为大写英文字母后,在文本框Text2中显示转换后的字符串。程序运行界面如图所示。
(1)实现上述功能的VB代码如下,在画线处应填入正确的语句以实现以上功能。 Private Sub Command1_Click() Dim a As String,b As String Dim i As Integer,c As String a= ①
第3页
VB专题题
For i=1 To Len(a) c=Mid(a,i,1)
If ② Then c=Chr(Asc(c)-32) End If b=b & c Next i Text2.Text=b End Sub
(2)由程序可知,小写字母比大写字母的ASCII编码值大 。
5、多数高次方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。由于数轴上的点是有序的,因此我们可以用对分查找法找出高次方程在某一区间的实根。即:不断地将区间对分,使得区间中点的值不断逼近方程的根。当区间小于精度的时候,我们就停止对分,并用此时区间的中点值作为方程的根。如求三次方程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),然后继续进行检测,如果区间差值≤误差率,则认为该中点是方程的根。根据上述方法描述,设计一个VB求解程序的根。程序运行界面如图3所示,单击求解按钮Command1,在文本框Text1中显示方程的根。
图3
(1)为显示函数的图像,应在窗体中放置的控件是 。(填图2中编号) (2)程序代码如下,请在画线处填写正确的VB代码。 Private Sub Command1_Click()
Dim i As Double, j As Double, m As Double Dim r As Double , y As Double i=1:j=2:y=1:r=j-i
Do While y <> 0 And r > 0.00001
m=(i + j) / 2
第4页
VB专题题
Loop Text1.Text =m End Sub
6、现要用VB编写一个“剪刀石头布”的游戏,游戏界面如图1所示:
y=5 * m ^ 3 - 55", m ^ 2 + 170", m - 130 If y > 0 Then ① ElseIf y < 0 Then i=m End If r= ②
图1
图2
点击单选框选择剪刀或石头或布,程序立即显示相应的图像,同时电脑随机出示一个剪刀或石头或布,并显示输赢的结果在列表框List1中。
(1)为显示输赢的结果,应在窗体中加入一个列表框,应使用图2所示的控件工具箱中的 (填写相应的编号)。 (2)请根据题意将下列程序补充完整 Private Sub Option1_Click(Index As Integer)
'index表示所选的编号,剪刀为0 石头为1 布为2,图片文件名与此编号对应 Randomize
x= '产生[0,2]的随机整数 Image1.Picture=Load Picture(x &″.jpg″) Image2.Picture=Load Picture(Index &″.jpg″) If Index=0 And x=0 Then s=″平局″ If Index=0 And x=1 Then s=″输了″ If Index=0 And x=2 Then s=″胜了″ If Index=1 And x=0 Then s=″胜了″ If Index=1 And x=1 Then s=″平局″ If Index=1 And x=2 Then s=″输了″ If Index=2 And x=0 Then s=″输了″ If Index=2 And x=1 Then s=″胜了″ If Index=2 And x=2 Then s=″平局″
第5页