文档库 最新最全的文档下载
当前位置:文档库 › VB实验作业参考答案

VB实验作业参考答案

2.编程题:
1)单击窗体后在窗体上显示“您好!×××同学”。
要求:(1)程序中用自己的姓名替代“×××”。(2)文字以红色、仿宋体、加粗、三号字显示,并在字下加横线。(3)建立一个命令按钮,结束时单击此按钮退出。
答案参照课本P27的例1-6。
2)设计一窗体,窗体上有1个文本框(Text1)、1个命令按钮(Command1),运行时文本框中显示“Visual Basic程序设计”,命令按钮标题为“结束”,文本框及命令按钮能随窗体大小的调整而自动调整大小及位置,其中调整文本框使其:Left=0,Top=0,宽度和高度都为窗体的一半;命令按钮:始终位于窗体右下角位置。请编写:
(1)用代码初始化各控件(提示:可写在Form_Load事件中)。
(2)文本框控件随窗体的大小而调整大小的代码,以及调整命令按钮位置始终位于窗体右下角的代码(提示:调整大小位置的代码写在Form_Resize事件中)。
(3)结束程序运行的代码(命令按钮)。
程序代码:
Private Sub Form_Load()
Text1.Left = 0
Text1.Top = 0
Text1.Width = Form1.Width / 2
Text1.Height = Form1.Height / 2
Command1.Left = Form1.ScaleWidth - Command1.Width
Command1.Top = Form1.ScaleHeight - Command1.Height
End Sub
Private Sub Form_Resize()
Call Form_Load
End Sub

Private Sub Command1_Click()
End
End Sub

1.填空题:
(1)Visual Basic算术表达式a+b/(b+c/(d+e/Sqr(2*a*b)))对应的数学表达式( )。
(2)产生一个10-99之间的随机整数的表达式( int(rnd*90)+10 )。
(3)整形变量X中存放了一个两位数,要将两位数交换位置,例如,73变成37,实现的表达式是( (x mod 10)*10+ x\10 )。
(4)算术表达式Fix(-3.95)+int(-3.02)+Cint(-3.5)+25 mod 10\3的值是( -10 )。
(5)表达式Ucase(Mid(″abcdefgh″,3,4))的值是( CDEF )。
2.使用立即窗口显示下列表达式的值(设x=5,y=15,z=3),并分析所输出的结果。
(1)Len(x & y &''z'') (2)Sgn(10 mod 6) & x+y
(3)x mod z +x^2\y+z (4)x^2-y*2>3*z and z^3<>x^2
(5)(y mod 10) *10+y\10 (6)Mid(str(x^3),2,2) & y+z
(7)Ucase(Left(Mid(''This is a Book'',6),4)) (8)Date()+10
(9)Timer Mod 3600 (10)Hour(time())
3.编程题:
(1)编一个模拟简易计算器的程序,运行界面如下图所示:
程序代码:
Private Sub Form_Load()
Label1.Caption = ""
End Sub

Private Sub Command1_Click() ' 加法
Label1.Caption = "+"
Text3 = Str$(Val(Text1) + Val(Text2))
End Sub
Private Sub Command2_Click() ' 减法
Label1.Caption = "-"
Text3 = Str$(Val(Text1) - Val(Text2))
End Sub
Private Sub Command3_Click() ' 乘法
Label1.Caption = "×"
Text3 = Str$(Val(Text1) * Val(Text2))
End Sub
Private Sub Command4_

Click() ' 除法
Label1.Caption = "÷"
Text3 = Str$(Val(Text1) / Val(Text2))
End Sub
Private Sub Command5_Click() ' 清除
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Label1.Caption = ""
End Sub

(2)编一个程序,当单击窗体时,在窗体上任意位置,随机输出一个大写的英文字母。
提示:随机大写的英文字母由表达chr(Int(Rnd*26)+65)产生,窗体上的随机位置通过设置当前坐标CurrentX,CurrentY属性来确定。

程序代码:
Private Sub Form_Click()
Dim ch As String
Form1.CurrentX = Form1.ScaleWidth * Rnd '随机确定当前x坐标
Form1.CurrentY = Form1.ScaleHeight * Rnd '随机确定当前y坐标
ch = Chr(65 + Int(26 * Rnd)) '随机产生一个大写字母
Print ch
End Sub


1.填空题;
(1)下面程序执行的结果是( A=2 B=3 C=2 )。
Private Sub Form_Click()
a = 1: b = 2: c = 3
a = b
b = c
c = a
Print "a="; a; "b="; b; "c="; c
End Sub
(2)下面程序执行的结果是( 5 )。
Private Sub Form_Click()
a$ = "123": b$ = "456"
c = Val(a$) + Val(b$)
Print c \ 100
End Sub
(3)下面程序执行的结果是( BABCBACBC )。
Private Sub Form_Click()
x$ = "a": y$ = "b": z$ = "c"
x$ = y$ & x$: y$ = y$ & z$: z$ = x$ & z$ & y$
Print x$ + y$ + z$
End Sub
(4)下面程序执行的结果是( 1 2 False )。
Private Sub Form_Click()
Dim x%, y%, z%
x = 1: y = 2
z = x = y
Print x; y; x
End Sub
(5)当程序运行后,在文本框Text1中输入1234,窗体上的输出结果是( 1-12-123-1234- )。
Private Sub Text1_Change()
Print Text1 & "-";
End Sub
2.编程题:
1)编写程序,输入一个职工的工资,打印输出发给该职工的人民币张数最少的方案。
程序代码:
Public Sub Form_click()
Dim hundred As Integer '100元票面数量
Dim fifty As Integer '50元票面数量
Dim Twenty As Integer '20元票面数量
Dim ten As Integer '10元票面数量
Dim five As Integer '5元票面数量
Dim two As Integer '2元票面数量
Dim one As Integer '1元票面数量
Dim total As Integer '总计最小钞票数量
Dim X As Integer '职工工资
Dim tmp As Integer
X = Val(InputBox("输入职工工资 X=?", "输入框"))
hundred = X \ 100 '求100元票面数量
tmp = X Mod 100 ' 求剩余金额
fifty = tmp \ 50
tmp = tmp Mod 50
Twenty = tmp \ 20
tmp = tmp Mod 20
ten = tmp \ 10
tmp = tmp Mod 10
five = tmp \ 5
tmp = tmp Mod 5
two = tmp \ 2
one = tmp Mod 2
total = hundred + fifty + Twenty + ten + five + two + one
Form1.Print "100元票" & (hundred) & "张", "50元票" & Str(fifty) & "张"
Form1.Print "20元票 " & Str(Twenty) & "张", "10元票" & Str(ten) & "张"
Form1.Print "5元票" & Str(five) & "张", "2元票" & Str(two) & "张"
Form1.Print "1元票" &

Str(one) & "张"
Form1.Print
Form1.Print "-----------------------------------------------"
Form1.Print "合计票:" & Str(total) & "张"
End Sub



2)编写程序,使用InputBox函数输入两个电阻的值,求它们并联和串联的电阻值,使用MsgBox消息框输出结果,要求结果保留小数点后三位。并联和串联的电阻值计算公式如下:RP=( R1*R2)/ ( R1+R2)(并联电阻), RS =R1+R2(串联电阻)
程序代码:
Private Sub Form_Load()
Dim r1 As Single, r2 As Single, Rp As Single, Rs As Single
r1 = InputBox("请输入第一个电阻值:")
r2 = InputBox("请输入第二个电阻值:")
Rp = (r1 * r2) / (r1 + r2)
Rs = r1 + r2
MsgBox "Rp=" + Format(Str(Rp), "0.000") + ",Rs=" + Format(Str(Rs), "0.000")
End Sub

编程题:
设计"健康秤"程序,界面设计如下图所示。具体要求如下:
(1)将两个文本框的文字对齐方式均设置为右对齐,最多接受 3 个字符,均不接受非数字键;
(2)单击 "健康状况"按钮后,根据计算公式将相应提示信息通过标签显示在按钮旁边,如下图所示。
计算公式为:标准体重=身高 -105
体重高于标准体重的 1.1 倍为偏胖,提示 "偏胖,注意饮食";
体重低于标准体重的 90 %为偏瘦,提示 "偏瘦,增加营养";
其他为正常,提示“正常,继续保持”。
程序代码:
Private Sub Command1_Click()
Dim sg As String, tz As String, bz As String
sg = Text1.Text
tz = Text2.Text
bz = sg - 105
If tz / bz >= 1.1 Then
Label5.Caption = "偏胖,注意饮食!"
ElseIf tz / bz <= 0.9 Then
Label5.Caption = "偏瘦,增加营养!"
Else
Label5.Caption = "正常,继续保持!"
End If
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0
End Sub
1.写出程序执行结果:
运行后单击Command1后,输入12345678,写出窗体上的输出结果。
Private Sub Command1_Click()
Dim x As Long, y As String
x = InputBox("输入一个数")
Do While x <> 0
y = y & x Mod 10
y = x \ 10 Mod 10 & y
x = x \ 100
Print y
Loop
End Sub

结果:
78
5786
357864
13578642


2.填空题:
1)下面程序的功能是计算
F=1-1/(2×3)+1/(3×4)-1/(4×5)+…+1/(19×20)
Private Sub Form_Click()
dim f as Single ,i as Integer ,sign as Integer
① sign=-1
f=1
② for i=2 to 19
f=f+sign/(i*(i+1))
③ sign=-sign
Next i
Print 〝f=〞;f
2)下面的程序是在一个字符串变量中找“at”,并用消息框给出查找结果的报告:没有找到或找到的个数。程序如下:
Private Sub Form_Click()
Dim str1 As String '在字符串str1中查找“at”
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-1
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
3.编程题:
1)编程计算:1!+2!+3!+…+9!
程序代码:
Private Sub Form_Click()
Dim i%, T!, S!
T = 1
For i = 1 To 9
T = T * i
S = S + T
Next i
Print "S="; S
End Sub

2) 求sin(x)= x - x^3/3! + x^5/5! - x^7/7! + ……… (精度为0.000001)
程序代码:
Private Sub Command1_click
Dim x AS Double
Dim sum AS Double
Dim t AS double
Dim i AS integer
Sum= 0
X = inputBox(“请输入X的值“)
t = X
i = 1
DO
sum = sum + t
t = -t * X * X/(2*I)/(2*I+1)
I=I+1
Loop While Abs(t)>0.000001
Print sum
End Sub

编程序,按下图形式打印输出九九乘法表,要求在窗体上输出既可.
程序代码:
Private Sub Command1_Click()
Dim i%, j%, a$
For i = 1 To 9
For j = 1 To i
a = CStr(j) & "×" & CStr(i) & "=" & CStr(i * j)
a = a & Space$(8 - Len(a))
Print a;
Next j
Print
Next i

End Sub


打印左下三角
Private Sub Command1_Click()
Dim i%, j%, a$
For i = 1 To 9
For j = 1 To i
a = i & "×" & j & "=" & i * j
a = a & Space(8 - Len(a))
Print a;
Next j
Print
Next i

End Sub
打印右下三角
Private Sub Command1_Click()
Dim i%, j%, a$
For i = 1 To 9
Print tab((9-i)*9+1);
For j = 1 To i
a = i & "×" & j & "=" & i * j
a = a & Space(8 - Len(a))
Print a;
Next j
Print
Next i

End Sub

打印矩形
Private Sub Command1_Click()
Dim i%, j%, a$
For i = 1 To 9
For j = 1 To 9
a = i & "×" & j & "=" & i * j
a = a & Space(8 - Len(a))
Print a;
Next j
Print
Next i

End Sub
作业七(必做)
编程题:
编一程序,用 InputBox 函数输入 12 个整数,赋值给 3 × 4 的二维数组,求出其中最大元素及它的行、列坐标,并将数组按行(矩阵形式)输出到窗体,最大元素及行、列下标输出在数组的下方。
程序代码:
Private Sub Form_Click()
Dim a(1 To 3, 1 To 4) As Integer, i%, j%, max%, imax%, jmax%
For i = 1 To 3
For j = 1 To 4
a(i, j) = Val(InputBox("Input a data"))
Next j
Next i
For i = 1 To 3
For j = 1 To 4
Print a(i, j);
Next j
Print
Next i
max = a(1, 1)
imax = 1
jmax = 1
For i = 1 To 3
For j = 1 To 4
If max < a(i, j) Then
max = a(i, j)
imax = i
jmax = j
End If
Next j
Next i
Print "The max number:"
Print max; imax; jmax
End Sub

1.填空题:
1)下列程序将给定的十六进制整数字符串转换为十进制数。
Private Sub F

orm_Click()
Dim st As String, dem As Long
st = "3E8"
① dem=Convert(st)
Print st; "=>"; dem
End Sub
Private Function convert(s As String) As Long
Dim n%, i%, subc As String * 1, p&
n = Len(s)
p = 0
For i = 1 To n
Subc= ② Mid(s,i,1)
Select Case subc
Case "0" To "9"
p = p * 16 + Val(subc)
Case "A" To "F"
p=p*16 +_ ③_10+Asc(subC)-Asc("A")
End Select
Next i
④__Convert=p _
End Function
2)下面的total()过程用于计算s=7+77+777+…+(n个7组成的数)。
Private Sub total()
Const n = 20
Dim s As Single, i As Integer
For i = 1 To n
S=s+ ① number(i)
Next i
Form1.Print "s="; s
End Sub
Public Function number( ② n as integer ) As Single
Dim i As Integer
number = 0
For i = 1 To n
③ number=10*number + 7
Next i
End Function
2.编程题:
1)编写递归函数计算两个正整数的最大公约数,递归公式为

程序代码:
Function gcd(m%, n%)
If m Mod n = 0 Then gcd = n Else gcd = gcd(n, m Mod n)
End Function
Private Sub Form_Click()
Print gcd(36, 81)
End Sub
2)设计一个删除子串的函数过程Delstr(s1,s2),其功能是将字符串s1中出现的s2子字符串删去。程序运行效果如下图所示。
程序代码:
Private Sub Command1_Click()
Dim T1 As String
Dim T2 As String
T1 = Text1.Text
T2 = Text2.Text
MsgBox DelStr(T1, T2)
End Sub
Private Function DelStr(S1 As String, S2 As String) '这个就是delstr函数
Dim Sa As String
Dim Sb As String
Dim i As Long
Sa = S1
Sb = S2
Do
DoEvents
i = InStr(Sa, Sb)
If i <> 0 Then
Sa = Left(Sa, i - 1) & Right(Sa, Len(Sa) - (Len(Sb) + i - 1))
Else
Exit Do
End If
Loop
DelStr = Sa
End Function
Private Sub Form_Click()
Dim a As String, b As String
a = "dsklg 67mweeankjg mwekat"
b = "mwe"
Print "a字符串是:" & a
Print "b字符串是:" & b
a = Replace(a, b, "")
Print "得到的a字符串是:" & a
End Sub

作业九(必做)
编程题:
设计一个家电提货单管理程序。 程序运行界面如下图所示。具体要求:
(1)根据选项中选择的家电及数量,单击"确定"后,将选择的清单及总价在列表框中列出。
(2)每选择一种家电,光标 自动定位在相应的文本框中,取消选择时,相应的文本框自动清空。
(3)"清除"按钮用于清空列表框中的项目。
(4)所有文本框只接受数字

程序代码:
Private Sub Command1_Click()
Dim i As Integer
Dim sum As Long, n%
Dim title As String, price As Integer
sum = 0
For i = 0 To 4
Select Case i
Case 0
title = "电视机"
price = 3580
Case 1
title = "微波炉"
price = 660
Case 2
title = "电冰箱"
price = 1850
Case 3
title = "DVD"
price = 2880
Case

4
title = "分体空调"
price = 5500
End Select
If Check1(i).Value = 1 And Text1(i).Text <> "" Then
List1.AddItem title & Text1(i).Text & "台"
sum = sum + Val(Text1(i)) * price
n = n + Val(Text1(i))
End If
Next i
If sum <> 0 Then
List1.AddItem "共: " & n & "台 " & "合计金额:" & sum & "元"
End If
End Sub

Private Sub Command2_Click()
List1.Clear
Text1(Index) = ""
Check1(Index).Value = 0
End Sub
Private Sub Text1_KeyPress(Index As Integer, KeyAscii As Integer)
If Chr(KeyAscii) > "9" Or Chr(KeyAscii) < "0" Then
KeyAscii = 0
End If
End Sub



1.判断题
(1)驱动器列表框、目录列表框是下拉列表框。√
(2)驱动器列表框、列表框目录、文件列表框之间可以自动实现关联。×
(3)Visual Basic中按文件的访问方式不同,将文件分为文本文件、随机文件和ASCII文件。√
(4)随机文件、二进制文件的写操作都使用Get语句完成。×
(5)使用Output方式打开一个已存在的文件将会创建一个新的顺序文件。√
2.选择题
(1)下面的叙述不正确的是 C 。
(A)顺序文件的数据是以字符(ASCII码)的形式存储的
(B)顺序文件的结构简单
(C)能同时对顺序文件进行读写操作
(D)对顺序文件的操作只能按一定顺序执行
(2)文件号最大可取的值为 B 。
(A)255 (B)511 (C)256 (D)512
(3)Kill语句在Visual Basic中的功能是 D 。
(A)杀病毒 (B)清屏幕 (C)清内存 (D)删除文件
(4)执行语句Open”C:\Filel.dat”For lnput As #1之后,系统 C 。
(A)在C盘根目录下建立名为Filel.dat的顺序文件
(B)将C盘根目录下的名为Filel.dat的文件内容读人内存
(C)将数据存放在C盘根目录下的名为Filel.dat的文件中
(D)将某个磁盘文件的内容写入C盘目录下的名为Filel.dat的文件中
(5)改变驱动器列表框的Driver属性将激活 A 事件。
(A) Change (B) KeyDown (C) Click (D) MouseDown
编程题
设计应用程序,统计某个文本文件中各英文字母出现的次数,不区分大小写,并将结果打印到窗体上。(运行结果如下图所示)
程序代码:
Private Sub cmdCount_Click()
Dim strIn As String, Count As Integer
'打开文件进行统计
Open txtFile For Input As #1
Count = 0 '计数器清零
Do While Not EOF(1)
strIn = Input(1, #1) '一次读出一个字符
If LCase(strIn) >= "a" And LCase(strIn) <= "z" Then Count = Count + 1 '识别字母并统计
Loop
Close #1
Print Count
End Sub

Private Sub cmdOpen_Click()
txtFile.Text = ""
CmmDlog.DialogTitle = "打开文件"
CmmDlog.Filter = "文本文件(*.txt)|*.txt"
CmmDlog.Action = 1
txtFile = CmmDlog.FileName
End Sub





作业十一
1.判断题
(1)

在设计时可以改变通用对话框的大小。×
(2)在“打开”对话框内过滤文件类型的属性是古Filter属性。√
(3)在使用“字体”对话框之前必须设置Flag属性。√
(4)在一个窗体的程序代码中不可以访问另一个窗体上控件的属性。×
2.选择题
(1)要使窗体在运行时不可改变大小且没有最大化和最小化按钮,要对窗体的 D 属性进行设置。
(A)MaxButton (B)Width
(C)MinButton (D)BorderStyle
(2)以下叙述中错误的是 B 。
(A)一个工程可以包括多个窗体文件
(B)在一个窗体文件中用Private定义的通用过程能被其他窗体调用
(C)在设计Visua lBasic程序时,窗体、标准模块及类模块等需要分别保存为不同类型的磁盘文件
(D)全局变量可以在标准模块中定义,也可以在窗体模块的通用声明段中定义
(3)在下列关于通用对话框的叙述中,错误的是 C
(A)CommonDialogl.ShowFont显示字体对话框
(B)在打开或另存为对话框中,用户选择的文件名可以经FileTitle属性返回
(C)在打开或另存为对话框中,用户选择的文件名及其路径可以经FileTitle属
性返回
(D)通过对话框可以用来制作和显示帮助对话框
(4)要退出Form2窗体,应使用 D 语句。
(A)Form2.Unload (B)Hide Form2
(C)Unload.Form2 (D)Unload Form2
编程题:
设计一个程序,用于打开1个windows应用程序,如打开“记事本”“画图”、“计算器”等。
程序代码:
Private Sub Command1_Click()
CommonDialog1.Action = 1 ′调用打开对话框
Call Shell(CommonDialog1.FileName) ′执行所选择的文件
End Sub

Private Sub Command2_Click()
End
End Sub

作业十二
1.判断题
(1)每个菜单都必须有Name属性。√
(2)显示弹出菜单的方法是PopupMenu。√
2.选择题
(1)用菜单编辑器设计菜单时,必需输入的项是 D
(A)快捷键 (B)索引 (C)标题 (D)名称
(2)下列操作中,不能打开菜单编辑器的操作是 D
(A)按Ctrl+E键
(B)单击工具栏中的“菜单编辑器”按钮
(C)执行工具菜单中的“菜单编辑器”命令
(D)按Alt+E键
(3)以下叙述中错误的是 A
(A)在同一窗体的菜单项中,不允许出现标题相同的菜单项
(B)在菜单的标题栏中,“&”所引导的字母指明了访问该菜单的访问键
(C)程序运行过程中,可以重新设置菜单的Visible属性
(D)弹出式菜单可在菜单编辑器中定义
编程题:
编写程序。通过菜单选择,对字体
程序代码:
Private Sub menus_Click()
Label1.FontName = "宋体"
End Sub
Private Sub menuh_Click()
Label1.FontName = "黑体"
End Sub
Private Sub menubig_Click()
Label1.FontSize = 24
End Sub
Private Sub menulitt_Click()
Label1.FontSize = 16
End Sub
Private Sub menumidd_Click()
Label1.FontSize = 12
End Sub

Private Sub Form_MouseUp(Button As

Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
PopupMenu number
End If
End Sub


相关文档