为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

考试必备之vb实例编程代码

2017-09-18 43页 doc 551KB 241阅读

用户头像

is_977556

暂无简介

举报
考试必备之vb实例编程代码考试必备之vb实例编程代码 第一题 新建工程,界面如下图,将窗体名称改为f1,标题属性为“我的第一个工程”, Text2允许多行,三个命令按钮名称分别为C1、C2、C3,单击C1 按钮将Text1 的字体改为黑体,Text2 的字体改为隶书。 单击C2 按钮将Text1 的文字颜色改为红色,Text2的背景颜色改为蓝色。单击C3 按钮结束程序运行。 Private Sub C1_Click() Text1.Font = "黑体" Text2.Font = "隶书" End Sub Private Sub C2_Click...
考试必备之vb实例编程代码
考试必备之vb实例编程代码 第一题 新建工程,界面如下图,将窗体名称改为f1,标题属性为“我的第一个工程”, Text2允许多行,三个命令按钮名称分别为C1、C2、C3,单击C1 按钮将Text1 的字体改为黑体,Text2 的字体改为隶书。 单击C2 按钮将Text1 的文字颜色改为红色,Text2的背景颜色改为蓝色。单击C3 按钮结束程序运行。 Private Sub C1_Click() Text1.Font = "黑体" Text2.Font = "隶书" End Sub Private Sub C2_Click() Text1.ForeColor = vbRed Text2.BackColor = vbBlue End Sub Private Sub C3_Click() End End Sub '注意,本题的窗体和三个按钮的名称需要修改,窗体的Caption需要修改; 'text2的Multiline属性需要修改 '文本框text属性建议清空 第二题 新建工程,界面如上图,运行时,鼠标在“改变窗体颜色”按钮上按下时使窗体背景色变为红色,鼠标抬起时使窗体背景色变为绿色。鼠标在窗体空白地方按下时Text1 的 为“在窗体上按下了鼠标”,鼠标抬起时使Text1 的内容为“在窗体上抬了鼠标”。 Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.BackColor = vbRed End Sub Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.BackColor = vbGreen End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.Text = "在窗体上按下了鼠标" End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.Text = "在窗体上抬起了鼠标" End Sub '注意:本题窗体的Caption属性需要修改 '文本框text属性建议清空 第三题 新建工程,界面如下图,运行时,在文本框Text1 中输入内容的同时,在文本框Text2、Text3 中显示相同的内容,但字体不同(字体自定)。 Private Sub Command1_Click() Text1.Text = "" End Sub Private Sub Command2_Click() End End Sub Private Sub Text1_Change() Text2.Text = Text1.Text Text3.Text = Text1.Text End Sub '文本框text属性建议清空 '文本框font属性修改时可以考虑修改字号、加粗etc,尽量强化视觉效果的差异 第四题 设计一个窗体,如上图所示。当单击某个命令按钮时,对文本框中的文字完成相应的设置。其中,每单击一次“增大”或“缩小”按钮将使文本框中的文字增大或缩小5 磅,“粗体”按钮将使文本框中的文字加粗,“斜体”按钮将使文本框中的文字倾斜,“下划线”按钮将使文本框中的文字加下划线,“删除线”按钮将使文本框中的文字加删除线。 Private Sub Command1_Click() Text1.FontSize = Text1.FontSize + 5 End Sub Private Sub Command2_Click() Text1.FontSize = Text1.FontSize - 5 End Sub Private Sub Command3_Click() Text1.FontBold = Not Text1.FontBold End Sub Private Sub Command4_Click() Text1.FontItalic = Not Text1.FontItalic End Sub Private Sub Command5_Click() Text1.FontUnderline = Not Text1.FontUnderline End Sub Private Sub Command6_Click() Text1.FontStrikethru = Not Text1.FontStrikethru End Sub 第五题 设计一个窗体,如下图所示。程序中将π定义成符号常量(用Const ),运行时,输入底面半径r 和圆柱高h,然后单击“计算”命令按钮,在相应文本框中显示计算结果。运算结果为只读。 Const pi = 3.1415926 Dim r!, h! Private Sub Command1_Click() h = Text1.Text r = Text2.Text Text3.Text = pi * r * r Text4.Text = 2 * pi * r Text5.Text = pi * r * r * h End Sub '左侧两个文本框从上到下分别是text1、text2; '右侧三个文本框从上到下分别是text3、text4、text5; '注意窗体、按钮、标签等控件的Caption属性的设置; '椭圆和线条用Shape控件和Line控件实现; '画图时可以考虑借助窗体表面点阵; '文本框text属性建议留空; '文本框“只读”设置对应Locked属性,改为True; 第六题 设计界面如上图所示。单击“出题”按钮,产生任意两个【1,100】之间的随机整数于Text1、 Text2 中,单击“计算”按钮,求两个数的和。运算结果为只读。 Dim a, b Private Sub Command1_Click() Randomize a = Fix(1 + 100 * Rnd()) b = Fix(1 + 100 * Rnd()) Text1.Text = a Text2.Text = b End Sub Private Sub Command2_Click() Text3.Text = a + b End Sub 'text3的locked属性置为true,以此设置只读; '文本框text属性建议留空 '记得使用Randomize语句进行随机数生成的初始化操作; '熟练掌握指定范围内随机整数的生成方法,算是个笔试的热门考点; '注意Caption的设置,对此后续题目将不再赘述; 第七题 设计一个数字钟表程序,界面如图所示。运行时单击窗体,显示当前的年月日星期及时间。 Private Sub Form_Click() Label2.Caption = Year(Date) Label4.Caption = Month(Date) Label6.Caption = Day(Date) Label9.Caption = Weekday(Date) Label11.Caption = Time End Sub '标签文字竖排的方法:输入汉字,缩减标签的宽度到只够显示一个汉字; '所有标签建议放大字号,并设置“Alignment”属性为“3-Center”; '标签控件出现边框的方法:设置“BorderStyle”属性为“1-Fix Single”; 'date函数和time函数后的括弧可以要,但换行后会被计算机自行省略; 第八题 设计一个函数程序,界面如图所示。程序运行时,在文本框中输入任意数值,单击相应按钮标签中显示结果。文本框始终处于选中状态。 Dim x Private Sub Command1_Click() Label2.Caption = "Abs函数的计算结果" Label3.Caption = Abs(x) Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Command2_Click() Label2.Caption = "Sqr函数的计算结果" Label3.Caption = Sqr(x) Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Command3_Click() Label2.Caption = "Fix函数的计算结果" Label3.Caption = Fix(x) Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Command4_Click() Label2.Caption = "Int函数的计算结果" Label3.Caption = Int(x) Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Command5_Click() Label2.Caption = "Sgn函数的计算结果" Label3.Caption = Sgn(x) Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text1_LostFocus() x = Text1.Text If Not IsNumeric(x) Then Text1.SetFocus Text1.Text = "" End If End Sub '用于显示结果的标签需修改BorderStyle属性; '此外建议修改Alignment属性调节对齐方式; '“Text1_LostFocus”事件中的代码是典型的限定数值型输入的语句,建议记忆; '所有限定数值型数据的输入均可用此法处理; 'if语句部分如果觉得接受起来困难的话可以考虑略去; '命令按钮Click事件中的后三行代码,是选择文本框中全部内容的定式句法,建议记忆 第九题 请按图设一个大小能自动调整以适应其显示图片的尺寸的图片框(Picture1)以及“显示”和“清空”两个按钮(Command1、Command2)。运行时,单击“显示”,在图片框中显示自选图片;单击“清空”则清空图片框。 Private Sub Command1_Click() Picture1.Picture = LoadPicture(App.Path & "\aaa.jpg") End Sub Private Sub Command2_Click() Picture1.Picture = LoadPicture("") End Sub '图片框“Autosize”属性需要设置为True; '双引号内的\aaa.jpg根据实际所加图片名称自行调整; '这是调用图片的基本结构; 第十题 设计一个窗体Forml,界面如上图所示。编写适当的事件过程,程序运行后在第一个文本框中输入圆的半径,单击“计算”按钮,分别在第二个和第三个文本框中显示圆的面积和周长。 Const pi = 3.1415926 Private Sub Command1_Click() Dim x! x = Text1.Text Text2.Text = x ^ 2 * pi '上面这句也可以这么写: ' text2.text = x * x * pi Text3.Text = x * 2 * pi End Sub 第十一题 设计一个计算购书价钱的程序,界面如下图所示。为了提高运行速度,设置Tab 键序,使得输入完单价后,焦点定位到输入数量文本框中。单击“计算总价”或用访问键,算出总价。总价文本框要求为只读属性。完成相应功能。 Private Sub Command1_Click() x = Text1.Text x = Val(x) y = Text2.Text y = Fix(Val(y)) Text3.Text = x * y End Sub Private Sub Command2_Click() End End Sub Private Sub Text1_keyPress(KeyAscii As Integer) If KeyAscii = 13 Then SendKeys "{tab}" End If End Sub '本题的难点在于部分不常见的方法调用及属性设置; '设置访问键的方法:修改按键的Caption属性,在需要设置成访问键的字母前加&; '例如题目所示的退出按钮,Caption需修改为退出(&X); 'Tab键序调节方法是修改对应控件的“Tab”属性; '就本题而言,只需确保用于输入数量的Text2对应“Tab”属性比输入单价的Text1的“Tab”属性大1; '显示总价的Text3需要修改“Locked”属性; 第十二题 设计一工程,界面如上图所示。程序运行,单击“计算”,求出对应角度的三角函数的绝对值于文本框Text2 中,同时要求选中文本框Text1 内容,以便继续输入。 Private Sub Command1_Click() Const pi = 3.1415926 Dim x!, y!, n% n = 15 x = Text1.Text y = x * (2 * pi) / 360 Text2.Text = Text2.Text & Format(x, "@@@") & Space(n) & Format(Sin(y), "0.000") & Space(n) & Format(Cos(y), "0.000") & vbCrLf Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub '追加垂直滚动条的方法是,修改文本框的Multiline属性为true,修改文本框的ScroolBar属性为2 - Vertical '可根据需要自行调整n值和相关标签的间距,使得结果视觉效果尽量接近样例图; 第十三题 设计一工程,在文本框中输入一整数,单击“判断”按钮,判断能否同时被3、5、7整除,若能用MsgBox 函数显示“能同时被3、5、7 整除”,否则显示“不能整除”。 Private Sub Command1_Click() x = Text1.Text x = Fix(Val(x)) If x Mod 3 = 0 And x Mod 5 = 0 And x Mod 7 = 0 Then MsgBox ("能同时被3、5、7整除") Else MsgBox ("不能整除") End If End Sub 第十四题 输入一个学生的学号和考试成绩,然后按如图格式在图片框中输出学号、考试成绩及评语,评语:90~100 优秀;80~89 良好;70~79 中等;60~69 及格;0~59 不及格。 Private Sub Command1_Click() x = Text1.Text y = Text2.Text y = Fix(Val(y)) z = "" Select Case y Case 0 To 59 z = "不及格" Case 60 To 69 z = " 及格" Case 70 To 79 z = "中等" Case 80 To 89 z = "良好" Case 90 To 100 z = "优秀" End Select Picture1.Print "学号:" & x Picture1.Print "分数:" & y & " " & z End Sub 第十五题 用块结构条件语句实现。InputBox 函数输入三个数,找出并在窗体中输出三个数中的最大数及最小数。 Private Sub Form_Click() Dim x!, y!, z! x = InputBox("请输入第一个数") y = InputBox("请输入第二个数") z = InputBox("请输入第三个数") If x >= y And y >= z Then Print "最大数为" & x Print "最小数为" & z ElseIf x >= z And z >= y Then Print "最大数为" & x Print "最小数为" & y ElseIf y >= x And x >= z Then Print "最大数为" & y Print "最小数为" & z ElseIf y >= z And z >= x Then Print "最大数为" & y Print "最小数为" & x ElseIf z >= x And x >= y Then Print "最大数为" & z Print "最小数为" & x ElseIf z >= y And y >= x Then Print "最大数为" & z Print "最小数为" & x End If End Sub '由于题目明确要求使用块结构条件语句,所以不建议使用排序等其他方法; 第十六题 设计一个程序,用户界面如下图所示。程序运行后,单击Command1 按钮,求出最大、最小数。 Private Sub Command1_Click() Dim a!, b!, c!, max!, min! a = Text1.Text b = Text2.Text c = Text3.Text max = a min = a If b > max Then max = b End If If b < min Then min = b End If If c > max Then max = c End If If c < min Then min = c End If Text4.Text = max Text5.Text = min End Sub '仅取最大值、最小值,可用这一结构实现; 第十七题 利用输入框输入三个数,单击窗体后进行降序排序并求出其中最大值、最小值,结果打印输入在窗体上。运行结果如图所示。 Private Sub Form_Click() Cls '用于清除之前窗体上显示的内容; Dim a!, b!, c!, max!, min! a = InputBox("请输入第一个数") b = InputBox("请输入第二个数") c = InputBox("请输入第三个数") max = a min = a If b > max Then max = b End If If b < min Then min = b End If If c > max Then max = c End If If c < min Then min = c End If Print "输入的数据为:" Print a, b, c Print '用于空出一行达成样例图的格式效果; Print "降序排序后:" Print max, a + b + c - max - min, min Print '用于空出一行达成样例图的格式效果; Print "其中最大值为:", max Print "其中最小值为:", min End Sub 第十八题 界面如上图(右侧),用Select Case 语句实现。文本框输入任意一个整数x,根据其除以3 的余数判断并输出结果。 如果余数为0,则消息框输出 str(x) & “整除3” 如果余数为1,则消息框输出 str(x) & “除以3 余1” 如果余数为1,则消息框输出 str(x) & “除以3 余2” Private Sub Command1_Click() Dim x%, y% x = Text1.Text y = x Mod 3 Select Case y Case 0 MsgBox (Str(x) & "整除于3") Case 1 MsgBox (Str(x) & "除以3余1") Case 2 MsgBox (Str(x) & "除以3余2") End Select End Sub 第十九题 界面如下图所示。编写适当的事件过程,程序运行后在三个文本框中分别输入三角形的边长值,单击“判断并计算”按钮,判断它们是否能组成三角形,若能组成三角形在Text4 中显示三角形的面积 ,否则在Text4 中显示“FALSE”。 Private Sub Command1_Click() Dim a!, b!, c!, L!, s! a = Text1.Text b = Text2.Text c = Text3.Text L = (a + b + c) / 2 If a < L And b < L And c < L Then s = Sqr(L * (L - a) * (L - b) * (L - c)) Text4.Text = Format(s, ".00") '借助format函数控制小数位数; Else Text4.Text = "FALSE" End If End Sub 第二十题 推荐 设计程序,输出100-200 之间不能被7 整除的数 Private Sub Command1_Click() For i = 100 To 200 Step 1 If Not (i Mod 7 = 0) Then List1.AddItem i End If Next i End Sub 文本框版本 Private Sub Command1_Click() For i = 100 To 200 Step 1 If Not (i Mod 7 = 0) Then Text1.Text = Text1.Text & Str(i) & vbCrLf End If Next i End Sub '注意文本框text属性留空; 第二十一题 设计如图所示界面,单击两个命令按钮后分别在文本框中输出N 的阶乘和(N+2)的阶乘的运算结果。 Private Sub Command1_Click() Dim x% x = Text1.Text s = 1 For i = 1 To x Step 1 s = s * i Next i Text2.Text = s End Sub 2_Click() Private Sub Command Dim x% x = Text1.Text s = 1 For i = 1 To x + 2 Step 1 s = s * i Next i Text3.Text = s End Sub '累乘运算的标准结构; 第二十二题 将斐波那契数列的前20 项输出到文本框中,斐波那契数列如下:1,1,2,3,5,8,13,„。每行输出2 项,界面见上图(右侧)。 Private Sub Command1_Click() Text1.Text = "" Dim a%, b%, c% a = 1 b = 1 Text1.Text = Text1.Text & Str(a) Text1.Text = Text1.Text & Str(b) Text1.Text = Text1.Text & vbCrLf '每两个元素换一行 For i = 1 To 18 Step 1 c = a + b Text1.Text = Text1.Text & Str(c) If i Mod 2 = 0 Then Text1.Text = Text1.Text & vbCrLf '每两个元素换一行 End If a = b b = c Next i End Sub 第二十三题 新建一个工程,在窗体上画一个命令按钮,单击命令按钮在图片框上显示如下图所示的字母图形 Private Sub Command1_Click() 避免多次运行的结果相互干扰 Picture1.Cls '建议保留此行代码, x = "ABCDEF" For i = 1 To 6 Step 1 Picture1.Print Space(i + 2) & Left(x, 7 - i) Next i End Sub Private Sub Command1_Click() Picture1.Cls '建议保留此行代码,避免多次运行的结果相互干扰 x = "ABCDEF" For i = 1 To 6 Step 1 Picture1.Print Space(8 - i) & Left(x, i) Next i End Sub 第二十四题 画四个命令按钮,单击各按钮在图片框上显示如下不同的数据图形。 Const x = "1 2 3 4 5 6" '数字间有两个空格; Const y = "6 5 4 3 2 1" '数字间有两个空格; Private Sub Command1_Click() Picture1.Cls '图片框的初始化,不可省略; For i = 1 To 6 Step 1 Picture1.Print Right(y, i * 3 - 2) Next i End Sub Private Sub Command2_Click() Picture1.Cls '图片框的初始化,不可省略; For i = 1 To 6 Step 1 Picture1.Print Space(i * 3 - 3) & Left(x, 19 - i * 3) Next i End Sub Private Sub Command3_Click() Picture1.Cls '图片框的初始化,不可省略; For i = 1 To 6 Step 1 Picture1.Print Space(19 - i * 3) & Right(x, i * 3 - 2) Next i End Sub Private Sub Command4_Click() Picture1.Cls '图片框的初始化,不可省略; For i = 1 To 6 Step 1 Picture1.Print Right(y, 19 - i * 3) Next i End Sub 第二十五题 在窗体上画两个命令按钮分别求11+22+33+44+„„+nn 小于100000 最大值和的值并将结果输出到Label1 和Label2 中。 Private Sub Command1_Click() Dim i, x, s '本题由于所涉及运算数据较大,不可将求和项S设置为整型数,否则会出现溢出错误; i = 1 x = 0 s = 0 While s < 100000 x = Str(i) & Str(i) x = Val(x) s = s + x i = i + 1 Wend Label1.Caption = Str(s - x) End Sub Private Sub Command2_Click() Dim s, j s = 0 j = 1 For i = 1 To 20 Step 1 j = j * i s = s + j Next i Label2.Caption = Str(s) End Sub 第二十六题 在窗体上画两个文本框输入a 和n 的值(a 和n 均为一位数字),单击命令按钮输出Sn=a+aa+aaa+aaaa+„+aa„a(最后一项n 个a,例如3+33+333+3333)的值于标签中。 Private Sub Command1_Click() Dim x, y, a%, b%, c%, s! x = Text1.Text x = Val(x) y = Text2.Text y = Val(y) If x = 0 Or y = 0 Then '由于已经限定是1位数,只需看Val()函数的处理结果是否为0即可判断输入是否为数字; Label1.Caption = "输入数据有误~" Else a = x b = y c = 0 For i = 1 To b Step 1 c = c * 10 + a '实现单个数字的指定次数的重复; s = s + c Next i Label1.Caption = Str(s) End If End Sub '有兴趣可以尝试用第08套题中所用的限定输入数据必须为数值的方法,但更为复杂; '信心不足者不建议尝试; 27(单击命令按钮将3 到200 之间的所有奇数显示在列表框中。 Private Sub Command1_Click() For i = 3 To 200 Step 1 If i Mod 2 = 1 Then List1.AddItem i End If Next i End Sub 28(在窗体上画一文本框用于输入n 值,画两个命令按钮分别求下述表达式的值 S1= 3×5×7ׄ×(2n-1)并将S1、S2 的结果输出到图片框。 S2=1× Private Sub Command1_Click() Picture1.Cls '图片框的初始化,建议保留; Dim n, c, s, s1, s2 n = Text1.Text n = Fix(Val(n)) s1 = 0 s2 = 1 s = 1 '用s来记录求S1过程中各累加项符号的变化 For i = 1 To n Step 1 c = (2 * i - 1) s1 = s1 + 4 * s / c s2 = s2 * c s = s * (-1) '符号逐项变化; Next i Picture1.Print "s1 = ", s1 Picture1.Print "s2 = ", s2 End Sub 29(在文本框T1 中打印100~999 之间的所有水仙花数。(该数为各位数字的立方和。例如:153=1 3+5 3+3 3 ) Private Sub Command1_Click() For i = 100 To 999 a = i Mod 10 '提取个位的方法 b = Fix(i / 10) Mod 10 '提取十位的方法 c = Fix(i / 100) Mod 10 '提取百位的方法 If i = a ^ 3 + b ^ 3 + c ^ 3 Then 'a的立方根据需要可以写作a*a*a List1.AddItem i End If Next i End Sub 30(有一数列,它的头2 个数为0、 1,以后的每个数都是其前2 个数之和。编程在文本框T1 中输出所有这些数列,直到第30 个数或最后一项等于1000 为止,同时在另一文本框中输出它们的和。 Private Sub Command1_Click() Dim a%, b%, c% a = 0 Text1.Text = Str(a) & vbCrLf b = 1 Text1.Text = Text1.Text & Str(b) & vbCrLf s = 1 '相当于先加入了数列的前两项; For i = 3 To 30 Step 1 '前两项已经处理过了,所以只需要考虑后28项; c = a + b If c < 1000 Then s = s + c Text1.Text = Text1.Text & Str(c) & vbCrLf a = b b = c Else Exit For End If Next i Text2.Text = s End Sub 31.设计一个素数的判定器,界面如图所示。程序运行后,单击“生成数”按钮,则产生一个[0,100]之间的整数,并显示在Text1 中;单击“判定数”按钮,则对以上产生的整数进行判定,如果是素数则在Text2 中显示“是素数”,否则显示“不是素数”。 Private Sub Command1_Click() Randomize n = Fix(101 * Rnd) Text1.Text = n End Sub Private Sub Command2_Click() ysgs = 0 '用统计约数个数是否为2来判断是否为素数 For i = 1 To n Step 1 If n Mod i = 0 Then ysgs = ysgs + 1 End If Next i If ysgs = 2 Then Text2.Text = "是素数" Else Text2.Text = "不是素数" End If End Sub '可以作为判定是否为素数的定式思维加以记忆; 32.用带垂直滚动条的文本框输出100-200 间所有的素数。 Private Sub Command1_Click() For j = 100 To 200 Step 1 ysgs = 0 '用统计约数个数是否为2来判断是否为素数 For i = 1 To j Step 1 If j Mod i = 0 Then ysgs = ysgs + 1 End If Next i If ysgs = 2 Then Text1.Text = Text1.Text & Str(j) & vbCrLf End If Next j End Sub '文本框的Multiline属性和ScrollBar属性需要设置; '此过程可以作为“范围内素数的判定”的定式思维加以记忆; 33(设计如下图所示界面,单击时输出相应结果,2~N 之间素数在列表框中输出,要求判断素数用过程实现。 Private Sub Command1_Click() Dim s1 As Boolean '用于接收pdss过程判定素数的返回结果; x = Text1.Text x = Fix(Val(x)) Call pdss(x, s1) If s1 = True Then Text2.Text = "是素数" Else Text2.Text = "不是素数" End If End Sub Private Sub Command2_Click() Dim s2 As Boolean '用于接收pdss过程判定素数的返回结果; y = Text1.Text y = Fix(Val(y)) For i = 1 To y Step 1 Call pdss(i, s2) '注意范围内判断和指定数判断的区别; If s2 = True Then Text3.Text = Text3.Text & Str(i) & vbCrLf End If Next i End Sub Public Sub pdss(a, b) ysgs = 0 '用统计约数个数是否为2来判断是否为素数 For i = 1 To a Step 1 If a Mod i = 0 Then ysgs = ysgs + 1 End If Next i If ysgs = 2 Then b = True Else b = False End If End Sub 34(设计界面如图所示,单击个按钮时输入行数,按此行数分别在窗体上输出平行四边形、正三角形、倒三角形、双三角形。 Public n% Private Sub Command1_Click() n = InputBox("请输入行数") Form1.Hide Form2.Show Form2.Cls For i = 1 To n Step 1 Form2.Print Space(5 + i) & String(n, "*") Next i End Sub Private Sub Command2_Click() n = InputBox("请输入行数") Form1.Hide Form2.Show Form2.Cls For i = 1 To n Step 1 Form2.Print Space(n + 5 - i) & String(2 * i - 1, "*") Next i End Sub Private Sub Command3_Click() n = InputBox("请输入行数") Form1.Hide Form2.Show Form2.Cls For i = 1 To n Step 1 Form2.Print Space(5 + i) & String(2 * n + 1 - 2 * i, "*") Next i End Sub Private Sub Command4_Click() n = InputBox("请输入行数") Form1.Hide Form2.Show Form2.Cls For i = 1 To n Step 1 Form2.Print Space(5 + i) & String(2 * n + 1 - 2 * i, "*"); Form2.Print Space(2) & String(2 * i - 1, "*") Next i End Sub '典型的多窗体工程文件,窗体的切换及相关方法调用部分可多加揣摩; 35.使用While„Wend 循环求2×4×6×8ׄ(2n)大于100000 的最小值,结果输出到文本框中。 Private Sub Command1_Click() s = 1 n = 2 While s < 100000 s = s * n n = n + 2 Wend Text1.Text = s End Sub 36.利用公式 求π的值,精确到小数点后6 位。运行界面如图。 Private Sub Command1_Click() a = 1 '分母的起始值; s = 1 '符号的起始值; p = 0 'π/4的起始值; While a < 1000000 '对于“保留小数点后六位”这一限定如何理解尚无定论,界限值可自己指定; p = p + s / a a = a + 2 s = s * (-1) Wend Text1.Text = Format(4 * p, "#.######") End Sub 37.求任意两个[1,100]之间的正整数的最大公约数和最小公倍数,要求两个正整数由随机函数产生。界面如图所示。 、Dim x%, y% Private Sub Command1_Click() Randomize x = Fix(1 + 100 * Rnd()) y = Fix(1 + 100 * Rnd()) Text1.Text = x Text2.Text = y Text3.Text = "" '此句可省; Text4.Text = "" '此句可省; End Sub Private Sub Command2_Click() Dim a%, b% If y > x Then '此if语句主要为确保a>=b a = x b = y Mod x Else a = y b = x Mod y End If While Not b = 0 t = a a = b b = t Mod b Wend Text3.Text = a Text4.Text = x * y / a End Sub '辗转相除法得最大公约数的典型结构,建议记忆; Dim x%, y% Private Sub Command1_Click() Randomize x = Fix(1 + 100 * Rnd()) y = Fix(1 + 100 * Rnd()) Text1.Text = x Text2.Text = y Text3.Text = "" '此句可省; Text4.Text = "" '此句可省; End Sub Private Sub Command2_Click() Text3.Text = f1(x, y) Text4.Text = x * y / f1(x, y) End Sub 第二种做法 Public Function f1(ByVal a, ByVal b) Dim c If a < b Then f1 = f1(b, a) Else If a Mod b = 0 Then f1 = b Else c = a Mod b f1 = f1(b, c) End If End If End Function '借助函数迭代实现,推荐使用此种方法; 38(界面如下图所示。分别在Textl 和Text2 中输入两个自然数x、y,用展转相除的方法求自然数x,y 的最大公约数和最小公倍数。在窗体上显示结果。 Dim x%, y% Private Sub Command1_Click() x = Text1.Text y = Text2.Text Label3.Caption = f1(x, y) End Sub Private Sub Command2_Click() x = Text1.Text y = Text2.Text Label4.Caption = x * y / f1(x, y) End Sub Public Function f1(ByVal a, ByVal b) Dim c If a < b Then f1 = f1(b, a) Else If a Mod b = 0 Then f1 = b Else c = a Mod b f1 = f1(b, c) End If End If End Function '借助函数迭代实现; 39(随机产生10 个两位正整数,求出最大值、最小值、和、平均值,并显示这10 个数的运行结果。程序运行界面如图所示。 Private Sub Command1_Click() Picture1.Cls Dim a%, s1$, s2%, max%, min% 's1用于以字串形式存储十个随机数,s2用于求和; Randomize a = 10 + Fix(90 * Rnd()) s1 = Str(a) '第一个数写入s1字串中; s2 = a '第一个数加入求和项s2中; max = a '暂时视第一项为最大值; min = a '暂时视第一项为最小值; For i = 2 To 10 Step 1 a = 10 + Fix(90 * Rnd()) s1 = s1 & " " & Str(a) '顺次将后续各数写入s1字串中; s2 = s2 + a '顺次将后续各数加入求和项s2中; If a > max Then '新数如大于原最大值,用新数作为最大值; max = a End If If a < min Then '新数如小于原最小值,用新数作为最小值; min = a End If Next i Picture1.Print s1 Picture1.Print "最大值是:" & Str(max) Picture1.Print "最小值是:" & Str(min) Picture1.Print "和是:" & Str(s2) Picture1.Print "平均值是:" & Str(s2 / 10) End Sub '求最大值,求最小值,求和并求平均值,以上三种操作彼此独立互不干扰; '由于未涉及排序,所以此题可以不借助数组完成; 随机产生10 个[30,99]之间的正整数,并输出到图片框中,然后按从小到大递增的顺序排列,并将排序结果显示出来。如图所示。 40. Private Sub Command1_Click() Picture1.Cls Dim a(10) As Integer For i = 1 To 10 Randomize a(i) = Int(Rnd * 70 + 30) Picture1.Print a(i); Next Picture1.Print Picture1.Print "由小到大排序的结果为:" For i = 1 To 9 '冒泡排序的定式程序; For j = i + 1 To 10 If a(i) > a(j) Then t = a(i): a(i) = a(j): a(j) = t Next j, i '冒泡排序结束; For i = 1 To 10 Picture1.Print a(i); Next End Sub '排序部分的双重循环语句也可以用如下方式书写 ' For i = 1 To 9 '冒泡排序的定式程序; ' For j = i + 1 To 10 ' If a(i) > a(j) Then ' t = a(i) ' a(i) = a(j) ' a(j) = t ' End If ' Next j ' Next i '冒泡排序结束; '推荐尽量将程序代码展开成多行,提高程序可读性; 41(生成10 个两位数的随机整数, 放入A 数组, 单击显示按钮全部显示在文本框Text1中,单击排序按钮由小到大排序,显示在文本框Text2 中。 Dim a(10) Private Sub Command1_Click() Text1.Text = "" For i = 1 To 10 Randomize a(i) = Fix(Rnd * 90 + 10) Text1.Text = Text1.Text & Str(a(i)) Next End Sub Private Sub Command2_Click() Text2.Text = "" For i = 1 To 9 '冒泡排序的定式结构; For j = i + 1 To 10 If a(i) > a(j) Then t = a(i) a(i) = a(j) a(j) = t End If Next j Next i '冒泡排序结束 For i = 1 To 10 Text2.Text = Text2.Text & Str(a(i)) Next End Sub 42(产生一个4×4 的矩阵,显示在文本框TEXT1 中,矩阵中的元素为随机产生的二位正整数。要求在文本框TEXT2 中输出矩阵对角线元素的和。 Private Sub Command1_Click() Dim a(4, 4) Text1 = "" For i = 1 To 4 '循环嵌套是二维数组赋值的定式结构; For j = 1 To 4 Randomize a(i, j) = Int(Rnd * 90 + 10) Text1.Text = Text1.Text & Str(a(i, j)) & " " Next j Text1.Text = Text1.Text + vbCrLf Next i For i = 1 To 4 Sum = Sum + a(i, i) '累加左上~右下方向对角线; Sum = Sum + a(i, 5 - i) '累加右上~左下方向对角线,根据样例图来看此行代码似乎应该省去; Next i Text2.Text = Str(Sum) End Sub 43.编写一个程序,输出一个5*5 的矩阵,该矩阵主、负对角线上元素均为1,其余元素均为2,执行结果如图所示。 Private Sub Form_Click() Dim a(5, 5) For i = 1 To 5 For j = 1 To 5 If i = j Or j = 6 - i Then a(i, j) = 1 Else a(i, j) = 2 End If Next j, i For i = 1 To 5 '这是二维数组显示的标准定式结构,建议记忆; For j = 1 To 5 Print a(i, j); Next j Print Next i End Sub 44(从文本框输入整数n,单击“打印杨辉三角”按钮显示具有n 行的杨辉三角形。每项数据占6 位长度,程序运行界面如图所示。 Private Sub Command1_Click() Picture1.Cls Dim n%, a() '先不确定数组上下标; n = Text1.Text ReDim a(0 To 2 * n) '以变量定义数组上标必须采用这种形式; a(n) = 1 Picture1.Print Format(a(n), "@@@@@@") '先画出第一行 For i = 2 To n Step 1 For j = n - (i - 1) To n + (i - 1) Step 1 '利用奇偶交错来实现杨辉三角剩余各行的绘制; If (j Mod 2) = ((n + (i - 1)) Mod 2) Then a(j) = a(j - 1) + a(j + 1) Picture1.Print Format(a(j), "@@@@@@"); End If Next j Picture1.Print Next i End Sub '本题结构较为复杂,信心不足者可以考虑部分放弃; 45.生成两个0-10 之间的随机整数矩阵,分别放入两个图片框内,求两个矩阵之和放入第三个图片框内。界面如图所示。 Dim a(4, 4), b(4, 4), c(4, 4) Private Sub Command1_Click() Randomize Picture1.Cls Picture2.Cls Picture3.Cls For i = 1 To 4 '三个矩阵的赋值显示可以借助一个二重循环进行; For j = 1 To 4 '效果同拆分成三个二重循环分别进行是一致的; a(i, j) = Fix(Rnd * 11) b(i, j) = Fix(Rnd * 11) c(i, j) = a(i, j) + b(i, j) Picture1.Print a(i, j); Picture2.Print b(i, j); Picture3.Print c(i, j); Next j Picture1.Print Picture2.Print Picture3.Print Next i End Sub Private Sub Command2_Click() End End Sub 46(利用控件数组Text1、Text2 将Text1 中随机产生的数,交换到Text2 中,界面如下图所示。 Private Sub Command1_Click() Randomize For i = 0 To 4 Step 1 Text1(i).Text = 10 + Fix(90 * Rnd()) '如果第一列数要求自行输入,则可去除此行; Text2(4 - i).Text = Text1(i).Text Next i End Sub '控件数组的加入方法:选中一个控件,复制后,粘贴在窗体内,弹出对话框时点“是”即可; 47(建立一个比赛评分程序。在窗体建立一个名为TEXT1 的文本框数组和一个名为T2 的文本框及名名为C1 的命令按钮。运行时在文本框数组中输入7 个分数,求最后的结果。 Private Sub C1_Click() Sum = 0 For i = 0 To 6 Sum = Sum + Val(Text1(i).Text) Next i T2.Text = Str(Sum / 7) End Sub '本题对空间名称做出了要求; '本题的最后得分是以取平均值的方式计算的; 48(设计如图所示界面,编写适当的事件过程,控制Label1 控件中字体大小和字体格式。 Private Sub Check1_Click() Label1.FontItalic = Check1.Value End Sub Private Sub Check2_Click() Label1.FontUnderline = Check1.Value End Sub Private Sub Option1_Click() Label1.FontSize = 10 End Sub Private Sub Option2_Click() Label1.FontSize = 15 End Sub Private Sub Option3_Click() Label1.FontSize = 20 End Sub '单选按钮、复选框和框架的提示文字均对应“Caption”属性 '控件加入框架中的方法:选中控件,剪切,选中框架,粘贴; '注意领会选项按钮和复选框的区别; 49(设计如图所示界面,在窗体画一个图片框,在图片框中放四个单选按钮;用Shape控件画一个红色长方形运行时,单击相应单选按钮,改变图形的形状。 Private Sub Command1_Click() Shape1.Shape = 3 End Sub Private Sub Command2_Click() Shape1.Shape = 1 End Sub Private Sub Command3_Click() Shape1.Shape = 0 End Sub Private Sub Command4_Click() Shape1.Shape = 2 End Sub '调节形状控件Shape1的“BackColor”属性时,选择“调色板”后可以方便的选到红色; '形状控件Shape1的“BackStyle”属性需改为“1-Opaque”,否则颜色无法显示; '如程序中所示,形状控件Shape1的“Shape”属性即可改变形状; 50(设计一个窗体Forml,编写适当的事件过程。控制Text1 中背景色和字体格式。(字体默认为宋体,内容为“欢迎学习VB”)程序运行界面如图所示。 Private Sub Check1_Click() Text1.FontBold = Check1.Value '复选框是否勾选,通过Value属性反映; End Sub Private Sub Check2_Click() Text1.FontItalic = Check2.Value '不考虑灰化状态时,可以将复选框勾选与否视为一逻辑型数据; End Sub Private Sub Check3_Click() Text1.FontUnderline = Check3.Value End Sub Private Sub Form_Load() End Sub Private Sub Option1_Click() Text1.BackColor = vbRed End Sub Private Sub Option2_Click() Text1.BackColor = vbYellow End Sub Private Sub Option3_Click() Text1.BackColor = vbBlue End Sub 51(在窗体放一个文本框和四个组合框,界面如下图所示,组合框1 和组合框2 的颜色包括:白、黑、红、绿、蓝、黄。组合框3 的对齐方式有左、中、右。组合框4 字体大小有10、12、14、18、20、22 磅,试完成相应功能。 Private Sub Combo1_Click() x = Combo1.Text Select Case x Case "黑" Text1.ForeColor = vbBlack Case "白" Text1.ForeColor = vbWhite Case "红" Text1.ForeColor = vbRed Case "绿" Text1.ForeColor = vbGreen Case "蓝" Text1.ForeColor = vbBlue Case "黄" Text1.ForeColor = vbYellow End Select End Sub Private Sub Combo2_Click() x = Combo2.Text Select Case x Case "黑" Text1.BackColor = vbBlack Case "白" Text1.BackColor = vbWhite Case "红" Text1.BackColor = vbRed Case "绿" Text1.BackColor = vbGreen Case "蓝" Text1.BackColor = vbBlue Case "黄" Text1.BackColor = vbYellow End Select End Sub Private Sub Combo3_Click() x = Combo3.Text Select Case x Case "左" Text1.Alignment = 0 Case "中" Text1.Alignment = 2 Case "右" Text1.Alignment = 1 End Select End Sub Private Sub Combo4_Click() x = Combo4.Text Select Case x Case "10" Text1.FontSize = 10 Case "12" Text1.FontSize = 12 Case "14" Text1.FontSize = 14 Case "18" Text1.FontSize = 18 Case "20" Text1.FontSize = 20 Case "22" Text1.FontSize = 22 End Select End Sub '组合框的典型应用; '组合框style设置为下拉列表框时,默认的“Change”事件不会被触发,代码必须写在“Click”事件中; '此类下拉列表框一般对应多向分支结构,非常适合用Select Case结构处理; 52(利用两个列表框控件,设计选项移动窗体如上图。编写适当的事件过程实现功能要求。 Private Sub Command1_Click() n = List1.ListCount 'ListCount属性表示列表框中的元素个数; For i = n - 1 To 0 Step -1 If List1.Selected(i) = True Then List2.AddItem List1.List(i) 'List(i)中的i下界是0,上界是ListCount-1; List1.RemoveItem (i) End If Next i End Sub '由于移除元素会即时改变列表中元素个数, '及“之后”所有元素的序号, '所以借助For循环移除元素的时候, '需要从后向前遍历, '即i = n - 1 To 0 Step -1; Private Sub Command2_Click() n = List1.ListCount For i = n - 1 To 0 Step -1 List2.AddItem List1.List(i) '逐项加入,可单独执行; List1.RemoveItem (i) '逐项删除,可单独执行; Next i End Sub '列表框控件的“AddItem”方法后直接加需要添加的元素内容; '列表框的List(i)属性表示列表框的第i项; Private Sub Command3_Click() n = List2.ListCount For i = n - 1 To 0 Step -1 If List2.Selected(i) = True Then List1.AddItem List2.List(i) List2.RemoveItem (i) End If Next i End Sub '列表框控件的“Selected(i)”属性可用于判断第i项是否被选中; '此属性为逻辑型数据; Private Sub Command4_Click() n = List2.ListCount For i = n - 1 To 0 Step -1 List1.AddItem List2.List(i) List2.RemoveItem (i) Next i End Sub '列表框控件的“RemoveItem”方法可以在后面的圆括弧内直接写入对应项序号, '以此完成元素的删除; 53(设计如图所示界面,窗体上有两个标签,1 个文本框,1 个列表框和三个命令按钮。程序运行时,在文本框中输入文本,单击“添加”按钮,文本添加到列表框中,如果列表框中有相同的文本,则不再添加。单击“删除”按钮,选中的列表项从列表框中移去。单击“清除”按钮,文本框和列表框中内容清空。 Private Sub Command1_Click() Dim x$, n% n = List1.ListCount x = Text1.Text x = Trim(x) '避免首尾空格产生影响,如无余力,此句可省; y = False '用于标识是否已在列表中; For i = 0 To n - 1 Step 1 If List1.List(i) = x Then y = True End If Next i If y = False Then List1.AddItem x End If '根据自己的实际掌握情况,可以考虑追加如下代码方便增加新的内容: Text1.SetFocus Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) '追加代码结束; End Sub Private Sub Command2_Click() Dim n% n = List1.ListCount For i = n - 1 To 0 Step -1 If List1.Selected(i) = True Then List1.RemoveItem (i) End If Next i End Sub Private Sub Command3_Click() List1.Clear '清空列表框的最简易方法,如觉 End Sub 54(窗体上有一个名为L1 的列表框,通过属性向列表框添加3 个项目,分别是“123、456、789”。当启动后,每次双击列表框中任何一项,则总在最后添加一项,该项是所有项之和。界面如下图。 Private Sub Form_Load() List1.AddItem 123 List1.AddItem 456 List1.AddItem 789 End Sub '列表框初始值也可以直接在list属性中设置; '如选用设置list属性的方法,则上述程序段需省略; Private Sub List1_DblClick() s = 0 n = List1.ListCount For i = 0 To n - 1 Step 1 s = s + List1.List(i) Next i List1.AddItem s End Sub 55(设计界面如图所示,滚动条代表温度值,最小值是摄氏0 度(华氏32 度),最大值是摄氏100 度(华氏212 度)。编写程序,当程序运行时,当移动滚动条时,在标签中能正确显示摄氏、华氏温度值,其中摄氏温度C 与华氏温度F 的关系为:C=5(F-32)/9。设计界面如下图所示,运行时,当移动滚动条时,在标签中能正确显示摄氏、华氏温度值(C=5(F-32)/9) Private Sub VScroll1_Change() f = VScroll1.Value c = Fix(5 * (f - 32) / 9) Label1.Caption = f Label2.Caption = c End Sub '垂直滚动条的“Max”属性对应下端,“Min”属性对应上端; '滚动条的当前值通过“Value”属性读出; 56(设计上面界面,按“开始”按钮使标签在窗体上从左向右移动,当遇到窗体的右侧后,改成从右向左移动,按“停止”按钮停止标签移动。 Public x As Integer '以x的正负来决定标签的移动方向; Private Sub Command1_Click() Timer1.Enabled = True '以计时器控件的“Enabled”属性来控制计时器的开、关; End Sub Private Sub Command2_Click() Timer1.Enabled = False End Sub Private Sub Form_Load() x = 10 '初始让标签向右移动,也即标签的Left属性逐渐增大,x值取正; End Sub Private Sub Timer1_Timer() Label1.Left = Label1.Left + x If Label1.Left > Form1.Width - Label1.Width Then x = -10 '移动到右边沿后,改变移动方向为向左, End If '也即标签的Left属性逐渐减小,x值取负; If Label1.Left < 0 Then x = 10 '移动到左边沿后,改变移动方向为向右, End If '也即标签的Left属性逐渐增大,x值取正; End Sub 57(设计如图所示界面, 实现每过1 秒钟,文本框的前景色能够由红变绿交替变化。 Dim s As Boolean '由于只有两种颜色的变化,所以定义一逻辑型数来标示颜色; Private Sub Form_Load() s = True Text1.ForeColor = vbRed End Sub Private Sub Timer1_Timer() s = Not s If s = True Then Text1.ForeColor = vbRed Else Text1.ForeColor = vbGreen End If End Sub '计时器的工作必须要确保以下两条: '1:“InterVal”属性为正整数; '2:“Enabled”属性为True; '由于本题要求每秒变化一次,也即每1000毫秒变化一次, '所以计时器“InterVal”属性取1000; 58(单击第一个按钮,生成20 个[0,100]之间的随机整数,显示于文本框1 中,单击第二个按钮,求这20 个数中的最大数和最小数,显示于文本框2 中。 Dim a%, max%, min% 's1用于以字串形式存储二十个随机数,基本思路同第39套题一致; '考虑到两个事件都需要对以上三个变量进行调用,所以声明在公共部分; Private Sub Command1_Click() Randomize a = Fix(101 * Rnd()) s1 = Str(a) '第一个数写入s1字串中; max = a '暂时视第一项为最大值; min = a '暂时视第一项为最小值; For i = 2 To 20 Step 1 a = Fix(101 * Rnd()) s1 = s1 & " " & Str(a) '顺次将后续各数写入s1字串中; s2 = s2 + a '顺次将后续各数加入求和项s2中; If a > max Then '新数如大于原最大值,用新数作为最大值; max = a End If If a < min Then '新数如小于原最小值,用新数作为最小值; min = a End If Next i Text1.Text = s1 End Sub Private Sub Command2_Click() Text2.Text = "最大值是:" & Str(max) & vbCrLf Text2.Text = Text2.Text & "最小值是:" & Str(min) End Sub '文本框的的“Multiline”属性建议设置为True; '涉及到多个事件的变量需要定义在公共部分; '算法思路同第39套题一致; '显示部分借助文本框实现,注意与第39套题Print方法实现的思路进行对比; 59(编写程序,单击第一个按钮,用随机函数产生4 行5 列的两位整数并输出到图片框1中。单击第二个按钮,实现将第1 行和第3 行数据交换或第2 列和第4 列数据交换,输出到图片框2 中。 Dim a(1 To 4, 1 To 5), b(1 To 4, 1 To 5) Private Sub Command1_Click() Picture1.Cls Randomize For i = 1 To 4 Step 1 For j = 1 To 5 Step 1 a(i, j) = Fix(10 + 90 * Rnd()) '随机整数全取两位数; b(i, j) = a(i, j) '不建议直接对数组a进行处理; Picture1.Print a(i, j); Next j Picture1.Print Next i End Sub Private Sub Command2_Click() '由于题目不明确,所以这里做了两个按钮分别实现行列交换; Picture2.Cls For i = 1 To 5 Step 1 '只有两行参与交换,所以无需行遍历,也就无需二重循环; t = b(1, i) '只需将1、3两行的元素逐列对调即可; b(1, i) = b(3, i) b(3, i) = t Next i For i = 1 To 4 Step 1 '显示二维数组的标准定势; For j = 1 To 5 Step 1 Picture2.Print b(i, j); Next j Picture2.Print Next i End Sub Private Sub Command3_Click() Picture2.Cls For i = 1 To 4 Step 1 '只有两列参与交换,所以无需列遍历,也就无需二重循环; t = b(i, 2) '只需将2、4两列的元素逐行对调即可; b(i, 2) = b(i, 4) b(i, 4) = t Next i For i = 1 To 4 Step 1 '显示二维数组的标准定势; For j = 1 To 5 Step 1 Picture2.Print b(i, j); Next j Picture2.Print Next i End Sub 60(编写程序,求S=A~+B~+C~,阶乘的计算分别用Sub 过程、Function 过程实现,其中A、B、C 由键盘随机输入。界面如图所示 Private Sub Form_Click() '题目没有限定触发事件,这里选窗体的Click事件; Dim s1!, s2!, s3! '由于阶乘结果较大,建议不要设置为整型数; a = Text1.Text '从文本框中读入整型数的定式结构; a = Fix(Val(a)) b = Text2.Text b = Fix(Val(b)) c = Text3.Text c = Fix(Val(c)) Call JC1(a, s1) '用Call指令调用JC1过程; JC1 b, s2 '直接调用JC1过程,注意与上一方法区分; s3 = JC2(c) '调用JC2函数,注意与调用过程的区别; Text4.Text = s1 + s2 + s3 End Sub Public Sub JC1(a, b) '过程结果返回需要自行指定变量,所以需要的参数较函数多一个; x = 1 For i = 1 To a Step 1 x = x * i Next i b = x '除非用于返回结果,否则保险起见,不要轻易让参数出现在等号右侧; End Sub Public Function JC2(a) x = 1 For i = 1 To a Step 1 x = x * i Next i JC2 = x '函数名称对应的变量直接可以返回结果; End Function 61 ( 设计如下图所示界面, 单击时输出N! 和 1!+2!+„+N!结果,要求N!用过程实现。 Private Sub Command1_Click() Dim s1! N = Text1.Text N = Fix(Val(N)) Call JC(N, s1) Text2.Text = s1 End Sub Public Sub JC(a, b) x = 1 For i = 1 To a Step 1 x = x * i Next i b = x End Sub Private Sub Command2_Click() Dim s2! s2 = 0 N = Text1.Text N = Fix(Val(N)) For i = 1 To N Step 1 Call JC(i, x) '计算i的阶乘并将结果存放在x中; s2 = s2 + x '顺此类加各x,即各阶乘结果; Next i Text3.Text = s2 End Sub 62(利用Function 计算N~,求组合数 在文本框1 中输入n,文本框2 中输入m,单击命令按钮,在文本框3 中显示组合结果。 Private Sub Command1_Click() n = Text1.Text n = Fix(Val(n)) m = Text2.Text m = Fix(Val(m)) If n >= m Then Text3.Text = JC(n) / (JC(m) * JC(n - m)) '如果觉得消化不了整段程序,整个if语句可以仅保留这一行; Else Text3.Text = "n不能小于m~" End If End Sub Public Function JC(a) x = 1 For i = 1 To a Step 1 x = x * i Next i JC = x End Function 63.编写一个判断素数的过程,调用该过程判断在文本框中输入的任意一个正整数是否为素数,判断结果在标签中输出。设计界面如图所示。 Private Sub Command1_Click() n = Text1.Text n = Fix(Val(n)) If SS(n) = True Then Label1.Caption = Str(n) & "是素数" Else Label1.Caption = Str(n) & "不是素数" End If End Sub Public Function SS(a) ysgs = 0 For i = 1 To a Step 1 If a Mod i = 0 Then ysgs = ysgs + 1 End If Next i If ysgs = 2 Then SS = True Else SS = False End If End Function 64(设计如图所示的界面,编写函数过程计算1+2+3+„„+n,运行时输入i、j、k 的值,单击“y=”按钮调用该函数过程计算以下的y 值,运算保留5 位小数。运行结果如图所示。 Private Sub Command1_Click() i = Text1.Text i = Fix(Val(i)) j = Text2.Text j = Fix(Val(j)) k = Text3.Text k = Fix(Val(k)) s = (LJ(i) + LJ(j)) / LJ(k) Text4.Text = Format(s, ".00000") '小数点保留五位的方法; End Sub Public Function LJ(a) x = 0 For i = 1 To a Step 1 x = x + i Next i LJ = x End Function 65(生成两个0~10 之间的随机整数矩阵,分别放入两个列表框,求两个矩阵之和放入第三个列表框。如下图所示。 Dim a(1 To 4, 1 To 4), b(1 To 4, 1 To 4), c(1 To 4, 1 To 4) '建立三个数组用于存放矩阵; Private Sub Command1_Click() For i = 1 To 4 Step 1 s3 = "" '用于存储矩阵求和结果各行元素输出到list3中 For j = 1 To 4 Step 1 c(i, j) = a(i, j) + b(i, j) s3 = s3 & Format(c(i, j), "@@@") Next j List3.AddItem s3 Next i End Sub Private Sub Command2_Click() End End Sub Private Sub Form_Click() '由于题目未对生成矩阵事件作出约束,此处选窗体的Click事件; Randomize List1.Clear '列表框初始化; List2.Clear '列表框初始化; List3.Clear '列表框初始化; For i = 1 To 4 Step 1 s1 = "" '用于存储矩阵1各行元素输出到list1中 s2 = "" '用于存储矩阵2各行元素输出到list2中 For j = 1 To 4 Step 1 a(i, j) = Fix(11 * Rnd()) b(i, j) = Fix(11 * Rnd()) '生成所需的两个矩阵; s1 = s1 & Format(a(i, j), "@@@") s2 = s2 & Format(b(i, j), "@@@") Next j List1.AddItem s1 List2.AddItem s2 Next i End Sub 66(编写程序,实现矩阵转置,即将一个n m 的矩阵(均由随机函数产生,并且是两位整数)的行和列互换。单击显示按钮将原矩阵放在图片框1,单击转置按钮将转置后 的矩阵输出在图片框2。 Dim a(1 To 4, 1 To 5) '由于题目未制定行列数目,这里取4行5列 Private Sub Command1_Click() Randomize Picture1.Cls Picture2.Cls For i = 1 To 4 Step 1 '矩阵生成的定式结构; For j = 1 To 5 Step 1 a(i, j) = Fix(10 + 90 * Rnd()) Next j Next i For i = 1 To 4 Step 1 '矩阵显示的定式结构; For j = 1 To 5 Step 1 '对比之前第42套题可知,矩阵的生成和显示可以借助一个二重循环实现; Picture1.Print Format(a(i, j), "@@@"); Next j Picture1.Print Next i End Sub Private Sub Command2_Click() For j = 1 To 5 Step 1 '矩阵显示的定式结构; For i = 1 To 4 Step 1 '只需对调内外层循环次序即可完成转置; Picture2.Print Format(a(i, j), "@@@"); Next i Picture2.Print Next j End Sub 67(用菜单设计一个简单的四则运算计算器,界面如图所示。 Private Sub C1_Click() x = Text1.Text x = Val(x) y = Text2.Text y = Val(y) Text3.Text = x + y End Sub Private Sub C2_Click() x = Text1.Text x = Val(x) y = Text2.Text y = Val(y) Text3.Text = x - y End Sub Private Sub C4_Click() x = Text1.Text x = Val(x) y = Text2.Text y = Val(y) Text3.Text = x * y End Sub Private Sub C5_Click() x = Text1.Text x = Val(x) y = Text2.Text y = Val(y) If Not y = 0 Then Text3.Text = x / y Else Text3.Text = "除数不可以为0~" End If End Sub '菜单分隔线的追加方法:建立一个菜单项, 68(请在名称为Fl 的窗体上建立一个两级下拉菜单,第一级共有两个菜单项,标题分别为“文件”、“编辑”,名称分别为file、edit;在“编辑”菜单下有第二级菜单,含有三个菜单项,标题分别为“剪切”、“复制”、“粘贴”,名称分别为cut、copy、paste。其中“粘贴”菜单项设置为无效,如图所示。无需写代码。 69.在名称为Form1 的窗体上画两个文本框,名称分别为Textl 和Text2,均无初始内容;再建立一个下拉菜单,菜单标题为“操作”,名称为OP,此菜单下含有两个菜单项标题分别为“复制”和“清除”,名称分别为Copy 和Clear,界面如图所示,请编写适当的事件过程,使得在运行时,单击“复制”菜单项,则Textl中的内容复制到Text2 中单击“清除”菜单项,则清除Text2 中的内容。 Private Sub Clear_Click() Text2.Text = "" End Sub Private Sub Copy_Click() Text2.Text = Text1.Text End Sub 70(在窗体上画一个名称为Text1 的文本框,再建立一个名称为Geshi 的弹出式菜单,含三个菜单项,标题分别为“加粗”、“斜体”、“下划线”,名称分别为OP1、OP2、OP3。请编写适当的事件过程,在运行时当用鼠标右键单击文本框时,弹出此菜单,选中一个菜单项后,执行相应的操作, 界面如图所示。 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.Enabled = True Text1.Enabled = False ‘屏蔽系统菜单 If Button = 2 Then '调用快捷菜单的定式结构; PopupMenu Geshi End If End Sub Private Sub OP1_Click() Text1.FontBold = Not Text1.FontBold End Sub Private Sub OP2_Click() Text1.FontItalic = Not Text1.FontItalic End Sub Private Sub OP3_Click() Text1.FontUnderline = Not Text1.FontUnderline End Sub 第二种 复选式 Private Sub Form_Load() OP1.Checked = Text1.FontBold '忽略灰化项,直接用逻辑型数据对菜单项是否勾选进行赋值; OP2.Checked = Text1.FontItalic OP3.Checked = Text1.FontUnderline End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then '调用快捷菜单的定式结构; PopupMenu Geshi End If End Sub Private Sub OP1_Click() Text1.FontBold = Not Text1.FontBold OP1.Checked = Text1.FontBold End Sub Private Sub OP2_Click() Text1.FontItalic = Not Text1.FontItalic OP2.Checked = Text1.FontItalic End Sub Private Sub OP3_Click() Text1.FontUnderline = Not Text1.FontUnderline OP3.Checked = Text1.FontUnderline End Sub 71(在窗体上画一个名称为Sha1 的形状控件,然后建一个菜单,标题为“形状”名称为Shape0,该菜单有两个子菜单,其标题分别为“正方形”和“圆形”,其名称分别为Shape1和Shape2,再建第二个菜单,标题为“填充色”,下设两个子菜单,其标题分别为“红色”、“蓝色”,名称分别是C1 和C2。如下图所示,编写适当的事件过程。程序运行后,使Sha1控件按照所选择的形状、颜色而变化。 Private Sub C1_Click() Sha1.BackColor = vbRed End Sub Private Sub C2_Click() Sha1.BackColor = vbBlue End Sub Private Sub Shape1_Click() Sha1.Shape = 1 End Sub Private Sub Shape2_Click() Sha1.Shape = 3 End Sub
/
本文档为【考试必备之vb实例编程代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索