《VB程序设计》课堂例题总结.doc_第1页
《VB程序设计》课堂例题总结.doc_第2页
《VB程序设计》课堂例题总结.doc_第3页
《VB程序设计》课堂例题总结.doc_第4页
《VB程序设计》课堂例题总结.doc_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VB程序设计课堂例题总结 消息对话框的使用Private Sub Command1_Click()If Not IsNumeric(Text1) Then i% = MsgBox(你输入的不是数字!, 5 + vbQuestion, 警告) If i = 4 Then Text1.SetFocus Else EndElse MsgBox 你好, , 欢迎End IfEnd Sub求圆的周长与面积Private Sub Form_Click()Dim r!, s!, c!Const pi = 3.14159 用户声明常量r = InputBox(请输入园的半径:)s = pi * r * rc = 2 * pi * rMsgBox 园的周长为: & c & 面积为: & sEnd Sub计算三角形的面积Private Sub Command1_Click()Dim a%, b%, c%, s#, area#Dim str1$ a = Val(InputBox(a:) b = Val(InputBox(b:) c = Val(InputBox(c:) s = (a + b + c) / 2 area = Sqr(s * (s - a) * (s - b) * (s - c) str1 = area= & area MsgBox str1 Print str1End Sub字体的放大与缩小随机放大13整数倍:Text1.FontSize = Text1.FontSize * Int(Rnd()*3+1)缩小的比例为任意:Text1.FontSize = Text1.FontSize * Rnd() 连接与求和Private Sub Command1_Click()Text3.Visible = TrueText3.Text = Text1.Text & Text2.Text 也可以用Text1.Text + Text2.TextCommand1.Enabled = FalseEnd SubPrivate Sub Command2_Click()Text3.Text = Val(Text1.Text) + Val(Text2.Text)End Sub字符串的替换方法一:(多个函数)Private Sub Command1_Click() i = InStr(Text1, Text2) 在Text1中查找出现Text2内容的位置 k = i + Len(Text2) 定位右子串的起始位置 Ls = Left(Text1, i - 1) 取左子串 Text4 = Ls + Text3 + Mid(Text1, k) 左子串连接替换为子串连接右子串实现替换 也可以将上面两步合并为 Text4 = Left(Text1, i - 1) + Text3 + Mid(Text1, k)End Sub方法二:(Replace函数)Private Sub Command2_Click() Text4 = Replace(Text1, Text2, Text3)End Sub身份证的查找Private Sub Command1_Click() Dim a As String, nl%, yue%, ri%, b%, xb$ a = Text1.Text nl = 2010 - Val(Mid(a, 7, 4) nl = Year(Now() - Val(Mid(a, 7, 4) yue = Mid(a, 11, 2) ri = Mid(a, 13, 2) b = Val(Mid(a, 17, 1) If b Mod 2 = 1 Then xb = GG Else xb = MM Label3.Caption = nl Label5.Caption = yue & 月 & ri & 日 Label7.Caption = 你是 & xbEnd Sub电话号码升位:将原来任意一个带区号的7位电话号码升到8位,在最前面加8。020-81234567区号及电话号码确定:Left(s,4) & ”8” & Right(s,7) 区号及电话号码不确定:Private Sub Command1_Click() Dim a As String a = Text1.Text b = InStr(a, -) Label3.Caption = Left(a, b) & 8 & Right(a, 7) Label3.Caption = Left(a, b) & 8 & mid(a, b+1)End Sub求一元二次方程的根Private Sub Command1_Click()Dim a!, b!, c!, x1!, x2!, y!a = Val(Text1.Text): b = Val(Text2.Text): c = Val(Text3.Text)y = b 2 - 4 * a * cIf y 0 And H 0 And F Mod 2 = 0 And F = H * 2 And F = A And Chr(Asc(s) + m) = Z Then 移动后不会超过字母Z的字母 s = Chr(Asc(s) + m) 正常右移m位Else s = Chr(Asc(s) + m - 26) 移动后超过Z的,要减去26End IfLabel4 = sEnd SubPrivate Sub Form_Load()RandomizeEnd Sub加密程序:根据单选按钮的数字,将明文中每个字母改为其后第n个字母。Private Sub Command1_Click()Dim m%, k%Text2 = m = IIf(Option1.Value = True, 1, IIf(Option2.Value = True, 2, 3)For i = 1 To Len(Text1) s = Mid(Text1, i, 1) If a = Chr(Asc(s) + m) = z Or A = Chr(Asc(s) + m) 0 And b 0 And c 0 And a + b c And _ b + c a And a + c b Then MsgBox 可以构成三角形If a = b And b = c Then s = s & ,是等边三角形ElseIf a = b Or a = c Or b = c Then s = s & ,等腰三角形ElseIf a 2 + b 2 = c 2 Or a 2 + c 2 = b 2 Or c 2 + b 2 = a 2 Then s = s & ,直角三角形 End IfElse MsgBox 不可以构成三角形 End IfEnd Sub输入一个字符,判断该字符是字母字符、数字字符还是其它字符,并作相应的显示。方法一:Private Sub Command1_Click()Dim strc As String * 1strc = InputBox(请输入一个符号:)If UCase(strc) = A And UCase(strc) = 0 And strc = 9 Then Text1.Text = strc & 是数字Else Text1.Text = strc & 是其它字符End IfEnd Sub方法二:Private Sub Command2_Click()Dim strc As String * 1strc = InputBox(请输入一个符号:)Select Case strc Case a To z, A To Z Text1.Text = strc & 是字母 Case 0 To 9 Text1.Text = strc & 是数字 Case Else Text1.Text = strc & 是其它字符End SelectEnd Sub模拟计算器方法一:Private Sub Command1_Click() Dim sInput1 As Single, sInput2 As Single, oper As String * 1 Dim iError As Integer sInput1 = Val(Text1.Text) sInput2 = Val(Text3.Text) oper = Trim(Text2) If oper = + Then Text4.Text = Str(sInput1 + sInput2) ElseIf oper = - Then Text4.Text = Str(sInput1 - sInput2) ElseIf oper = * Then Text4.Text = Str(sInput1 * sInput2) ElseIf oper = / Then If sInput2 0 Then Text4.Text = Str(sInput1 / sInput2) Else MsgBox (分母为零,出错) Text3.Text = Text3.SetFocus End If Else MsgBox (运算符出错,再输入) Text2.Text = Text2.SetFocus End IfEnd Sub方法二:Private Sub Command2_Click() Dim sInput1 As Single, sInput2 As Single Dim iError As Integer sInput1 = Val(Text1.Text) sInput2 = Val(Text3.Text) Select Case Trim(Text2) Case + Text4.Text = Str(sInput1 + sInput2) Case - Text4.Text = Str(sInput1 - sInput2) Case * Text4.Text = Str(sInput1 * sInput2) Case / If sInput2 0 Then Text4.Text = Str(sInput1 / sInput2) Else MsgBox (分母为零,出错) Text3.Text = Text3.SetFocus End If Case Else MsgBox (运算符出错,再输入) Text2.Text = Text2.SetFocus End SelectEnd Sub开始运行如左下图所示,单击“出题”按钮后计算机自动出题,窗口如右下图所示,此时由用户输入加法运算答案,然后单击“判定”按钮。如果用户运算正确则提示“运算正确”,否则显示“运算错误”。再次按下“出题”就会再出一道题。Private Sub Form_Load() Randomize Command1.Caption = 出题End SubPrivate Sub Command1_Click() If Command1.Caption = 出题 Then Text1 = Int(Rnd * 101): Text2 = Int(Rnd * 101) Text3.SetFocus Command1.Caption = 判定 Else If Val(Text1) + Val(Text2) = Val(Text3) Then MsgBox (答对了,你真聪明!) Command1.Caption = 出题 Text1 = : Text2 = : Text3 = Else MsgBox (错了,努力啊!) Text3 = Text3.SetFocus End If End IfEnd SubPrivate Sub Command2_Click() EndEnd Sub修改密码登录程序。要求:建立一个登录窗口,要求输入密码。设定密码为“basic1234”(不区分大小写);若密码正确,显示“祝贺你,成功登录!”;若密码不正确,显示“对不起,密码错误,无法登录!”,并统计出错次数,当输入超过3次时,则退出系统。Private Sub Command1_Click() If LCase(Text2.Text) = basic1234 Then MsgBox 祝贺你,成功登录! Else MsgBox (对不起,口令错误,无法登录!) n = n + 1 Text2.Text = Text2.SetFocus If n = 3 Then Unload Me 也可以用End End IfEnd SubPrivate Sub Text1_LostFocus() If Len(Text1) 6 Or Not IsNumeric(Text1) Then MsgBox 帐号必须是6位数字! Text1 = Text1.SetFocus End IfEnd Sub分别输入年份和月份,根据输入数据显示该年该月有多少天?Private Sub Command1_Click()Dim y%,m%y=InputBox(“输入年份:)m=InputBox(“输入月份:)Select Case m Case 1,3,5,7,8,10,12 MsgBox y & “年” & m & “月有31天!” Case 4,6,9,11 MsgBox y & “年” & m & “月有30天!” Case 2If y mod 400=0 or y mod 4 _ =0 and y mod 100 0 Then MsgBox y & “年” & m & “月有29天!”Else MsgBox y & “年” & m & “月有28天!”End If Case Else Magbox “输入错误,月份应该是1-12之间!”End Select End Sub求1+2+3+100的值方法一:Private Sub Command1_Click()Dim i%, sum% sum = 0 For i = 1 To 100 sum = sum + i Next i Print 1 100 的和是:; sumEnd Sub方法二:Private Sub Form_Click()Dim i%, sum% sum = 0 i = 1 Do While i = 100 sum = sum + i i = i + 1 Loop Print 1 100 的和是:; sumEnd Sub求任意数的阶乘Private Sub Command2_Click()Dim i%, n%, sum#sum = 1n = Val(InputBox(请输入阶乘数“)For i = 1 To nsum = sum * iNextPrint n; 的阶乘为; sumEnd Sub输入若干个学生的成绩,求总分、平均分。输入时以-1作为结束标记。Private Sub Command1_Click()Dim n%, i%, sum%, max%, mark%, aver!mark = Val(InputBox(请输入成绩)Do While mark -1Print mark If max = a And LCase(ch) = 0 And ch = 9 Then n2 = n2 + 1 Else n3 = n3 + 1 End If NextPrint 字母的个数为:; n1Print 数字的个数为:; n2Print 其他字符的个数为:; n3End Sub输入10个同学考试的等级,如果A计5分,B计4分,以此类推,求这10个同学的平均成绩。 Private Sub Form_Click()Dim i%, sum%, mark$, aver!For i = 1 To 10 mark = InputBox(请输入成绩) Print mark, If i Mod 5 = 0 Then Print Select Case UCase(mark) Case A: sum = sum + 5 Case B: sum = sum + 4 Case C: sum = sum + 3 Case D: sum = sum + 2 Case E: sum = sum + 1 Case Else: sum = sum + 0 End SelectNextaver = sum / 10Print 平均为:; averEnd Sub输出斐波那契级数1、1、2、3、5、8、13的前30项。此级数项的规律是:前两项的值各为1,从第3项起,每一项是前2项的和。(要求一行输出6项)Private Sub Command1_Click()Dim a#, b#, c#, i%a = 1 第一项为1b = 1 第二项为1Print a; b; 打印前两项For i = 3 To 30 求剩余的28项 c = a + b 每一项都是前两项之和 Print c; 打印输出 If i Mod 6 = 0 Then Print 一行打印6个即换行 a = b 新的第一项 b = c 新的第二项NextEnd Sub编写程序输出2000年至2500年间的所有闰年,要求每行输出8个 Private Sub Command1_Click()Dim y%, n%For y = 2000 To 2500 If y Mod 400 = 0 Or y Mod 4 = 0 And y Mod 100 0 Then Print y If y Mod 8 = 0 Then Print End IfNext yEnd Sub回文字串:香莲碧水动风凉,水动风凉夏日长。长日夏凉风动水,凉风动水碧莲香。 Private Sub Command1_Click()Dim s$, n%, i%s = InputBox(请输入一个整数:)n = Len(s)For i = 1 To n / 2 If Mid(s, i, 1) Mid(s, n - i + 1, 1) Then Print s; 不是回文数! Exit For End IfNextIf i n / 2 Then Print s; 是回文数!End Sub输入一个正整数,判断该数是否为素数。(素数是指一个数只能被1和其本身整除。)Private Sub Command1_Click()Dim i%, n%, s$n = Val(InputBox(请输入一个正整数:)s = n & 是素数For i = 2 To n - 1 If n Mod i = 0 Then s = n & 不是素数 Exit For End IfNextPrint sEnd Sub随机产生10个100200之间的数,找出其中的最大值。Private Sub Command1_Click()Dim i%, a%, max%ClsRandomizea = Int(Rnd * 101) + 100 先产生一个数,作为最大值的初值max = aPrint aFor i = 2 To 10 紧跟着产生剩下的9个数 a = Int(Rnd * 101) + 100 Print a If a max Then max = a 拿新产生的数来与最大值作比较,若比最大值大,则取代其,作为新的最大值NextPrint 最大值为; maxEnd Sub计算1!+2!+3!+.+10! 的值Dim sum#, i%, j%, n#sum = 0: n = 1For i = 1 To 10 n = 1 For j = 1 To i n = n * j Next j sum = sum + nNext iPrint 1!+2!+3!+.+10!=; sum显示九九乘法表Private Sub Form_Click()Dim i%, j%ClsPrint * |;For i = 1 To 9 Print ; i;NextPrintPrint -|-For i = 1 To 9 Print i; | ; For j = 1 To i Print i * j; Next j PrintNext iEnd Sub打印如下图图案Private Sub Form_Click()Dim i%, j%ClsFor i = 1 To 9 Print Space(11 - i); For j = 1 To 2 * i - 1 Print *; Next j PrintNext iFor i = 8 To 1 Step -1 Print Space(11 - i); String(2 * i - 1, *)NextEnd Sub输出100以内的素数Private Sub Form_Click()Dim i%, n%,Tag as Boolean For n= 1 to 100 Tag= True For i = 2 To n - 1 If n Mod i = 0 Then Tag=False Exit For End If Next i If Tag=True then Print n Next nEnd sub穷举法:百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。 方法一: Private Sub Command1_Click()Dim x%, y%, z%For x= 0 to 100 For y= 0 to 100 For z= 0 to 100 step 2 If x+y+z=100 and 3*x+2*y+z*0.5=100 Then Print x,y,z End IfNext z,y,xEnd Sub方法二:Private Sub Command1_Click()Dim x%, y%, z% For i = 0 To 20 For j = 0 To 33 For k = 0 To 100 Step 3 If i + j + k = 100 And i * 5 + j * 3 + k / 3 = 100 Then Print 公鸡:; i, 母鸡:; j, 小鸡:; k End If Next k Next jNext iEnd Sub编写程序,显示所有的水仙花数(所谓水仙花数是指一个3位数,期各位数字立方和等于该数字本身,如153=13+53+33)。方法一(用单循环完成,分别把三位数中的每个数字取出来)Private Sub Command1_Click()Dim i%, g%, s%, b%For i = 100 To 999 b = i 100 g = i Mod 10 s = (i 10) Mod 10 If b 3 + g 3 + s 3 = i Then Print iNextEnd Sub方法二(用三重循环完成,由三个数字组成三位数来判断)Private Sub Form_Click()Dim i%, j%, k%, s%For i = 1 To 9 For j = 0 To 9 For k = 0 To 9 If i 3 + j 3 + k 3 = i * 100 + j * 10 + k Then Print i * 100 + j * 10 + k Next k Next jNext iEnd Sub输入一个班100个学生的成绩,要求:1)求平均分2)统计高于平均分的人数Private Sub Form_Click()Dim a%(1 To 100),i%, SUM%, aver!,n%For i = 1 To 100 a(i) = InputBox(input:) Print a(i) SUM = SUM + a(i)Next iaver = SUM / 100For i = 1 To 100 If a(i) aver Then n = n + 1Next iPrint nEnd Sub斐波那契数列,即:1,1,2,3,5,8,13由此可知:a1=a2=1,an=an-1+an-2 (用数组求)Private Sub Form_Click()Dim i%,f&(30) f(1)=1:f(2)=1Print f(1);f(2);For i=3 to 30 f(i)=f(i-2)+f(i-1) Print f(i); If i mod 5 = 0 Then Print End IfNext iEnd Sub用计算机模拟掷色子游戏。一个色子有六个点数,编写程序统计掷N次(N尽量大,例如100000次)后各点子出现的次数。方法一: Private Sub Command1_Click()Dim c%, i&Dim n(1 To 6) As Single 定义一个数组记算所掷每一个色子的次数For i = 1 To 100000 c = Int(Rnd * 6 + 1) 我们所扔的色子的点数实际是一个16的随机数 n(c) = n(c) + 1 对于所要记录的这个色子对应的个数加1Next iFor i = 1 To 6 Print n( & i & )= & n(i)NextEnd Sub方法二:Private Sub Form_Click() Dim dian%, i&, n1&, n2&, n3&, n4&, n5&, n6& For i = 1 To 100000 dian = Int(Rnd * 6) + 1 If dian = 1 Then n1 = n1 + 1 ElseIf dian = 2 Then n2 = n2 + 1 ElseIf dian = 3 Then n3 = n3 + 1 ElseIf dian = 4 Then n4 = n4 + 1 ElseIf dian = 5 Then n5 = n5 + 1 Else n6 = n6 + 1 End If NextPrint n1:Print n2:Print n3:Print n4:Print n5:Print n6End Sub输入一串字符,分别统计各字母出现的次数,不区分字母大小写。Private Sub Form_Click()Dim a%(65 To 90), s$s = InputBox(输入一串字符串:)Print 字符串为; sFor i = 1 To Len(s) n = Asc(UCase(Mid(s, i, 1) a(n) = a(n) + 1NextFor i = 65 To 90 If a(i) 0 Then Print Chr(i); 的个数为:; a(i)NextEnd Sub将一个数组中的元素按逆序存放Private Sub Form_Click()Dim i%, a%(10), t%RandomizeFor i = 1 To 10 a(i) = Int(Rnd * 101) + 100 Print a(i); If i Mod 5 = 0 Then PrintNextFor i = 1 To 5 t = a(i): a(i) = a(10 - i + 1): a(10 - i + 1) = tNextPrint 逆序输出结果为:For i = 1 To 10 Print a(i); If i Mod 5 = 0 Then PrintNext End Sub10个元素的数组求最大值。Private Sub Form_Click()Dim i%, a%(10), max%a(1) = Int(Rnd * 101) + 100 先产生一个数,作为最大值的初值max = a(1)Print a(1)For i = 2 To 10 紧跟着产生剩下的9个数 a(i) = Int(Rnd * 101) + 100 Print a(i) If a(i) max Then max = a(i) 拿新产生的数来与最大值作比较,若比最大值大,则取代其,作为新的最大值NextPrint 最大值为; maxEnd Sub打印杨辉三角Option Base 1Private Sub Form_Click()Dim a%(7, 7)For i = 1 To 7 For j = 1 To i If j = 1 Or i = j Then a(i, j) = 1 Else a(i, j) = a(i - 1, j) + a(i - 1, j - 1) End If Print a(i, j); Next PrintNextEnd Sub通过Inputbox输入5个同学的姓名和身高,显示全部同学的姓名和身高及最高的同学的姓名和身高。Option Base 1Private Sub Command1_Click() Dim a(5, 2), i% a(1, 1) = Val(InputBox(请输入第一个身高:) a(1, 2) = InputBox(请输入第一个姓名:) Max = a(1, 1) maxi = 1 For i = 2 To 5 a(i, 1) = Val(InputBox(请输入第 & i & 个身高:) a(i, 2) = InputBox(请输入第 & i & 个姓名:) If a(i, 1) Max Then Max = a(i, 1) maxi = i End If Next i For i = 1 To 5 Print a(i, 1), a(i, 2) Next iPrint 最高的是: & a(maxi, 2) & 身高 & a(maxi, 1)End Sub数组求最大值的下标Private Sub Form_Click()Dim i%, a%(10), maxi%a(1) = Int(Rnd * 101) + 100maxi = 1 记录最大值的下标Print

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论