资源描述
(完整版)VB练习题(上机)含答案
第一部分
1 在窗体上添加一个命令按钮(名称为Cmd1,标题为”输出平均值").程序运行后,单击命令按钮完成以下工作:
①随机产生20个0到1000的整数,将其放入一个一维数组中
②求出所有元素的平均值,并显示在窗体上(如下图所示)
Private Sub Cmd1_Click()
Dim a%(19), i%, sum!, aver!
Randomize
For i = 0 To 19
a(i) = Int(Rnd * 1001)
sum = sum + a(i)
Next i
aver = sum / 20
Print aver
End Sub
2 请在名称为Form1的窗体上添加一个名称为Text1的文本框和一个名称为C1、标题为”转换"的命令按钮,如下图所示。在程序运行时,单击”转换"按钮,可以把Text1中的小写字母转换为大写,把大写字母转换为小写,其他字符不变。
Private Sub C1_Click()
Dim ch As String, ch1 As String, i%
ch = Text1
For i = 1 To Len(ch)
If Asc(Mid(ch, i, 1)) >= 65 And Asc(Mid(ch, i, 1)) 〈= 90 Then
ch1 = ch1 + LCase(Mid(ch, i, 1))
Else
ch1 = ch1 + UCase(Mid(ch, i, 1))
End If
Next i
Text1 = Text1 + vbCrLf
Text1 = Text1 + ch1
End Sub
3 在窗体上添加一个命令按钮(名称为MyCmd1,标题为"输出最大值”)。程序运行后,单击命令按钮完成以下工作:
①随机产生30个0~1000的整数,将其放入一个一维数组中
②求出其中的最大值,并显示在窗体上。
Private Sub MyCmd1_Click()
Dim a%(29), i%, max%
Randomize
For i = 0 To 29
a(i) = Int(Rnd * 1001)
Next i
max = a(0)
For i = 1 To 29
If a(i) > max Then max = a(i)
Next i
Print max
End Sub
4 请设计如下图所示窗体界面。程序运行时,在选中一个或两个复选框和一个单选按钮时,单击命令按钮,则对文本框中的文本内容做相应的设置。请编写适当的事件过程,完成上述功能。
Private Sub Command1_Click()
If Option1.Value = True Then
Text1.FontName = ”宋体”
Else
Text1.FontName = ”隶书"
End If
If Check1.Value = 1 Then
Text1.FontUnderline = True
Else
Text1。FontUnderline = False
End If
If Check2.Value = 1 Then
Text1.FontItalic = True
Else
Text1。FontItalic = False
End If
End Sub
5 在名称为Form1的窗体上添加一个名称为Text1的文本框;添加两个标题分别为"对齐方式”、"字体",名称分别为Fm1、Fm2的框架;在Fm1框架中添加三个单选按钮,标题分别为"左对齐”、”居中”、"右对齐”,名称分别为Opt1、Opt2、Opt3;在Fm2框架中添加两个单选按钮,标题分别为"宋体"、"黑体",名称分别为Opt4、Opt5。
要求:编写五个单选按钮的Click事件过程,使程序运行时,单击这些单选按钮,可以对文本框中的内容实现相应的操作(如图所示).
Private Sub Opt1_Click()
If Opt1 Then Text1.Alignment = 0
End Sub
Private Sub Opt2_Click()
If Opt2 Then Text1.Alignment = 2
End Sub
Private Sub Opt3_Click()
If Opt3 Then Text1.Alignment = 1
End Sub
Private Sub Opt4_Click()
If Opt4 Then Text1.FontName = "宋体”
End Sub
Private Sub Opt5_Click()
If Opt5 Then Text1。FontName = ”黑体”
End Sub
6 请设计如下图所示窗体界面.运行程序时,先向左侧文本框中输入一个不超过10的正整数,然后选择”N的阶乘"或"(N+2)的阶乘”单选钮,即可进行计算,计算结果在右侧文本框中显示.请编写程序完成上述功能。
Dim n%
Private Sub Form_Load()
End Sub
Private Sub Option1_Click()
Dim i%
n = Val(Text1)
m = 1
For i = 1 To n
m = m * i
Next i
Text2 = m
End Sub
Private Sub Option2_Click()
Dim i%
m = 1
For i = 1 To n + 2
m = m * i
Next i
Text2 = m
End Sub
7 在窗体上添加两个文本框和三个标签,设置它们的属性,达到下图效果.程序运行时,在第一个文本框输入一串字符,在第二个文本框中输入一个字符,然后单击"统计"命令按钮,统计第二个文本框中字符(大小写被认为是不同的字母)在第一个文本框中出现的次数,统计结果在标签Label3中显示.
Private Sub Command1_Click()
Dim i%, n%
For i = 1 To Len(Text1)
If Mid(Text1, i, 1) = Text2 Then n = n + 1
Next i
Label3 = n
End Sub
Private Sub Label3_Click()
End Sub
8 在窗体上添加一个文本框和一个命令按钮。程序运行后,单击命令按钮,即可计算出0~200范围内能被3或7整除的所有整数的和,并显示在文本框中。程序运行界面如下图所示。
Private Sub Command1_Click()
Dim i%, sum%
For i = 0 To 200
If i Mod 3 = 0 Or i Mod 7 = 0 Then sum = sum + i
Next i
Text1 = sum
End Sub
Private Sub Text1_Change()
End Sub
9 请设计如下图所示界面(文本框名称为:Txt1,按钮名称为:Cmd1)。程序运行时在文本框中输入字符串,点击命令按钮,判断文本框中的字符串是否是回文,将判断结果显示在窗体上。所谓回文是指字符串正序和逆序的结果相同,如“aBCCBa"是回文,“aBCcBa”不是回文。
Private Sub Cmd1_Click()
Dim ch As String
For i = Len(Txt1) To 1 Step —1
ch = ch + Mid(Txt1, i, 1)
Next i
If Txt1 = ch Then
Print Txt1 + " 是回文”
Else
Print Txt1 + " 不是回文"
End If
End Sub
Private Sub Form_Load()
End Sub
10 编程实现求(n为小于等于20的整数)。程序运行界面如下图所示。程序运行时,在文本框中输入n的值,点击“计算”命令按钮,将计算结果显示在标签上。
Private Sub Command1_Click()
Dim i%, m As Long, sum As Double
n = Val(Text1)
m = 1
For i = 1 To n
m = m * i
sum = sum + 1 / m
Next i
Label2 = ”sum=” & sum
End Sub
Private Sub Form_Load()
End Sub
第二部分
1 已知在同一个笼子里有总数M只鸡和兔,鸡和兔的总脚数为N只,编程求出鸡和兔各有多少只.要求:程序运行后,在两个文本框中分别输入M和N的值,单击“计算”命令按钮,在两个标签框中分别输出鸡和兔的数量。程序运行界面如下图。提示:N≥2×M的偶数。
Private Sub Command1_Click()
m = Val(Text1)
n = Val(Text2)
If n Mod 2 〈> 0 Then
MsgBox ("脚数必须为偶数”)
Text2 = ””
Text2。SetFocus
Else
y = n / 2 — m
If y 〈 0 Then
MsgBox (”脚数必须〉=只数的2倍,请重新输入”)
Text2 = "”
Text2。SetFocus
Else
x = m - y
Label3 = x
Label4 = y
End If
End If
End Sub
Private Sub Form_Load()
End Sub
2 若一个3位正整数中各位数字的立方和等于该数字本身,则该数称之为“水仙花数”。例如153是水仙花数,因为 153 = 1*1*1 + 5*5*5 + 3*3*3。编程求出100~999之间所有的“水仙花数"。要求:程序运行后,单击“查找”按钮,在窗体上显示找到的“水仙花数”。 程序运行界面如下图.
Private Sub Command1_Click()
Print ”水仙花数:”;
For i = 100 To 999
X1 = i Mod 10 ’分离出个位数
X2 = (i Mod 100) \ 10 ’分离出十位数
x3 = i \ 100 '分离出百位数
If i = X1 ^ 3 + X2 ^ 3 + x3 ^ 3 Then Print i;
Next i
End Sub
Private Sub Form_Load()
End Sub
3 编写程序,要求程序运行后,单击“开始"按钮,随机产生20个学生的成绩(0~100的整数),并在左边图片框中输出 (一行5个成绩),并在右边图片框中输出平均分和及格的人数,程序运行界面如下图。
Private Sub Command1_Click()
Dim a(1 To 20) As Integer, i%, n%
Picture1。Cls
Picture2。Cls
For i = 1 To 20
a(i) = Int(Rnd * 101)
Picture1。Print a(i);
If i Mod 5 = 0 Then Picture1.Print
If a(i) >= 60 Then n = n + 1
Sum = Sum + a(i)
Next i
Picture2.Print ”平均分:"; Sum / 20
Picture2.Print ; ”及格人数:”; n
End Sub
Private Sub Picture2_Click()
End Sub
4 编写程序实现:程序运行时,单击窗体则显示如下图所示的图案。
Private Sub Form_Click()
For i = 1 To 5
Print Tab(10 — i); String(2 * i - 1, "*”)
Next i
For i = 1 To 4
Print Tab(5 + i); String(9 — 2 * i, "*")
Next i
End Sub
5 编程实现:在窗体中有一个文本框,一个计时器和两个命令按钮。其功能是:程序的运行时,单击“开始计数"按钮,就开始计数,每间隔1秒,文本框中的数增加1;单击“停止计数"按钮,则计数停止。
Private Sub Command1_Click()
Timer1。Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
Private Sub Form_Load()
End Sub
Private Sub Timer1_Timer()
Text1 = Val(Text1) + 1
End Sub
’在属性窗口设置定时器的interval属性值为1000
6 以下程序运行界面如下图所示。其功能如下:
1) 单击”读数据”按钮(Command1),可将随机产生100个三位正整数存到数组a中;
2) 单击"计算”按钮(Command2),则根据从组合框Combo1中选中的项目,对数组a中的数据计算平均值,并将计算结果四舍五入取整后显示在文本框Text1中.
题目提供的程序代码不完整,请设计下图界面并录入代码,将程序中的 ? 改为正确的内容。注意:不能修改程序的其他部分。
30
题目提供的程序代码:
Dim a(100) As Integer
Private Sub Command1 Click()
Dim n As Integer
For n = 1 To 100
a(n)=Int(Rnd * ? )
Next n
End Sub
Private Sub Command2 Click()
Dim x& ,y& , z& ,i% , j% , k%
For i = 1 To 100
If a(i) Mod ? Then
x = x + a(i): j = j + 1
Else
y = y + a(i)
?
End If
Next k
x = Int(x / j + 0。5):y = Int(y / k + 0.5)
z = Int((x + y) / (j + k) + 0.5)
Select Case Combo1.Text
Case "所有偶数”
Text1 = ?
Case ”所有奇数”
Text1 = ?
Case ”所有数"
Text1 = ?
End Select
End Sub
Dim a(1 To 100) As Integer
Private Sub Command1_Click()
Dim n As Integer
For n = 1 To 100
a(n) = Int(Rnd * 900 + 100)
Next n
End Sub
Private Sub Command2_Click()
Dim x&, y&, z&, i%, j%, k%
For i = 1 To 100
If a(i) Mod 2 = 0 Then
x = x + a(i): j = j + 1
Else
y = y + a(i): k = k + 1
End If
Next i
x = Int(x / j + 0。5): y = Int(y / k + 0.5)
z = Int((x + y) / (j + k) + 0。5)
Select Case Combo1。Text
Case ”所有偶数”
Text1 = x
Case "所有奇数"
Text1 = y
Case "所有数"
Text1 = x + y
End Select
End Sub
’在combo1的属性窗口设置list属性,添加列表项
Private Sub Label1_Click()
End Sub
7 编写程序。要求:程序运行后,单击“开始"按钮,则随机产生20个2位数输出到窗体上,每行10个数。同时对所产生的20个数从小到大排序,将排序后的数再次输出在窗体上.程序运行界面如下图。
Private Sub Command1_Click()
Dim a%(1 To 20), i%
Print "排序前数据排列:”
For i = 1 To 20
a(i) = Int(Rnd * 90 + 10)
Print a(i);
If i Mod 10 = 0 Then Print
Next i
For i = 1 To 20 '冒泡排序
For j = 1 To 20 — i
If a(j) 〉 a(j + 1) Then
t = a(j): a(j) = a(j + 1): a(j + 1) = t
End If
Next j
Next i
Print "排序后数据排列:”
For i = 1 To 20
Print a(i);
If i Mod 10 = 0 Then Print
Next i
End Sub
Private Sub Form_Load()
End Sub
8 编写程序,程序的功能是:程序运行后,在文本框中输入一串字符, 单击标题为”统计"的命令按钮,分别统计输入字符串中大写字母、小写字母以及其他字符的个数,并将统计结果分别在相应的标签框中显示。程序运行界面如下图.
Private Sub Command1_Click()
Dim i%, m%, n%, z%
For i = 1 To Len(Text1)
If Asc(Mid(Text1, i, 1)) 〉= 65 And Asc(Mid(Text1, i, 1)) <= 90 Then
n = n + 1
ElseIf Asc(Mid(Text1, i, 1)) >= 97 And Asc(Mid(Text1, i, 1)) 〈= 122 Then
m = m + 1
Else
z = z + 1
End If
Next i
Label2 = n
Label4 = m
Label6 = z
End Sub
Private Sub Form_Load()
End Sub
9 编写程序。程序功能是:程序运行后在文本框中输入一个正整数,单击“判断”按钮,在标签框中输出“该数是一个素数”或“该数不是一个素数”的信息。程序运行界面如下图.
Private Sub Command1_Click()
Dim n%
n = Val(Text1)
For i = 2 To n - 1
If n Mod i = 0 Then Label1 = n & "不是素数": GoTo notm
Next i
Label1 = n & ”是素数”
notm:
End Sub
Private Sub Form_Load()
End Sub
10 编写程序,程序的功能是:程序运行后,单击“开始"按钮,在窗体上显示出10个小于100的随机正整数,单击“查找”按钮,则在窗体的下一行显示出这10个数中的最大的数以及最大数在此数列中的位置号.程序运行界面如下图.
Dim a%(1 To 10)
Private Sub Command1_Click()
Dim i%
Randomize
For i = 1 To 10
a(i) = Int(Rnd * 101)
Print a(i);
Next i
End Sub
Private Sub Command2_Click()
Dim max%, imax%
max = a(1): imax = 1
For i = 2 To 10
If a(i) 〉 max Then max = a(i): imax = i
Next i
Print
Print
Print "最大数是:”; max; Spc(5); "位置号是:"; imax
End Sub
Private Sub Form_Load()
End Sub
第三部分
1 在窗体Form1上添加两个文本框,一个“转换”命令按钮和三个单选按钮(名称分别为Opt1、Opt2、Opt3,标题分别为“大小写转换”、“全部大写"、“全部小写”).程序功能:在上方文本框Text1中输入一字符串,选中“大小写转换”,单击“转换”按钮后,Text2中显示大小写相反的字符串;选中“全部大写”,单击转换按钮后,Text2中显示全部大写字符串,选中“全部小写”,单击转换按钮后,Text2中显示全部小写字符串 。程序运行界面如下图。
要求:① 请按要求完成窗体界面设计 ②程序的部分代码已给出如下,但不完整。请录入下面代码,并将“?”处补充完整。
Private Sub Command1_Click()
Dim n As Integer, k As Integer, ch As String, a As String
ch = ””
If Opt1。Value = True Then
n = Len(?)
For k = 1 To n
a = Mid$(Text1, k, ?)
If a >= "a" And a 〈= "z" Then
ch = ch + UCase(a)
ElseIf a >= ”A” And a 〈= "Z” Then
ch = ch + LCase(a)
Else
ch = ch + a
End If
Next k
End If
If Opt2。Value = True Then ch = UCase(Text1)
If Opt3.Value = True Then ch = ?(Text1)
Text2 = ch
End Sub
答案Private Sub Command1_Click()
Dim n As Integer, k As Integer, ch As String, a As String
ch = ""
If Opt1.Value = True Then
n = Len(Text1)
For k = 1 To n
a = Mid$(Text1, k, 1)
If a 〉= "a" And a <= "z” Then
ch = ch + UCase(a)
ElseIf a 〉= "A” And a 〈= "Z” Then
ch = ch + LCase(a)
Else
ch = ch + a
End If
Next k
End If
If Opt2。Value = True Then ch = UCase(Text1)
If Opt3。Value = True Then ch = LCase(Text1)
Text2 = ch
End Sub
Private Sub Form_Load()
End Sub
2 编写程序,演示列表框控件的基本操作.在窗体上建立两个列表框,两个命令按钮。程序运行后,在左边列表框中选中所需要的项目,单击“添加”按钮,则把所选中的项目移到右边列表框中。如果单击“删除"按钮,则删除左边列表框中选中的项目。程序运行时的窗体界面如图。
Private Sub Command1_Click()
List2.AddItem List1.Text
List1。RemoveItem List1.ListIndex
End Sub
Private Sub Command2_Click()
List1.AddItem List2。Text
List2.RemoveItem List2.ListIndex
End Sub
Private Sub Form_Load()
List1。AddItem "美的”
List1.AddItem ”海尔"
List1.AddItem ”奥克斯”
List1.AddItem "春兰"
List1。AddItem ”长虹”
End Sub
3 编程实现:单击“输出最大值”按钮,随机产生8个大于或等于10小于100的整数,显示在窗体的第一行,然后在窗体第二行显示其中的最大值。程序运行时的效果如图。
Private Sub Command1_Click()
Dim a%(7), i%, max%
For i = 0 To 7
a(i) = Int(Rnd * 90 + 10)
Print a(i);
Next i
max = a(0)
For i = 1 To 7
If a(i) 〉 max Then max = a(i)
Next i
Print
Print max
End Sub
Private Sub Form_Load()
End Sub
4 在Form1的窗体上有一个名称为Text1的文本框和两个命令按钮,命令钮标题分别为“显示A”和“显示B”。要求程序运行后,如单击“显示A”命令按钮,则弹出对话框,输入要显示的个数,根据输入的数值在文本框中显示相应数量”A”构成的字符串;如单击“显示B”命令按钮,也弹出对话框,输入要显示的个数,根据输入的数值在文本框中显示相应数量"B”构成的字符串。程序运行时的窗体界面如图所示。
Private Sub Command1_Click()
n = Val(InputBox("请输入显示个数"))
Text1 = String(n, ”A")
End Sub
Private Sub Command2_Click()
n = Val(InputBox(”请输入显示个数"))
Text1 = String(n, ”B”)
End Sub
Private Sub Form_Load()
End Sub
5 已知十个数为:67, 45, 34, 28, 49, 37, 87, 76, 27, 83。编程实现:按“开始”按钮,则在窗体的第一行显示这十个数,在窗体的第二行按从大到小的顺序显示这十个数。
Private Sub Command1_Click()
Dim a(), i%
a = Array(67, 45, 34, 28, 49, 37, 87, 76, 27, 83)
n = UBound(a)
For i = 0 To n
Print a(i);
Next i
For i = 0 To n — 1
For j = 0 To n - 1 - i
If a(j) < a(j + 1) Then t = a(j): a(j) = a(j + 1): a(j + 1) = t
Next j
Next i
Print
For i = 0 To n
Print a(i);
Next i
End Sub
Private Sub Form_Load()
End Sub
6 界面设计如下图所示,单击“确定"按钮,在文本框中显示一句话,说明用户选择的综合情况.
Private Sub Command1_Click()
If Option1。Value = True Then xb = Option1。Caption Else xb = Option2。Caption
If Option3。Value = True Then sf = Option3。Caption Else sf = Option4。Caption
If Check1.Value = 1 Then ah = ah + Check1。Caption + ”、"
If Check2。Value = 1 Then ah = ah + Check2。Caption + ”、”
If Check3。Value = 1 Then ah = ah + Check3。Caption + ”。"
Text1 = ”我是” + xb + sf + ”,爱好:” + ah
End Sub
Private Sub Form_Load()
End Sub
7 编程实现:在窗体上的4个文本框中各输入一个整数作为各数组元素的值,然后单击命令按钮,在窗体上显示出数组元素中的最大值。
Private Sub Command1_Click()
Dim a%(3), i%, max%
For i = 0 To 3
a(i) = Val(Text1(i))
Next i
max = a(0)
For i = 1 To 3
If a(i) > max Then max = a(i)
Next i
Print max
End Sub
Private Sub Form_Load()
End Sub
8 编程实现:在窗体的两个文本框中分别输入一个正整数,单击“求最大公约数"按钮后,在窗体第一行显示它们的最大公约数。程序运行界面如下图所示。
Private Sub Command1_Click()
Dim m%, n%
m = Val(Text1)
n = Val(Text2)
If n 〉 m Then t = n: n = m: m = t
r = m Mod n
Do While r 〈> 0
m = n
n = r
r = m Mod n
Loop
Print Text1; ”和"; Text2; "最大公约数是:"; n
End Sub
Private Sub Form_Load()
End Sub
9 编程实现:在窗体的左上角有一个图像框,通过属性窗口任选一张图片装入到图像框的Picture属性中,每按一次“放大”按钮时图像放大10%,同理,每按一次“缩小”按钮时图像缩小10%,放大缩小时均需保持图像的纵横比不变,按“结束程序"按钮则结束程序.程序运行界面如下图.
Private Sub Command1_Click()
Image1.Stretch = True
Image1.Width = Image1。Width * 1.1
Image1。Height = Image1。Height * 1.1
End Sub
Private Sub Command2_Click()
Image1。Stretch = True
Image1。Width = Image1.Width * 0。9
Image1。Height = Image1。Height * 0.9
End Sub
Private Sub Command3_Click()
End
End Sub
Private Sub Form_Load()
End Sub
10 编程实现:在窗体上建立一个文本框(内容如下图所示),另外建立菜单,一级菜单标题分别为“背景颜色”,子菜单标题分别为“白色"、“红色"、“绿色”、“蓝色”.程序运行时,如果单击“白色"子菜单,则将文本框的背景色设置为白色;如果单击“红色”子菜单,则将文本框的背景色设置为红色;如果单击“绿色”子菜单,则将文本框的背景色设置为绿色;如果单击“蓝色”子菜单,则将文本框的背景色设置为蓝色。程序运行界面如下图。
Private Sub blue_Click()
Text1.BackColor = vbBlue
End Sub
Private Sub green_Click()
Text1.BackColor = vbGreen
End Sub
Private Sub red_Click()
Text1.BackColor = vbRed
End Sub
Private Sub Text1_Change()
End Sub
Private Sub white_Click()
Text1。BackColor = vbWhite
End Sub
第四部分
1.编程计算分段函数的值。要求用文本框(TextBox)输入x,y的值,单击标题为“计算”命令按钮后,利用标签控件上显示z的值。
Private Sub Command1_Click()
x = Val(Text1)
y = Val(Text2)
If x > 0 And y > 0 Then
z = Sqr(x + y)
ElseIf x 〈 0 And y < 0 Then
z = Sqr(Abs(x - y))
Else
z = 0
End If
Label3 = z
End Sub
Private Sub Form_Load()
End Sub
2、在窗体添加一个命令按钮(标题为“开始”),单击该按钮,随机产生10个三位数(100~999),在窗体的第一行这10个三位数,在窗体的第二行输出其中的奇数,在窗体的第三行输出其中的偶数.
Private Sub Command1_Click()
Dim a%(1 To 10), i%
For i = 1 To 10
a(i) = Int(Rnd * 900 + 100) ’随机产生10个100到999的整数
Print a(i);
Next i
Print
For i = 1 To 10
If a(i) Mod 2 〈> 0 Then Print a(i); ’
展开阅读全文