VB程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
教程课后参考答案
杨飞 整理 第 1 页 共 16 页 8/10/2010
VB程序设计教程课后参考答案 习题一
一、填空题
1( 对象、事件驱动
2( 窗体、控件
3( 属性
4( 属性窗口、编程设置
5( 事件过程
6( 对象名、下划线、事件名
7( Form_click
8( Print form1.print “我的VB”
9( 主窗口、属性、工具箱、代码、窗体、工程资源管理
10( 菜单、快捷键
二、选择题
1(C 2. A 3. B 4. B 5. D 6. B C 7. A
三、简答题(略)
习题二
一、选择题
1. D 2. C 3. C 4. B 5. C 6. B 7. C
8. B 9. A 10. B 11. B 12. C 13. D 14. B
15. A 16. A 17. A 18. A 19. B 20. C 21. A
22. B 23. B 24. A 25. C 26. A 27. B 28. B
29. C 30. B 31. D 32. D 33. C 二、填空题
1( Controlbox、Maxbutton、Minbutton
2( Multiline TRUE
3( ******
4( 单文档界面(SDI) 多文档界面(MDI)
5( 窗体显示
6( Passwordchar
7( _change()
三、编程题(略)
习题三
一、基础知识题(略)
二、填空题
1( 整型、长整型、单精度、双精度
2( (x mod 10)*10+x\10
3( Sin(3.14*15/180)+sqr(x+exp(3))/abs(x-y)-log(3*x)
4( (a+b)/(1/(c+5)-c*d/2)
5( X mod 5=0 or x mod 9=0
6( False
7( -4、3、,3、3、,4、4
8( CDEF
9( GBCDEFA
杨飞 整理 第 2 页 共 16 页 8/10/2010
10( TRUE
11( 变量、属性
12( „ _ :
13( (略)
14( “” ,
15( Public、通用/模块、Dim、static、private
16( + 、 &、 +
17( Now() 、 time()、 日期
18( Inputbox()、字符串、val()
19( Msgbox()
三、选择题
1(B 2. C 3. A 4. B D此题有误 5. B 6. A 7. D 8. B 9. B 10. C 11. D 12. B 13. C 14. B 15. A 16. C 17.A 18. D 19. A 20. D 21. A 22. C 23. C 24. D 25. A 26. D 27. D 28. B 29. C 30. B 31. C 32. B 33. C D此题有误 34. C 35. A
36. D 37. C 38. A 39. B 40. A 41. C 42. C 43. D 44. C 45. D 46. A 四、编程题
1.
Option Explicit
Private Sub Command1_Click()
Dim a%, b%, c%, delta%
Dim x1#, x2#, x#
a = Val(InputBox("please input data to a:", "info", 1))
b = Val(InputBox("please input data to b:", "info", 1))
c = Val(InputBox("please input data to c:", "info", 1))
If a = 0 And b <> 0 Then
x = -c / b
Print "所构成的方程是:" & b & "x" & "+" & c & "=0"
Print "该一元一次方程的根是:", x
End If
If a = 0 And b = 0 Then
Print "很抱歉,不能构成合法的方程~"
End If
If a <> 0 Then
delta = b * b - 4 * a * c
If delta >= 0 Then
x1 = (-b + Sqr(delta)) / (2 * a)
x2 = (-b - Sqr(delta)) / (2 * a)
2 Print "所构成的方程是:" & a & "x" & "+" & b & "x" & "+" & c & "=0"
Print "该方程的根是:"
Print "第一个根是:", x1
Print "第二个根是:", x2
Else
2 Print "所构成的方程是:" & a & " x" & "+" & b & "x" & "+" & c & "=0"
杨飞 整理 第 3 页 共 16 页 8/10/2010
Print "该方程有两个虚根:"
Print "第一个虚根是:" & -b / (2 * a) & "+" & Sqr(Abs(delta)) / (2 * a) & "i"
Print "第二个虚根是:" & -b / (2 * a) & "," & Sqr(Abs(delta)) / (2 * a) & "i"
End If
End If
End Sub
2.
Option Explicit
Private Sub Command1_Click() Dim i%, s%
s = 0
For i = 1 To 99 Step 2
s = s + i
Next
Print s
End Sub
3.
Option Explicit
Private Sub Command1_Click() Dim i%
Dim s#
s = 0
For i = 1 To 100
s = s + 1 / i * (-1) ^ (i + 1) Next
Print s
End Sub
4.
Option Explicit
Private Sub Command1_Click() Dim i%, n%
Dim t#, s#
n = Val(InputBox("please input data:", "info", 5))
s = 0
t = 1
For i = 1 To n
t = t * i
s = s + t
Next
Print s
End Sub
杨飞 整理 第 4 页 共 16 页 8/10/2010
5.
Option Explicit
Private Sub Command1_Click() Dim a%, b%, c%
Dim p#, s#
a = Val(InputBox("please input data to a:", "info", 3))
b = Val(InputBox("please input data to b:", "info", 4))
c = Val(InputBox("please input data to c:", "info", 5))
If (a + b > c And Abs(a - b) < c) Or (a + c > b And Abs(a - c) < b) Or ((b + c) > a And Abs(b - c) <
a) Then
p = (a + b + c) / 2
s = Sqr(p * (p - a) * (p - b) * (p - c))
Print "三角形的面积是:" & s
Else
Print "很抱歉,不能构成合法的?三角形~"
End If
End Sub
6.
Option Explicit
Private Sub Command1_Click() Dim ji%, tu%
For ji = 1 To 27
For tu = 1 To 27
If ji * 2 + tu * 4 = 78 And ji + tu = 27 Then
Print "鸡的个数是:" & ji
Print "兔的个数是:" & tu
End If
Next
Next
End Sub
7.
Option Explicit
Private Sub Command1_Click() Dim i%
Dim s#, t#
s = 10
t = 10
For i = 1 To 7
t = t * 0.4
s = s + t * 2
Next
Print "第八次落地共经过的路径是:" & s
杨飞 整理 第 5 页 共 16 页 8/10/2010
End Sub
8.
Option Explicit
Private Sub Command1_Click() Dim i%, fs%, max%, min%, s% Dim ave#
fs = Val(InputBox("please input score:", "info", 90))
s = fs
max = fs
min = fs
For i = 2 To 7
fs = Val(InputBox("please input score:", "info", 90))
If max < fs Then
max = fs
End If
If min > fs Then
min = fs
End If
s = s + fs
Next
ave = (s - max - min) / 5 Print "该运动员的平均成绩是:" & ave
End Sub
9. „同学们,这道题方法很多,主要考察你对选择结构的理解,我给出其中一种方法。
Option Explicit
Private Sub Command1_Click() Dim x%, y%, z%
x = Val(Text1.Text)
y = Val(Text2.Text)
z = Val(Text3.Text)
If x > y Then
If x < z Then
Text4.Text = z
Text5.Text = x
Text6.Text = y
Else
If y > z Then
Text4.Text = x
Text5.Text = y
Text6.Text = z
Else
Text4.Text = x
Text5.Text = z
杨飞 整理 第 6 页 共 16 页 8/10/2010
Text6.Text = y
End If
End If
Else
If y < z Then
Text4.Text = z
Text5.Text = y
Text6.Text = x
Else
If x < z Then
Text4.Text = y
Text5.Text = z
Text6.Text = x
Else
Text4.Text = y
Text5.Text = x
Text6.Text = z
End If
End If
End If
End Sub
Private Sub Form_Load() Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
End Sub
10(
Option Explicit
Private Sub Command1_Click()
Dim x%, y%, m%
x = Val(Text1.Text) y = Val(Text2.Text) m = x Mod y
Do While m <> 0
x = y
y = m
m = x Mod y
Loop
Text3.Text = y
End Sub
杨飞 整理 第 7 页 共 16 页 8/10/2010 Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub
习题四
一、选择题
1(B 2. C 3. D 4. A 5. D 6. C 7. D 8. B
二、填空题
1( b(i)=a(i-1)+a(i) print
2( Variant
3( M=lbound(a,2) to n next i
4( 20
5( 从大到小排序(这是一种比较好的插入排序法,希望同学们能够掌握)
6( Preserve
7( A(k)=min
8( 空的变体型
9( J=ubound(a,2) flag=false:exit for
10( Dim aa(9,4) as integer 三、简答题(略)
四、编程题
1(
Option Explicit
Private Sub Command1_Click() Dim zfc As String, zm As String, i%, lenth%, n%
zfc = InputBox("please input string:", "info", "you are good student")
lenth = Len(zfc)
n = 0
For i = 1 To lenth
zm = Mid(zfc, i, 1) „取每一个字母
If UCase(zm) = "A" Or UCase(zm) = "E" Or UCase(zm) = "O" Or UCase(zm) = "I" Or _
UCase(zm) = "U" Then
n = n + 1
End If
Next
MsgBox "该字符串的元音字母个数是" & n & "个"
End Sub
2(?这道题题目有问题,应改为“与其转置矩阵相加”
Option Explicit
Option Base 1
Private Sub Command1_Click() Dim aa(3, 3) As Integer, bb(3, 3) As Integer, cc(3, 3) As Integer
Dim i%, j%
杨飞 整理 第 8 页 共 16 页 8/10/2010
For i = 1 To 3
For j = 1 To 3
aa(i, j) = Rnd * 100 „我假设为100以内的任意整数
Next
Next
Call disp(aa) „调用函数,显示aa数组的内容 For i = 1 To 3
For j = 1 To 3
bb(j, i) = aa(i, j)
Next
Next
Call disp(bb) „调用函数,显示bb数组的内容 For i = 1 To 3
For j = 1 To 3
cc(i, j) = aa(i, j) + bb(i, j)
Next
Next
Call disp(cc) „调用函数,显示cc数组的内容 End Sub
Private Sub Form_Load() Randomize
End Sub
Sub disp(sz() As Integer) „专门编写一个显示数组的函数,希望同学们在题目中经常使用
Dim i%, j%
For i = 1 To 3
For j = 1 To 3
Print sz(i, j);
Next
Print
Next
End Sub
3. ?这道题题目有问题,应改为“2,16任意进制的数值” Option Explicit
Option Base 1
Private Sub Command1_Click() Dim x%
Form1.Cls „清除窗体
x = Val(InputBox("please input data:", "info", 20))
Call ejz(x) „调用函数求解二进制
Print „换行
Call sljz(x) „调用函数求解十六进制
End Sub
Sub ejz(ByVal m As Integer)
杨飞 整理 第 9 页 共 16 页 8/10/2010
Dim aa(30) As Integer, i%, j%
i = 1
Do While m \ 2 <> 0
aa(i) = m Mod 2
m = m \ 2
i = i + 1
Loop
aa(i) = m Mod 2
Print "转换后的二进制数是:";
For j = i To 1 Step -1
Print aa(j);
Next
End Sub
Sub sljz(ByVal m As Integer) „注意十六进制数码的特殊性
Dim aa(30) As String, i%, j%
i = 1
Do While m \ 16 <> 0
Select Case m Mod 16 „想一想,为什么要这样转换
Case 10
aa(i) = "A"
Case 11
aa(i) = "B"
Case 12
aa(i) = "C"
Case 13
aa(i) = "D"
Case 14
aa(i) = "E"
Case 15
aa(i) = "F"
Case Else
aa(i) = CStr(m Mod 16)
End Select
m = m \ 16
i = i + 1
Loop
Select Case m Mod 16
Case 10
aa(i) = "A"
Case 11
aa(i) = "B"
Case 12
aa(i) = "C"
Case 13
aa(i) = "D"
Case 14
aa(i) = "E"
杨飞 整理 第 10 页 共 16 页 8/10/2010
Case 15
aa(i) = "F"
Case Else
aa(i) = CStr(m Mod 16)
End Select
Print "转换后的十六进制数是:";
For j = i To 1 Step -1
Print aa(j);
Next
End Sub
„这道题,请同学们认真思考,学会其它各种进制转换的算法。
4. 本道题我给出两种方法,希望同学们通过该题目,熟悉函数的运用。 方法一:
Option Explicit
Option Base 1
Private Sub Command1_Click() Dim i%, str1 As String, str() As String, str2 As String, length As Integer
str1 = InputBox("请输入第一个字符串:", "info", "exam") length = Len(str1)
ReDim str(length) „重新调整数组大小,目的是为排序起作用 For i = 1 To length
str(i) = Mid(str1, i, 1) „给该数组赋值,换句话说,让第一个字符串放入数组中 Next
Call sort(str, length) „调用函数对第一个字符串排序
Print "第一个字符串排序后的结果:"
Call disp(str, length) „调用函数显示第一个字符串排序后的结果 str2 = InputBox("请输入第二个字符串:", "info", "good") str1 = str1 + str2
length = Len(str1) + Len(str2) ReDim str(length) „重新调整数组大小,目的是为插入后字符串排序起作用 For i = 1 To length
str(i) = Mid(str1, i, 1) „让第一个字符串和第二个字符串放入数组中 Next
Call sort(str, length) „调用函数对插入后字符串排序
Print "插入第二个字符串后排序后的结果:"
Call disp(str, length) „调用函数显示插入后字符串排序后的结果 End Sub
Sub sort(str() As String, length As Integer)
Dim i%, j%, t As String
For i = 1 To length - 1
For j = i + 1 To length
If str(i) > str(j) Then
t = str(i)
str(i) = str(j)
杨飞 整理 第 11 页 共 16 页 8/10/2010
str(j) = t
End If
Next
Next
End Sub
Sub disp(str() As String, length As Integer)
Dim i%
For i = 1 To length
Print str(i);
Next
Print
End Sub
方法二:
Option Explicit
Option Base 1
Private Sub Command1_Click() Dim i%, str1 As String, str() As String, str2 As String, strinsert() As String, length As Integer
Form1.Cls
str1 = InputBox("请输入第一个字符串:", "info", "exam") length = Len(str1)
ReDim str(length)
For i = 1 To length
str(i) = Mid(str1, i, 1)
Next
Call sort(str, length)
Print "第一个字符串排序后的结果:"
Call disp(str, length)
str2 = InputBox("请输入第二个字符串:", "info", "good") length = Len(str1) + Len(str2) + 1 ReDim strinsert(length)
For i = 1 To Len(str1)
strinsert(i) = str(i)
Next
For i = 1 To Len(str2)
Call insert(strinsert, Mid(str2, i, 1), Len(str1) + i) ‘调用函数,逐个字符插入 Next
Print "插入第二个字符串后排序后的结果:"
Call disp(strinsert, length - 1) End Sub
Sub sort(str() As String, length As Integer)
Dim i%, j%, t As String
For i = 1 To length - 1
For j = i + 1 To length
If str(i) > str(j) Then
杨飞 整理 第 12 页 共 16 页 8/10/2010
t = str(i)
str(i) = str(j)
str(j) = t
End If
Next
Next
End Sub
Sub disp(str() As String, length As Integer)
Dim i%
For i = 1 To length
Print str(i);
Next
Print
End Sub
Sub insert(str() As String, zm As String, length%)
Dim i%, j%
For i = 1 To length - 1
If zm >= str(i) And zm < str(i + 1) Then „插入字符落在内部情况
For j = length - 1 To i + 1 Step -1
str(j + 1) = str(j)
Next
str(i + 1) = zm
Exit For
End If
If zm < str(1) Then „插入字符落在第一个位置
For j = length - 1 To 1 Step -1
str(j + 1) = str(j)
Next
str(1) = zm
End If
If zm >= str(length - 1) Then „插入字符落在最后一个位置
str(length) = zm
End If
Next
End Sub
小结:这道题有一定的难度,希望同学们在做题时应尽量考虑各种条件,要力争考虑全面。如何通过该题获取函数、数组等编程的经验,请同学们认真
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
,这题值得大家多花些时间研究,你可以使用更好的方法。
习题五
一、选择题
1. A 2. B 3. A 4. A 5. A 6. D 7. B 8. C 9. B 10. C 11. C 12. D 13. C 14. C 15. C 16. D 17. A 18. B 19. D 20. A 21. A 22. C 23. C
二、填空题
杨飞 整理 第 13 页 共 16 页 8/10/2010
1(SDI MDI
2(对象.属性名,属性值
3(Form1.show
4.选中
5(Additem removeitem 6(复选框
7(30000
8(Aa=Inputbox(“请输入学号”,”查询系统”)
MsgBox "没有搜索到该生信息", vbOKOnly, "查询结果"
9. 0 1 2 3 10 Mdichild
11. MDI
12. 1 多个
13( Load load form1
14. Mdiform1.arrage 排列方式
15(可以访问多个文档窗体
16(MDIform
三、应用题(略)
习题六
一、填空题
1( 下拉式、弹出式
2( &
3( -
4( Visible
5( Enabled
6( 弹出快捷菜单
二、选择题
1(A 2. D 3. B 4. B 5. B 6. A 7. C
三、简答题(略)
四、应用题(略)
习题七
一、填空题
1. Mousemove
2. Mousedoen
3. 1
4. CTRL
5. 确定鼠标按下时所处的坐标位置 6. Enter Tab Backspace
7. 按键的Ascii码
8. 按下的物理键(本题有误,keyascii 应改为keycode)
9. Dragicon
10. drag move 二、选择题
杨飞 整理 第 14 页 共 16 页 8/10/2010 1(AC(本题题意不明确) 2. B 3. C 4. C 5. D 6. D 7. B 8. B 9. C 10. D
三、应用题(略)
习题八
一、选择题
1( D 2. A 3. B 4. D
二、阅读下面程序,写出程序的输出结果
1(
"welcome to visible basic",#2006-03-21#,#1899-12-30 15:03:30#
"welcome to visible basic",#2006-03-21#,#1899-12-30 15:03:30#
"welcome to visible basic",#2006-03-21#,#1899-12-30 15:03:30#
welcome to visible basic 06-3-21 15:03:30
welcome to visible basic 06-3-21 15:03:30
welcome to visible basic 06-3-21 15:03:30
2(
"第",1,"个数",2
"第",2,"个数",3
"第",3,"个数",5
"第",4,"个数",7
"第",5,"个数",11
"第",6,"个数",13
"第",7,"个数",17
"第",8,"个数",19
"第",9,"个数",23
"第",10,"个数",29
"第",11,"个数",31
"第",12,"个数",37
"第",13,"个数",41
"第",14,"个数",43
"第",15,"个数",47
三、简答题(略)
四、编程题
1(
Option Explicit
Private Sub Command1_Click()
Dim i As Integer, x As String, s# Open "a:\data\test.dat" For Input As #1 Line Input #1, x
s = 1
For i = 1 To Val(x)
s = s * i
Next
Close #1
Open " a:\data\test.dat " For Append As #1 Print #1, Chr(13) + Chr(10) & s
杨飞 整理 第 15 页 共 16 页 8/10/2010 Close #1
End Sub
2.
Option Explicit
Option Base 1
Public hh As String
Private Sub Command1_Click() Dim name As String, sex As String name = Text1.Text
sex = Space(4) + Text2.Text
Put #1, , name
Put #1, , sex
Put #1, , hh
Text1.Text = ""
Text2.Text = ""
Text1.SetFocus
End Sub
Private Sub Command3_Click() Close #1
End
End Sub
Private Sub Form_Load() hh = Chr(13) + Chr(10) Open "e:\aaa.txt" For Binary As #1
Put #1, , " 姓名"
Put #1, , " 性别"
Put #1, , hh
Text1.Text = "王语嫣"
Text2.Text = "女"
杨飞 整理 第 16 页 共 16 页 8/10/2010
End Sub
习题九
一、填空题
1. Data databasename recordsource 2(数据绑定 datasource datafield datasource datafield
3. recordset 表类型(dbopentable) dynaset类型(dbopendynaset) 快照类型(dbopensnapshot) 4. AbsolutePosition EOF 指向最后一条记录 nomatch 5. addnew delete update
6. movefirst movelast movenext moveprevious data控件的recordset 7(FindFirst Findlast Findnext Findprevious 8. 判断表的首部(指针无效) 判断表的尾部(指针无效)
9(Readonly
10. recordcount close
11. Data1.Recordset.Findfirst(" 出生年月=#1973/10/1#")
Data1.Recordset.FindNext (" 出生年月=#1973/10/1#")
12. Data1.Recordset.Findfirst(" 姓名=?张艳?")
Data1.Recordset.Findfirst(" 语文>85")
13. fields Data1.Recordset.Fields("销售日期") Data1.Recordset.Fields(1) 14. create drop alter
15. select insert update delete 16. 方法或函数
二、选择题
1(C 2. B 3. B 4. C 5. C 6. D 7. D 8. B 9. C 10. D 11. C 12. C 13. C 14. BC 15. C 16. B
三、应用题(略)
习题十
一、填空题
1(.OCX
2. 为其它windows公共控件存储图像
3(Imagelist
4. tooltiptext
5. 简单的 复杂的
二、选择题
1(D 2. A
请同学们掌握学习方法,认真复习。
有问题可以与我联系:fei_yang_fei@sina.com.cn