1 下面程序的功能是:计算f=1-1/(2*3)+1/(3*4)-1/(4*5)+„„+1/(19*20) Private Sub Form_Click() Dim f,i,sign As Integer ____ sign=1________ f = 1 ______ for i=2 to 19_______ f = f + sign / (i * (i + 1)) ________ sign=-1*sign_________ Next i Print “f=”;f End Sub 11.下面的程序是在一个字符串变量中查找“at”,并用消息框给出查找结果的报告:没有找到或找到的个数,程序如下: Public Sub Findat() Dim Str1 As String Dim length As Integer Dim sum As Integer Dim i As Integer Str1 = InputBox (“请输入一个字符串”) length = _______ len(Str1)_________ i = 1 sum = 0 Do While i <= _______ Length _________ If _______ mid(Str1,i,2)_______ = “at” Then sum = sum + 1 End If i = i + 1 Loop If _______ sum=0_______ Then MsgBox “没有找到!” Else MsgBox “找到了” & Str (sum) & “个” End If End Sub 下面程序的功能是:单击窗体后,输入英文句子,将其每个单词首字母变为大字字母,再输出 Private Sub Form_Click() Dim oldsen As String, newsen As String Dim char As String, lastchar As String Dim n As Integer, i As Integer oldsen = InputBox("请输入英文句子:") n = Len(oldsen)
lastchar = " " For i = 1 To n char = Mid(oldsen, i, 1) If lastchar = " " Then char = UCase(char) '变为大写 End If newsen = newsen & char lastchar = char Next i Print "input:" ; oldsen Print "output:" ; newsen End Sub 2
编写程序,使用InputBox函数输入两个电阻的值,求它们并联和串联的电阻值,使用MsgBox消息框输出结果,要要求保留三位小数 Sub Macro2() Dim s1, s2 As String Dim n5 Dim n1, n2, n3, n4 As Single s1 = InputBox("请输入两电阻的阻值,之间用半角逗号“,”分隔", "提示信息") n1 = Val(s1) n2 = Val(Mid(s1, InStr(s1, ",") + 1)) If n1 > 0 And n2 > 0 Then n3 = Round(n1 + n2, 3) '串联电阻值 n4 = Round(n1 * n2 / (n1 + n2), 3) '并联电阻值 n5 = MsgBox(n1 & "Ω和" & n2 & "Ω两个电阻的" & Chr(13) & "串联电阻值为:" & n3 & "Ω" & Chr(13) & "并联电阻值为:" & n4 & "Ω", , "计算结果") Else n5 = MsgBox("两电阻值输入有错,请重新输入!", , "错误提示") End If End Sub 用inputbox函数输入3个数据,如果这3个数据能构成三角形,计算并在窗体上输出三角形面积。 Private Sub Command1_Click() Dim a, b, c, s, x a = Val(InputBox("请输入第一条边长")) b = Val(InputBox("请输入第二条边长")) c = Val(InputBox("请输入第三条边长")) If a + b > c And a + c > b And b + c > a Then Print "能组成三角形" x = 1 / 2 * (a + b + c) s = Sqr(x * (x - a) * (x - b) * (x - c)) Print "三角形面积s="; s Else Print "不能组成三角形" End If End Sub 编程计算下列分段函数值 f(x)=1.x2+x-6 x<0且x不等于3 2.x2-5x+6 0<=x<10且x不等于2和3 3.x2-x-1 其他 if x<0 then f=x^2+x-6 elseif x<10 and x>=0 and x<>2 and x<>3 then f=x^2-5*x+6 else f=x^2-x-1 end if Function jc(n As Integer) As Long
编写程序计算1+2!+3!+4!+„„+10!的程序 Private Sub Form_Click() Dim s As Double m = 1 For n = 1 To 10 m = m * n s = s + m Next Print s End Sub 3
用VB编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个3位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为153=13+53+33,
Private Sub Command1_Click() Dim i As Integer For i = 100 To 999 If (i \ 100) ^ 3 + (i \ 10 Mod 10) ^ 3 + (i Mod 10) ^ 3 = i Then Print i Next End Sub 下面的程序是将输入的一个数插入到递减的有序数列中,插入后使该序列仍有序。 SubButton1_Click(.....) Handles Button1.Click Dim i% , n% ,m% Dim a() As Integer={21,19,17,15,13,11,9,7,5,3,1} n=UBound(a) ReDim a(n+1) m= Val(InputBox("输出欲插入的数")) For i=UBound(a) -1 To Step -1 If m>=a(i) Then a(i-1) = a(i) If i=0 Then a(i)=m Else m=a(i+1) Exit For End If Next i For i=0 To m Label1.Text &=a(i) & " " Next i End Sub 编一程序,将一维数组中元素向右循环移位,移位次数键盘输入。 SUB SHIFT_LEFT() DIM TEMP I TEMP=A(1) FOR I=2 TO 10 A(I-1)=A(I) NEXT I A(10)=TEMP END SUB 输入对话框输入100个数值数据放入数组a。将其中的整数放入数组b,然后运用选择法将数组b中的数据按从小到大排序,并将数组b以每行10个数据在窗体上输出。 Private Sub Command1_Click() Dim I As Integer, J As Integer, K As Integer Dim a(1 To 100) As Single Dim b(100) As Integer J = 0 For I = 1 To 100 Randomize (Timer) K = Int(Rnd() * 2) + 1 'If K = 1 Then a(I) = Int(Rnd() * 1000 + 1) / 10 Else a(I) = Int(Rnd() * 100 + 1) a(I) = InputBox("请输入第" & I & "个数:") If a(I) = Int(a(I)) Then J = J + 1: b(J) = a(I) Next I For I = 2 To J For K = 1 To I If b(K) > b(I) Then b(0) = b(K) b(K) = b(I) b(I) = b(0) End If Next K Next I For I = 1 To J Print b(I); If I Mod 10 = 0 Then Print Next I End Sub 4
顺序文件的建立。建立文件名为" C:\stud1.txt"的顺序文件,内容来自文本框,每按Enter键写入一条记录,然后清除文本框的内容,直到文本框内输入"END"字符串。 Private Sub Form_Load() Open "C:\stud1.txt" For Output As #1 Text1.text = "" End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If UCase(Text1.Text) = "END" Then Close #1 End Else Print #1 , Text1.Text Text1.text = "" End If End If End Sub 将C盘根目录下的一个文本文件old.txt复制到新文件new.txt中,并利用文件操作语句将old.txt文件从磁盘上删除。 Private Sub Command1_Click() Dim str1$ Open "C:\old.txt" For Input As #1 Open "C:\new.txt" For Output As #2 Do While Not EOF(1) Line Input #1,str1 Print #2 , str1 Loop Close #1,#2 Kill "C:\old.txt" End Sub 4. 下面程序的功能是将文本文件合并。即将文本文件“t1.txt”合并到“t.txt”文件中,请将程序填写完整。 Private Command1_Click() Dim s$ Open "t.txt" For Append As #1 Open "t1.txt" For Input As #2 Do While Not EOF(2) Line Input #2 , s Print #1 , s Loop Close #1, 2# End Sub 假定文本框名称为txtTest,文件名为MYFILE.TXT。可以通过下面三种方法来实现。 方法1:一行一行读 txtTest.Text = "" Open "MYFILE.TXT" For Input As #1 Do While Not EOF(1) Line Input #1, InputData txtTest.Text = txtTest.Text + InputData+vbCrLf Loop Close #1 方法2:一次性读 txtTest.Text = "" Open "MYFILE.TXT" For Input As #1 txtTest.Text = Input( LOF(1),1) Close #1 方法3:一个个字符读 Dim InputData as String*1 txtTest.Text = "" Open "MYFILE.TXT" For Input As #1 Do While Not EOF(1) Input #1, InputData txtTest.Text = txtTest.Text + InputData Loop Close #1