VB期末考试上机题编程答案

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

VB期末考试上机题编程答案
1.新建一个工程,编写一个找出所有四位幸运数显示在列表框中,并将幸运数的个数显示在文本框中。

所谓幸运数是指凡前两位数字之和等于后两位数字之和的四位数。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、单击"查找"按钮,则开始查找并在列表框中显示结果,并在文本框中显示幸运数的个数;
3、单击“清除”按钮,则将列表框和文本框清空;
4、单击“退出”按钮,结束程序运行;
5、程序中应包含一个过程,用于判断一个数是否是幸运数。

解:Private Sub Command1_Click()
Dim i As Integer, a As Integer
For i = 1000 To 9999
If k(i) Then List1.AddItem i: a = a + 1
Next i
Text1.Text = a
End Sub
Private Sub Command2_Click()
List1.Clear
Text1.Text = ""
End Sub
Private Sub Command3_Click()
End
End Sub
Private Function k(n As Integer) As Integer
Dim i As Integer, a As Integer, s1 As Integer, s2 As Integer
Dim s As String
s = CStr(n)
For i = 1 To Len(s) / 2
s1 = s1 + Mid(s, i, 1)
s2 = s2 + Mid(s, Len(s) + 1 - i, 1)
Next i
If s1 = s2 Then k = True
End Function
2. 新建一个工程,编写求某一自然数因子和的程序。

要求通过文本框获取输入的自然数,计算后将所计算得到的因子和显示在另一文本框中。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、单击"求和"按钮,则在文本框中显示计算得到的因子和;
3、单击“清除”按钮,则将文本框清空,焦点设置在第一个文本框;
4、单击“退出”按钮,结束程序运行;
5、在程序中应包含一个用于计算自然数因子和的函数过程YinZi(n)。

解;Private Sub Command1_Click()
Dim n As Integer
n = Val(Text1.Text)
Call yinzi(n)
Text2.Text = yinzi(n)
End Sub
Private Function yinzi(n As Integer) As Integer
Dim i As Integer
For i = 1 To n / 2
If n Mod i = 0 Then yinzi = yinzi + i
Next i
End Function
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
End Sub
Private Sub Command3_Click()
End
End Sub
3. 新建一个工程,编写一个程序,判断随机生成的10个三位正整数是否是降序数。

所谓降序数是指百位数大于十位数且十位数大于个位数的数。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、单击"执行"按钮,随机生成10个三位正整数,显示在左边的列表框中,将判断结果参照样图的格式显示在右边的列表框中;
3、单击“清除”按钮,则将两个列表框清空;
4、单击“退出”按钮,结束程序运行;
5、程序中应包含一个名为jx的函数过程,用于判断一个正整数是否为降序数。

解;Private Function jx(n As Integer) As Boolean
Dim i As Integer
Dim a As Integer, b As Integer
For i = 2 To Len(Str(n))
a = Val(Mid(n, i - 1, 1))
b = Val(Mid(n, i, 1))
If a <= b Then Exit For
Next i
If i > Len(Str(n)) - 1 Then jx = True
End Function
Private Sub command1_click()
Dim a(1 To 10) As Integer
Dim i As Integer
For i = 1 To 10
a(i) = 1000 + Int(Rnd * 9000)
List1.AddItem a(i)
If jx(a(i)) Then List2.AddItem a(i) Next i
End Sub
Private Sub Command2_Click()
List1.Clear
List2.Clear
End Sub
Private Sub command3_click()
End
End Sub
4. 新建一个工程,统计一个二进制数中0的个数和1的个数。

将原窗体文件和工程文件分别另存为为
f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、第一个文本框用于输入一个二进制数,单击“统计”按纽,在另外两个文本框中分别显示0 和1的个数;
3、单击“清除”按纽,将三个文本框内容清除,且光标落在第一个文本框;
4、单击“退出”按纽,则结束程序运行;
5、程序中应包含一个过程,用于统计字符串中0和1的个数。

解;Private Sub Command1_Click()
Dim s As String
s = Text1.Text
Dim a As Integer, b As Integer
Call fun(s)
End Sub
Private Sub fun(s As String)
Dim i As Integer, a As Integer, b As Integer
For i = 1 To Len(s)
If Mid(s, i, 1) = 0 Then
a = a + 1
Else: b = b + 1
End If
Next i
Text2.Text = "0的个数有" & Val(a) & "个"
Text3.Text = "1的个数有" & Val(b) & "个"
End Sub
Private Sub command2_click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
End Sub
Private Sub command3_click()
End
End Sub
5. 新建一个工程,编写一个程序,找出随机生成的30个三位正整数中的升序数。

所谓升序数是指百位数小于十位数且十位数小于个位数的数。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在
D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、单击"执行"按钮,随机生成30个三位正整数,按6个数一行的格式显示在多行文本框中,再找出其中的升序数输出到列表框;
3、单击“清除”按钮,则将文本框和列表框清空;
4、单击“退出”按钮,结束程序运行;
5、程序中应包含一个名为jx的函数过程,用于判断一个正整数是否为升序数。

解:Private Sub Command1_Click()
Dim a(1 To 6, 1 To 5) As Integer
Dim i As Integer, j As Integer
For i = 1 To 6
For j = 1 To 5
a(i, j) = 10 + Int(Rnd * 20)
If jx(a(i, j)) = True Then List1.AddItem a(i, j)
Text1.Text = Text1.Text & a(i, j) & " "
Next j
Text1.Text = Text1.Text & vbCrLf
Next i
End Sub
Private Sub Command2_Click()
List1.Clear
Text1.Text = ""
End Sub
Private Function jx(n As Integer) As Integer
Dim i As Integer
Dim a As Integer, b As Integer
For i = 2 To Len(Str(n))
a = Val(Mid(n, i - 1, 1))
b = Val(Mid(n, i, 1))
If a >= b Then Exit For
Next i
If i > Len(Str(n)) - 1 Then jx = True
End Function
Private Sub Command3_Click()
End
End Sub
6. 新建一个工程,编写一个程序,求两个正整数的最小公倍数。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、从两个文本框中输入两个正整数,单击"求解"按钮,在第三个文本框中显示求得的这两个数的最小公倍数;
3、单击“清除”按钮,则将三个文本框清空,并将焦点设置在第一个文本框;
4、单击“退出”按钮,结束程序运行;
5、程序中应包含一个过程,用于求两个正整数的最小公倍数。

解;Private Sub Command1_Click()
Dim a, b As Integer
a = Val(Text1.Text)
b = Val(Text2.Text)
Call gcd(a, b)
Text3.Text = gcd(a, b)
End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text1.SetFocus
End Sub
Private Sub Command3_Click()
End
End Sub
Private Function gcd(ByVal n As Integer, ByVal m As Integer)
Dim r As Integer
Dim s As Integer
s = m * n
Do While n <> 0
r = m Mod n
m = n
n = r
Loop
gcd = s / m
End Function
7. 新建一个工程,编写程序找出所有小于1000的完数。

一个数如果恰好等于它的因子之和,这个数称为完数。

一个数的因子是指除了该数本身以外能被其整除的数。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、单击“查找”按钮,在列表框中显示所有满足条件的完数;
3、单击“清除”按钮,清空列表框;
4、单击“结束”按钮,结束程序运行;
5、程序中应包含一个过程,用于判断某个数是否是完数。

解;Private Sub Command1_Click()
Dim i As Integer
For i = 1 To 1000
If k(i) Then List1.AddItem i
Next i
End Sub
Private Sub Command2_Click()
List1.Clear
End Sub
Private Sub Command3_Click()
End
End Sub
Private Function k(n As Integer) As Integer
Dim i As Integer, s As Integer
For i = 1 To n / 2
If n Mod i = 0 Then s = s + i
Next i
If s = n Then k = True
End Function
8. 新建一个工程,编写一个程序找出所有满足条件的四位数。

这些数本身是素数,而且其每一位数都是素数。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、单击"查找"按钮,在列表框中显示所有满足条件的四位数数;
3、单击“清除”按钮,则将列表框清空;
4、单击“退出”按钮,结束程序运行;
5、程序中应包含一个过程,用于判断一个数是否为素数。

解;Private Sub Command1_Click()
Dim i As Integer
For i = 1000 To 9999
If k(i) And k(Mid(i, 1, 1)) And k(Mid(i, 2, 1)) And k(Mid(i, 3, 1)) And k(Mid(i, 4, 1)) Then List1.AddItem i
Next i
End Sub
Private Sub Command2_Click()
List1.Clear
End Sub
Private Sub Command3_Click()
End
End Sub
Private Function k(n As Integer) As Integer
Dim i As Integer
For i = 2 To Sqr(n)
If n Mod i = 0 Then Exit For
Next i
If i > Sqr(n) Then
k = True
End If
End Function
9. 新建一个工程,编写一个程序,找出数组中最大的元素并显示其位置。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、单击"显示"按钮,则在图片框中显示由随机的二位数组成的5行5列的数组;
3、单击“查找”按钮,则在文本框中显示最大元素及其位置;
4、单击“清除”按钮,则将文本框和图片框清空;
5、单击“退出”按钮,结束程序运行;
6、程序中应包含一个过程,用于查找数组中的最大元素及其所在行和列。

解;Option Base 1
Dim a(1 To 5, 1 To 5) As Integer
Public Sub Command1_Click()
Dim i, j As Integer
For i = 1 To 5
For j = 1 To 5
a(i, j) = 10 + Int(Rnd * 90)
Picture1.Print a(i, j);
Next j
Picture1.Print
Next i
End Sub
Private Function k(n As Integer) As Integer
Dim i, j As Integer
k = 0
Dim a(1 To 5, 1 To 5) As Integer
For i = 1 To 5
For j = 1 To 5
a(i, j) = 10 + Int(Rnd * 90)
If a(i, j) > k Then k = a(i, j)
Next j
Next i
End Function
Private Sub Command2_Click()
Dim max As Integer, x As Integer, y As Integer
max = 0
For i = 1 To 5
For j = 1 To 5
If a(i, j) > max Then max = a(i, j) And x = i And y = j Next j
Next i
Text1.Text = "最大数组的位置是:" & "(" & x & "," & y & ")" End Sub
Private Sub Command3_Click()
Text1.Text = ""
Picture1.Cls
End Sub
Private Sub Command4_Click()
End Sub
10. 新建一个工程,编写一个程序,求乘积为180,最大公约数为3的数对。

将原窗体文件和工程文件分别另存为为f.frm和p.vbp,保存在D盘的VBTest文件夹中。

如不按要求保存,造成文件无法上传,后果自负!
具体要求:
1、程序参考界面如图所示,编程时不得增加或减少界面对象或改变对象的种类,窗体及界面元素大小适中,且均可见;
2、单击"查找"按钮,则开始查找并在列表框中显示结果,数据相同的两组数中只取一组,小的数在前面,大的数在后面,如12、15和15、12只取12、15这一对;
3、单击“清除”按钮,则将列表框清空;
4、单击“退出”按钮,结束程序运行;
5、程序中应包含一个求两个数的最大公约数的过程。

解;Private Sub Command1_Click()
Dim x, y As Integer
For x = 1 To Int(Sqr(180))
y = 180 / x
If gcd(x, y) = 3 Then List1.AddItem x & "和" & y
Next x
Private Sub Command2_Click()
List1.Clear
End Sub
Private Sub Command3_Click()
End
End Sub
Private Function gcd(ByVal n As Integer, ByVal m As Integer) Dim r As Integer
Do While n <> 0
r = m Mod n
m = n
n = r
Loop
gcd = m
End Function。

相关文档
最新文档