1、(完整版)VB练习题(上机)含答案第一部分1 在窗体上添加一个命令按钮(名称为Cmd1,标题为”输出平均值).程序运行后,单击命令按钮完成以下工作:随机产生20个0到1000的整数,将其放入一个一维数组中求出所有元素的平均值,并显示在窗体上(如下图所示)Private Sub Cmd1_Click()Dim a(19), i, sum!, aver!RandomizeFor i = 0 To 19 a(i) = Int(Rnd * 1001) sum = sum + a(i)Next iaver = sum / 20Print averEnd Sub2 请在名称为Form1的窗体上添加一个名称
2、为Text1的文本框和一个名称为C1、标题为”转换的命令按钮,如下图所示。在程序运行时,单击”转换按钮,可以把Text1中的小写字母转换为大写,把大写字母转换为小写,其他字符不变。Private Sub C1_Click()Dim ch As String, ch1 As String, ich = Text1For 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,
3、 1)) End IfNext iText1 = Text1 + vbCrLfText1 = Text1 + ch1End Sub3 在窗体上添加一个命令按钮(名称为MyCmd1,标题为输出最大值”)。程序运行后,单击命令按钮完成以下工作:随机产生30个01000的整数,将其放入一个一维数组中求出其中的最大值,并显示在窗体上。Private Sub MyCmd1_Click()Dim a(29), i%, maxRandomizeFor i = 0 To 29 a(i) = Int(Rnd 1001)Next imax = a(0)For i = 1 To 29 If a(i) max The
4、n max = a(i)Next iPrint maxEnd Sub4 请设计如下图所示窗体界面。程序运行时,在选中一个或两个复选框和一个单选按钮时,单击命令按钮,则对文本框中的文本内容做相应的设置。请编写适当的事件过程,完成上述功能。 Private Sub Command1_Click()If Option1.Value = True Then Text1.FontName = ”宋体”Else Text1.FontName = ”隶书End IfIf Check1.Value = 1 Then Text1.FontUnderline = TrueElse Text1。FontUnderl
5、ine = FalseEnd IfIf Check2.Value = 1 Then Text1.FontItalic = TrueElse Text1。FontItalic = FalseEnd IfEnd Sub5 在名称为Form1的窗体上添加一个名称为Text1的文本框;添加两个标题分别为对齐方式”、字体,名称分别为Fm1、Fm2的框架;在Fm1框架中添加三个单选按钮,标题分别为左对齐”、”居中”、右对齐”,名称分别为Opt1、Opt2、Opt3;在Fm2框架中添加两个单选按钮,标题分别为宋体、黑体,名称分别为Opt4、Opt5。 要求:编写五个单选按钮的Click事件过程,使程序运行时
6、,单击这些单选按钮,可以对文本框中的内容实现相应的操作(如图所示).Private Sub Opt1_Click()If Opt1 Then Text1.Alignment = 0End SubPrivate Sub Opt2_Click()If Opt2 Then Text1.Alignment = 2End SubPrivate Sub Opt3_Click()If Opt3 Then Text1.Alignment = 1End SubPrivate Sub Opt4_Click()If Opt4 Then Text1.FontName = 宋体”End SubPrivate Sub O
7、pt5_Click()If Opt5 Then Text1。FontName = ”黑体”End Sub6 请设计如下图所示窗体界面.运行程序时,先向左侧文本框中输入一个不超过10的正整数,然后选择”N的阶乘或(N+2)的阶乘”单选钮,即可进行计算,计算结果在右侧文本框中显示.请编写程序完成上述功能。 Dim n%Private Sub Form_Load()End SubPrivate Sub Option1_Click()Dim in = Val(Text1)m = 1For i = 1 To n m = m iNext iText2 = mEnd SubPrivate Sub Optio
8、n2_Click()Dim i%m = 1For i = 1 To n + 2 m = m * iNext iText2 = mEnd Sub7 在窗体上添加两个文本框和三个标签,设置它们的属性,达到下图效果.程序运行时,在第一个文本框输入一串字符,在第二个文本框中输入一个字符,然后单击统计命令按钮,统计第二个文本框中字符(大小写被认为是不同的字母)在第一个文本框中出现的次数,统计结果在标签Label3中显示. Private Sub Command1_Click()Dim i%, n%For i = 1 To Len(Text1) If Mid(Text1, i, 1) = Text2 Th
9、en n = n + 1Next iLabel3 = nEnd SubPrivate Sub Label3_Click()End Sub8 在窗体上添加一个文本框和一个命令按钮。程序运行后,单击命令按钮,即可计算出0200范围内能被3或7整除的所有整数的和,并显示在文本框中。程序运行界面如下图所示。Private Sub Command1_Click()Dim i%, sumFor i = 0 To 200 If i Mod 3 = 0 Or i Mod 7 = 0 Then sum = sum + iNext iText1 = sumEnd SubPrivate Sub Text1_Chan
10、ge()End Sub9 请设计如下图所示界面(文本框名称为:Txt1,按钮名称为:Cmd1)。程序运行时在文本框中输入字符串,点击命令按钮,判断文本框中的字符串是否是回文,将判断结果显示在窗体上。所谓回文是指字符串正序和逆序的结果相同,如“aBCCBa是回文,“aBCcBa”不是回文。Private Sub Cmd1_Click()Dim ch As StringFor i = Len(Txt1) To 1 Step 1 ch = ch + Mid(Txt1, i, 1)Next iIf Txt1 = ch Then Print Txt1 + 是回文”Else Print Txt1 + 不是
11、回文End IfEnd SubPrivate Sub Form_Load()End Sub10 编程实现求(n为小于等于20的整数)。程序运行界面如下图所示。程序运行时,在文本框中输入n的值,点击“计算”命令按钮,将计算结果显示在标签上。 Private Sub Command1_Click()Dim i%, m As Long, sum As Doublen = Val(Text1)m = 1For i = 1 To nm = m isum = sum + 1 / mNext iLabel2 = ”sum=” sumEnd SubPrivate Sub Form_Load()End Sub第
12、二部分1 已知在同一个笼子里有总数M只鸡和兔,鸡和兔的总脚数为N只,编程求出鸡和兔各有多少只.要求:程序运行后,在两个文本框中分别输入M和N的值,单击“计算”命令按钮,在两个标签框中分别输出鸡和兔的数量。程序运行界面如下图。提示:N2M的偶数。Private Sub Command1_Click()m = Val(Text1)n = Val(Text2)If n Mod 2 0 Then MsgBox (脚数必须为偶数”) Text2 = ” Text2。SetFocusElse y = n / 2 m If y 0 Then MsgBox (”脚数必须=只数的2倍,请重新输入”) Text2
13、 = ” Text2。SetFocus Else x = m - y Label3 = x Label4 = y End IfEnd IfEnd SubPrivate Sub Form_Load()End Sub2 若一个3位正整数中各位数字的立方和等于该数字本身,则该数称之为“水仙花数”。例如153是水仙花数,因为 153 = 1*1*1 + 555 + 3*3*3。编程求出100999之间所有的“水仙花数。要求:程序运行后,单击“查找”按钮,在窗体上显示找到的“水仙花数”。 程序运行界面如下图.Private Sub Command1_Click()Print ”水仙花数:”;For i
14、= 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 iEnd SubPrivate Sub Form_Load()End Sub3 编写程序,要求程序运行后,单击“开始按钮,随机产生20个学生的成绩(0100的整数),并在左边图片框中输出 (一行5个成绩),并在右边图片框中输出平均分和及格的人数,程序运行界面如下图。Private Sub Command1_Click()Dim a(1 To 20) A
15、s Integer, i%, n%Picture1。ClsPicture2。ClsFor 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 iPicture2.Print ”平均分:; Sum / 20Picture2.Print ; ”及格人数:”; nEnd SubPrivate Sub Picture2_Click()End Sub4 编写程序实现:程序运行时,单击窗
16、体则显示如下图所示的图案。Private Sub Form_Click()For i = 1 To 5 Print Tab(10 i); String(2 i - 1, *”)Next iFor i = 1 To 4 Print Tab(5 + i); String(9 2 * i, )Next iEnd Sub5 编程实现:在窗体中有一个文本框,一个计时器和两个命令按钮。其功能是:程序的运行时,单击“开始计数按钮,就开始计数,每间隔1秒,文本框中的数增加1;单击“停止计数按钮,则计数停止。Private Sub Command1_Click()Timer1。Enabled = TrueEnd
17、 SubPrivate Sub Command2_Click()Timer1.Enabled = FalseEnd SubPrivate Sub Form_Load()End SubPrivate Sub Timer1_Timer()Text1 = Val(Text1) + 1End Sub在属性窗口设置定时器的interval属性值为10006 以下程序运行界面如下图所示。其功能如下: 1) 单击”读数据”按钮(Command1),可将随机产生100个三位正整数存到数组a中; 2) 单击计算”按钮(Command2),则根据从组合框Combo1中选中的项目,对数组a中的数据计算平均值,并将计
18、算结果四舍五入取整后显示在文本框Text1中. 题目提供的程序代码不完整,请设计下图界面并录入代码,将程序中的 ? 改为正确的内容。注意:不能修改程序的其他部分。30题目提供的程序代码:Dim a(100) As IntegerPrivate Sub Command1 Click()Dim n As IntegerFor n = 1 To 100a(n)=Int(Rnd ? )Next nEnd SubPrivate Sub Command2 Click() Dim x& ,y , z& ,i , j , kFor i = 1 To 100If a(i) Mod ? Thenx = x + a
19、(i):j = j + 1Elsey = y + a(i) ?End IfNext kx = Int(x / j + 0。5):y = Int(y / k + 0.5)z = Int((x + y) / (j + k) + 0.5)Select Case Combo1.TextCase 所有偶数” Text1 = ?Case ”所有奇数” Text1 = ?Case ”所有数 Text1 = ?End SelectEnd SubDim a(1 To 100) As IntegerPrivate Sub Command1_Click()Dim n As IntegerFor n = 1 To 1
20、00 a(n) = Int(Rnd * 900 + 100)Next nEnd SubPrivate Sub Command2_Click()Dim x, y&, z&, i, j, kFor 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 IfNext ix = Int(x / j + 0。5): y = Int(y / k + 0.5)z = Int(x + y) / (j + k) + 0。5)Select Case Combo1。TextCase ”
21、所有偶数” Text1 = xCase 所有奇数 Text1 = yCase 所有数 Text1 = x + yEnd SelectEnd Sub在combo1的属性窗口设置list属性,添加列表项Private Sub Label1_Click()End Sub7 编写程序。要求:程序运行后,单击“开始按钮,则随机产生20个2位数输出到窗体上,每行10个数。同时对所产生的20个数从小到大排序,将排序后的数再次输出在窗体上.程序运行界面如下图。Private Sub Command1_Click()Dim a%(1 To 20), iPrint 排序前数据排列:”For i = 1 To 20
22、 a(i) = Int(Rnd * 90 + 10) Print a(i); If i Mod 10 = 0 Then PrintNext iFor 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 jNext iPrint 排序后数据排列:”For i = 1 To 20 Print a(i); If i Mod 10 = 0 Then PrintNext iEnd SubPrivate Sub Form_Load()End
23、Sub8 编写程序,程序的功能是:程序运行后,在文本框中输入一串字符, 单击标题为”统计的命令按钮,分别统计输入字符串中大写字母、小写字母以及其他字符的个数,并将统计结果分别在相应的标签框中显示。程序运行界面如下图.Private Sub Command1_Click()Dim i%, m, n%, zFor i = 1 To Len(Text1) If Asc(Mid(Text1, i, 1)) = 65 And Asc(Mid(Text1, i, 1)) = 97 And Asc(Mid(Text1, i, 1)) = 122 Then m = m + 1 Else z = z + 1 E
24、nd IfNext iLabel2 = nLabel4 = mLabel6 = zEnd SubPrivate Sub Form_Load()End Sub9 编写程序。程序功能是:程序运行后在文本框中输入一个正整数,单击“判断”按钮,在标签框中输出“该数是一个素数”或“该数不是一个素数”的信息。程序运行界面如下图.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 iLabel1 = n ”是素数”not
25、m:End SubPrivate Sub Form_Load()End Sub10 编写程序,程序的功能是:程序运行后,单击“开始按钮,在窗体上显示出10个小于100的随机正整数,单击“查找”按钮,则在窗体的下一行显示出这10个数中的最大的数以及最大数在此数列中的位置号.程序运行界面如下图.Dim a(1 To 10)Private Sub Command1_Click()Dim i%RandomizeFor i = 1 To 10 a(i) = Int(Rnd 101) Print a(i);Next iEnd SubPrivate Sub Command2_Click()Dim max,
26、imaxmax = a(1): imax = 1For i = 2 To 10 If a(i) max Then max = a(i): imax = iNext iPrintPrintPrint 最大数是:”; max; Spc(5); 位置号是:; imaxEnd SubPrivate Sub Form_Load()End Sub第三部分1 在窗体Form1上添加两个文本框,一个“转换”命令按钮和三个单选按钮(名称分别为Opt1、Opt2、Opt3,标题分别为“大小写转换”、“全部大写、“全部小写”).程序功能:在上方文本框Text1中输入一字符串,选中“大小写转换”,单击“转换”按钮后,
27、Text2中显示大小写相反的字符串;选中“全部大写”,单击转换按钮后,Text2中显示全部大写字符串,选中“全部小写”,单击转换按钮后,Text2中显示全部小写字符串 。程序运行界面如下图。 要求: 请按要求完成窗体界面设计 程序的部分代码已给出如下,但不完整。请录入下面代码,并将“?”处补充完整。Private Sub Command1_Click()Dim n As Integer, k As Integer, ch As String, a As Stringch = ”If Opt1。Value = True Then n = Len(?) For k = 1 To n a = Mid
28、$(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 kEnd IfIf Opt2。Value = True Then ch = UCase(Text1) If Opt3.Value = True Then ch = ?(Text1) Text2 = chEnd Sub答案Private Sub Command1_Click()Dim n As Integer, k As In
29、teger, ch As String, a As Stringch = 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 kEnd IfIf Opt2。Value = True Then ch = UCase(Text1) If Opt3。Value
30、 = True Then ch = LCase(Text1)Text2 = chEnd SubPrivate Sub Form_Load()End Sub2 编写程序,演示列表框控件的基本操作.在窗体上建立两个列表框,两个命令按钮。程序运行后,在左边列表框中选中所需要的项目,单击“添加”按钮,则把所选中的项目移到右边列表框中。如果单击“删除按钮,则删除左边列表框中选中的项目。程序运行时的窗体界面如图。Private Sub Command1_Click()List2.AddItem List1.TextList1。RemoveItem List1.ListIndexEnd SubPrivate
31、 Sub Command2_Click()List1.AddItem List2。TextList2.RemoveItem List2.ListIndexEnd SubPrivate Sub Form_Load()List1。AddItem 美的”List1.AddItem ”海尔List1.AddItem ”奥克斯”List1.AddItem 春兰List1。AddItem ”长虹”End Sub3 编程实现:单击“输出最大值”按钮,随机产生8个大于或等于10小于100的整数,显示在窗体的第一行,然后在窗体第二行显示其中的最大值。程序运行时的效果如图。Private Sub Command1
32、_Click()Dim a%(7), i, maxFor i = 0 To 7 a(i) = Int(Rnd * 90 + 10) Print a(i);Next imax = a(0)For i = 1 To 7 If a(i) max Then max = a(i)Next iPrintPrint maxEnd SubPrivate Sub Form_Load()End Sub4 在Form1的窗体上有一个名称为Text1的文本框和两个命令按钮,命令钮标题分别为“显示A”和“显示B”。要求程序运行后,如单击“显示A”命令按钮,则弹出对话框,输入要显示的个数,根据输入的数值在文本框中显示相应
33、数量”A”构成的字符串;如单击“显示B”命令按钮,也弹出对话框,输入要显示的个数,根据输入的数值在文本框中显示相应数量B”构成的字符串。程序运行时的窗体界面如图所示。 Private Sub Command1_Click()n = Val(InputBox(请输入显示个数))Text1 = String(n, ”A)End SubPrivate Sub Command2_Click()n = Val(InputBox(”请输入显示个数))Text1 = String(n, ”B”)End SubPrivate Sub Form_Load()End Sub5 已知十个数为:67, 45, 34,
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 iFor i = 0 To n 1 For j = 0 To n - 1 - i If a(j) max Then max = a(i)Next iPrint maxEnd Sub
35、Private Sub Form_Load()End Sub8 编程实现:在窗体的两个文本框中分别输入一个正整数,单击“求最大公约数按钮后,在窗体第一行显示它们的最大公约数。程序运行界面如下图所示。Private Sub Command1_Click()Dim m%, n%m = Val(Text1)n = Val(Text2)If n m Then t = n: n = m: m = tr = m Mod nDo While r 0 m = n n = r r = m Mod nLoopPrint Text1; ”和; Text2; 最大公约数是:; nEnd SubPrivate Sub
36、Form_Load()End Sub9 编程实现:在窗体的左上角有一个图像框,通过属性窗口任选一张图片装入到图像框的Picture属性中,每按一次“放大”按钮时图像放大10%,同理,每按一次“缩小”按钮时图像缩小10%,放大缩小时均需保持图像的纵横比不变,按“结束程序按钮则结束程序.程序运行界面如下图.Private Sub Command1_Click()Image1.Stretch = TrueImage1.Width = Image1。Width 1.1Image1。Height = Image1。Height * 1.1End SubPrivate Sub Command2_Click
37、()Image1。Stretch = TrueImage1。Width = Image1.Width 0。9Image1。Height = Image1。Height 0.9End SubPrivate Sub Command3_Click()EndEnd SubPrivate Sub Form_Load()End Sub10 编程实现:在窗体上建立一个文本框(内容如下图所示),另外建立菜单,一级菜单标题分别为“背景颜色”,子菜单标题分别为“白色、“红色、“绿色”、“蓝色”.程序运行时,如果单击“白色子菜单,则将文本框的背景色设置为白色;如果单击“红色”子菜单,则将文本框的背景色设置为红色;如
38、果单击“绿色”子菜单,则将文本框的背景色设置为绿色;如果单击“蓝色”子菜单,则将文本框的背景色设置为蓝色。程序运行界面如下图。 Private Sub blue_Click()Text1.BackColor = vbBlueEnd SubPrivate Sub green_Click()Text1.BackColor = vbGreenEnd SubPrivate Sub red_Click()Text1.BackColor = vbRedEnd SubPrivate Sub Text1_Change()End SubPrivate Sub white_Click()Text1。BackColor = vbWhiteEnd 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 Print a(i);