Visual Basic程序设计课后习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题 1
1. 填空题
(1) Visual Basic 是一种面向 的可视化程序设计语言,采取了 的编程机制。
(2) Visual Basic 的对象主要分为 和 两大类。
(3) 在 Visual Basic 中,用来描述一个对象外部特征的量称之为对象的 。
(4) 在 Visual Basic 中,设置或修改一个对象的属性的方法有两种,它们分别是: 和 。
(5) 在 Visual Basic 中,每个对象一般都能感知和接收多个不同的事件,并能对这些事件作出响应,其响应方式就是通过调用执行一个与之相对应的 来实现的。
(6) 在 Visual Basic 中,事件过程的名字由 、 和 所构成。
(7) 若用户单击了窗体 Form1,则此时将被执行的事件过程的名字应为:。
(8) Visual Basic 的集成开发环境主要由6个部分组成,它们分别是: 、 、 、 、 、 。
2.简答题
(1) 简述Visual Basic 的特点
(2) 什么是对象的属性、事件和方法?
(3) Visual Basic 如何完成对用户操作的响应?
(4) 什么是事件? 事件过程的一般格式是怎样的?如何编写对象的事件过程?
习题 2
2.1 说明下列哪些是Visual Basic 合法的直接常量,并分别指出它们的类型。
100.0 %100 1E1 123D3 123,456 0100
“ASDF” “1234.5” #2004/10/7# 100# π
&O78 &H123 True T -1123! 345.54#
2.2 下列数据哪些是变量,哪些是常量?是什么类型的常量?
Name “name” False ff “11/16/99” cj
“120” n #11/12/2004# 12.345
2.3 下列符号中,哪些可以是Visual Basic 的合法变量名?
A123 a12_3 123_a a,123 a 123 Integer
XYZ False Sin(x) 变量名 sinx π
2.4 把下列数学表达式写成Visual Basic 表达式:
(1)5||z y x ++ (2)6)1(xy +
(3)xy y x 310+ (4)a ac
b b 242-+-
(5)3211111r r r ++ (6)110ln 45sin 10++++y x e
2.5 写出下列表达式的值:
(1)123 + 23 Mod 10 \ 7 + Asc("A")
(2)Int(68.555 * 100 + 0.5) / 100
(3)#11/22/2004# - 10
(4)"ZXY" & 123 & "abc"
2.6 设a=7,b=3,c=4,求下列表达式的值:
(1)a + 3 * c (2)a ^ 2 / 4
(3)a / 2 + 3 \ 2 (4)a Mod 3 + b ^ 3 / c \ 5
2.7 写出下列函数的值:
(1)Int(-3.14159) (2)Fix(-3.14159)
(3)Sqr(Sqr(81)) (4)Len("Visual Basic 程序设计")
(5)Int(Abs(99 - 100) / 2) (6)Sgn(7 * 3 + 2)
(7)LCase("Hellow VB!") (8)Mid("Hellow VB!", 4, 3)
(9)Left("Hellow VB!", 3) (10)Val("16个加23个")
(11)Str(-459.55) (12)UCase("Visual Basic")
2.8 选择题
(1)可以同时删除字符串前导和尾部空格的函数是 。
A. Ltrim
B. Rtrim
C. Trim
D. Mid
(2)函数Int(Rnd(1) * 10)是在哪个范围产生随机整数 。
A. (0,1)
B. (0,9)
C. (1,10)
D. (1,9)
(3)数学式子sin25º写成Visual Basic 表达式是 。
A.Sin25
B. Sin(25)
C. Sin(25º)
D. Sin(25*3.14/180)
(4)表达式16/4 – 2^3 * 8/4 Mod 5\2的值是 。
A. 14
B. 4
C. 20
D. 2
(5)数学关系式103<≤x 表示成正确的VB 表达式为 。
A. 3<= x <10
B. x >= 3 And x<10
C. x>=3 Or x<10
D. 3<= x And <10
(6)已知A=”12345678”,则表达式Val(Left(a, 4) + Mid(a, 4, 2))的值是 。
A. 123456
B. 123445
C. 8
D. 6
(7)表达式Len("123程序设计ABC")的值是 。
A. 10
B. 14
C. 20
D. 17
(8)表达式LenB("123程序设计ABC")的值是 。
A. 10
B. 14
C. 20
D. 17
(9)下面正确的赋值语句是 。
A. x+y=30
B. y=x+30
C. y=π*r*r
D. 3y=x+1
(10)为了给x ,y ,z 三个变量赋初值1,正确的赋值语句是 。
A. x=1: y=1: z=1
B. x=1, y=1, z=1
C. x=y=z=1
D. x,y,z=1
(11)赋值语句g = 123 + Mid("123456", 3, 2)执行后,变量g 中的值是 。
A. “12334”
B. 123
C. 12334
D. 157
(12)赋值语句g = 123 & Mid("123456", 3, 2)执行后,变量g 中的值是 。
A. “12334”
B. 123
C. 12334
D. 157
(13)如果x 是一个正实数,对x 的第3位小数四舍五入的表达式是 。
A. 0.01 * Int(x + 0.005)
B. 0.01 * Int(100 * (x + 0.005))
C. 0.01 * Int(100 * (x + 0.05))
D. 0.01 * Int(x + 0.05)
(14)下列哪组语句可以将变量a ,b 的值互换 。
A. a=b: b=a
B. a=a+b: b=a-b: a=a-b
C. a=c: c=b: b=a
D. a=(a+b)/2: b=(a-b)/2
(15)下列四个字符串进行比较,最小的是 。
A. “9977”
B. “B123”
C. “Basic”
D. “DATA”
(16)下列逻辑表达式中,其值为True 的是 。
A. “b” > “ABC”
B. “THA T” > “THE”
C. 9 > “H”
D. “A” > “a”
(17)表达式a+b=c 是 。
A. 赋值表达式
B. 字符表达式
C. 算术表达式
D. 关系表达式
(18)在下列表达式中,非法的是 。
A. a=b+c
B. a>b+c
C. a ≠b>c
D. a<b+c
(19)语句Print Format (“HELLO”, “<”) 的输出结果是 。
A. HELLO
B. hello
C. He
D. he
(20)MsgBox 函数的返回值的类型是 。
A. 整数
B. 字符串
C. 逻辑值
D. 日期
(21)用语句Dim A(-3 to 5) As Long 定义的数组元素个数是 。
A. 7
B. 8
C. 9
D.10
(22)用语句Dim A(3, -3 to 0,3 to 6) As Long 定义的数组元素个数是 。
A. 12
B. 27
C. 64
D.80
2.9 程序阅读题
(1)执行下面程序段后,变量c$的值为。
a = "学习Visual Basic Programming"
b = "我们"
c$ = b & "喜欢" & UCase(Mid(a, 10, 5))
(2)执行下面程序后,显示的结果是。
Private Sub Form_Click()
Dim x As Integer
x = Int(Rnd) + 4
Select Case x
Case 5
Print "优秀"
Case 4
Print "良好"
Case 3
Print "及格"
Case Else
Print "不及格"
End Select
End Sub
(3)执行下面程序段后,变量x的值为。
Dim x As Integer
x = 5
For i = 1 To 20 Step 3
x = x + i \ 5
Next i
(4)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim x As Integer
For i = 1 To 3
For j = 1 To i
For k = j To 3
x = x + 1
Next k
Next j
Next i
Print x
End Sub
(5)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim x As Integer
x = 0
Do While x < 50
x = (x + 2) * (x + 3)
n = n + 1
Loop
Print "x="; x; "n="; n
End Sub
(6)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim x As Integer, a As Integer
x = 0
For j = 1 To 5
a = a + j
Next j
x = j
Print x, a
End Sub
(7)以下程序的循环次数是。
For j = 8 To 35 Step 3
Print j;
Next j
(8)执行下面程序输入4后,程序输出的结果是。
Private Sub Form_Click()
x = InputBox(x)
If x ^ 2 < 15 Then y = 1 / x
If x ^ 2 > 15 Then y = x ^ 2 + 1
Print y
End Sub
(9)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim sum As Integer
sum% = 19
sum = 2.23
Print sum%; sum
End Sub
(10)执行下面程序后,输出的结果是。
Private Sub Form_Click()
a = 100
Do
s = s + a
a = a + 1
Loop Until a > 100
Print a
End Sub
(11) 执行下面程序后,输出的结果是。
Private Sub Form_Click()
a = "ABCD"
b = "efgh"
c = LCase(a)
d = UCase(b)
Print c + d
End Sub
(12)执行下面程序后,输出的结果是。
Private Sub Form_Click()
x = 2: y = 4: z = 6
x = y: y = z: z = x
Print x; y; z
End Sub
(13)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim count As Integer
count = 0
While count < 20
count = count + 1
Wend
Print count
End Sub
(14)执行下面程序后,输出的结果是。
Private Sub Form_Click()
a = "*":
b = "$"
For k = 1 To 3
x = Str(Len(a) + k) & b
Print x;
Next k
End Sub
(15)执行下面程序后,输出的结果是。
Private Sub Form_Click()
k = 0: a = 0
Do While k < 70
k = k + 2
k = k * k + k
a = a + k
Loop
Print a
End Sub
(16)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim M(10) As Long, N(10) As Long
i = 3
For t = 1 To 5
M(t) = t
N(i) = 2 * i + t
Next t
Print N(i); M(i)
End Sub
A. 3 11
B. 3 15
C. 11 13
D. 15 3 (17)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim a()
a = Array(1, 2, 3, 4)
j = 1
For i = 3 To 0 Step -1
s = s + a(i) * j
j = j * 10
Next i
Print s
End Sub
A. 1234
B.4321
C. 12
D. 34
(18)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim M(10)
For k = 1 To 10
M(k) = 11 - k
Next k
x = 6
Print M(2 + M(x))
End Sub
A. 2
B. 3
C. 4
D. 5
(19)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim a(10) As Integer, p(3) As Integer
k = 5
For i = 1 To 10
a(i) = i
Next i
For i = 1 To 3
p(i) = a(i * i)
Next i
For i = 1 To 3
k = k + p(i) * 2
Next i
Print k
End Sub
A. 33
B. 28
C. 35
D. 37
(20)执行下面程序后,输出的结果是。
Private Sub Form_Click()
Dim a(10, 10) As Integer
For i = 2 To 4
For j = 4 To 5
a(i, j) = i * j
Next j
Next i
Print a(2, 5) + a(3, 4) + a(4, 5)
End Sub
A. 22
B. 42
C. 32
D. 52
2.10 填空题
(1)填空,使得程序运行后,能在窗体上打印如图所示的图案。
Private Sub Form_Click()
Print
For i = 1 To 4
Print Tab(8 - i);
For j = 1 To 8
Print "*";
(1)
Print
Next i
End Sub
(2)下面程序的功能是利用随机函数产生10个(1~100)之间的随机整数,打印其中能被5整除的数并求其和,请用正确的内容填空。
Private Sub Form_Click()
Dim sum As Integer, x As Integer
For i = 1 To 10
x = Int(Rnd * 100 + 1)
If (2)= 0 Then
sum = sum + x
Print "x="; x
End If
Next i
If sum <> 0 Then
Print "sum="; sum
End If
End Sub
(3)用正确的内容填空,使得以下程序能够找出50以内所有能构成直角三角形的整数。
Private Sub Form_Click()
Dim a As Integer, b As Integer
Dim c As Single
For a = 1 To 50
For b = a To 50
c = Sqr(a ^ 2 + b ^ 2)
If (3)Then Print a, b, c
Next b
Next a
End Sub
(4)用正确的内容填空,使得以下程序能够计算1+1/3+1/5+……+1/(2N+1),直到1/(2N+1)小于10-5。
Private Sub Form_Click()
sum = 1: n = 1
Do
n = n + 2
temp = 1 / n
sum = sum + temp
If temp < 0.00001 Then (4)
Loop
Print "N="; n
Print "sum="; sum
End Sub
(5)某大奖赛,有7位评委给参赛选手打分。
以下程序是输入7位评委对某选手的打分后,去掉最高分和最低分后计算其平均值作为该选手的成绩。
请填空使得程序
能正确运行。
Private Sub Form_Click()
sum = 0
For i = 1 To 7
cj = Val(InputBox("请输入第" & i & "位评委的打分", "录入"))
If i = 1 Then
Max = cj
Min = cj
Else
If Min > cj Then
Min = cj
ElseIf Max < cj Then
Max = cj
End If
End If
sum = sum + cj
Next i
aver = (5)
Print "该选手的成绩为:", aver
End Sub
(6)以下程序用随机函数模拟掷骰子,统计掷50次骰子出现各点的次数,请用正确的内容填空。
Private Sub Form_Click()
Dim a(1 To 6) As Integer
Randomize
For i = 1 To 50
n = (6)
a(n) = a(n) + 1
Next i
For i = 1 To 6
Print i; "点出现"; a(i); "次"
Next i
End Sub
2.11 编程题
(1)编写程序将1~100自然数中能被3和5同时整除的数打印出来,并统计其个数。
(2)我国现有人口14亿,设年增长率为0.75%,编写程序,计算多少年后将增加到16亿。
(3)编写程序输出100~200之间不能被3整除的自然数。
(4)设计程序,求s=1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值。
(5) 编写程序计算S 的近似值,直到最后一项的绝对值小于10-5为止。
并用Print 方法
输出计算结果。
其中:
K S k 1)1(41312111+-++-+-
=
(6) 假设某项税收的规定如下:
● 收入在500元以内,免征;
● 收入在500~1000元内,超过500元的部分纳税3%;
● 收入超过1000元时,超过的部分纳税4%;
● 收入超过2000元时,超过的部分纳税5%。
试编程实现上述操作。
(7) 编写程序,用InputBox 函数输入3个正整数,打印其中最大的数。
(8) 编写程序,任意输入三个整数A ,B ,C ,按由大到小顺序把它们打印出来。
(9) 编写程序,计算
)!12()1(!5!3sin 1
2153--+++-≈--n x x x x x n n 直到第n 项的绝对值小于10-8
(10) 分别编写两个程序,在窗体上分别打印出如下所示的图形。
(11) 编写程序,输出1000之内的所有完数。
“完数”是指一个数恰好等于它的因子之
和,如6的因子为1、2、3,而6=1+2+3,因而6是完数。
(12) 一只小球从10米高度上自由落下,每次落地后反弹回原高度的40%,再落下。
编程计算小球在第8次落地时,共计经过了多少米?
(13) 编写程序,求出所有小于或等于100的自然数对。
自然数对是指两个自然数和与
差都是平方数,如8和17的和为8+17=25与其差17-8=9都是平方数,则8和17
就称为自然数对。
(14) 找出100~999之间的所有“水仙花数”。
所谓“水仙花数”是一个三位数,其各
位数的立方各等于该数本身,例:153=13+53+33,故153是“水仙花数”。
(15) 编写程序,在窗体上打印下图所示的“数字金字塔”:
(16) 用一元纸币兑换一分、二分和五分的硬币,要求兑换硬币的总数为50枚。
编程列
出所有可能的兑换方案。
(17) 编写程序,建立并输出一个10×10的矩阵,该矩阵两条对角线上的元素为1,其
余元素均为0。
习题3
一、选择题
(1)窗体的标题条显示内容由窗体对象的( )属性决定。
A. BackColor
B. BackStyle
C. Text
D. Caption
(2)窗体的示意图标可用( )属性来设置。
A. Picture
B. Image
C. Icon
D. MouseIcon
(3)若要取消窗体的最大化功能,则可设置( )属性为False来实现。
A. ControlBox
B. MinButton
C. MaxButton
D. Enabled
(4)窗体的风格由窗体对象的( )属性来设置。
A. BackStyle
B. BorderStyle
C. WindowState
D. FillStyle
(5)若要以程序代码方式设置在窗体中显示文本的字体大小,则可用窗体对象的( )属性
来实现。
A.FontName
B. Font
C. FontSize
D.FontBold
(6)若要设置文本的显示颜色,则可用( )属性来实现。
A. BackColor
B. ForeColor C .FillColor D. BackStyle
(7)若要使用窗体启动时,位于屏幕的中间,则可通过( )属性来设置。
A. Top
B. Left
C. StartUpPosition
D. WindowState
(8)若要禁止窗体被移动,则可设置窗体的( )属性为False来实现。
A. Move
B. Moveable
C. MinButton
D. ControlBox
(9)若要将窗体隐藏起来,则实现的方法为( )
A. Hide
B. UnLoad
C. Show
D. WindowState
(10)命令钮的标题文字由( )属性来设置。
A. Text
B. Caption
C. Name
D. (名称)
(11)命令按钮标题文字的下划线,可通过( )符号来设置。
A.\<
B.&
C. _ D\>
(12)若要将某命令按钮设置为默认命令钮,则可设置( )属性为True来实现。
A. Value
B. Cancel
C. Default
D. Enable d
(13)若要设置命令钮的工具提示,则可通过( )属性来设置。
A. Caption
B. Text
C. Value
D. ToolTip Text
(14)若要使用某命令按钮获得控制焦点,则可使用( )方法来设置。
A. Refresh
B. SetFocus
C. GotFocus
D. V alue
(15)若要使用命令钮在运行时不可见,则可通过设置()属性的取值来实现。
A. Visible
B. Enabled
C. Default
D. Value
(16)在运行时,若要调用某命令钮的Click事件过程,则可设置该命令按钮对象的( )属
性为True来实现。
A. Enabled
B. Value
C. Default
D. Cancel
(17)标签框的边框,由( )属性的设置值决定。
A. BorderStyle
B. BackStyle
C. BackColor
D. AutoSize
(18)若要使用标签框的大小自动与所显示的文本相适应,则可通过设置( )属性的值为
True来实现。
A. AutoSize
B. Alignment
C. Appearance
D. Visible
(19)若要设置或返回文本框中的文本,则可通过文本框对象的( )属性来实现。
A. Caption
B. Text
C. (名称)
D. Name
(20)若要使用文本框成为只读文本框,可通过设置( )属性值为True来实现。
A. ReadOnly
B. Lock
C. Locked
D. Enabled
(21)若要设置定时器控件的定时时间,可通过( )属性来设置。
A. Interval
B. Value
C. Enabled
D. Text
(22)若要多列显示列表项,可通过设置列表框对象的( )属性来实现。
A. Columns
B. MultiSelect
C. Style
D. List
(23)若要获知当前列表项的数目,可通过访问( )属性来实现。
A. List
B. ListIndex
C. ListCount
D. Text
(24)若要向列表框新增列表项,则可使用的方法是( )。
A. Add
B. Remove
C. Clear
D. AddItem
(25)若要清除列表框的内容,可使用( )方法来实现。
A. Add
B. Remove
C. Clear
D. AddItem
(26)在3种不同风格的组合框中,用户不能输入数据的组合框是( )
A. 下拉式组合框
B. 简单组合框
C. 下拉式列表框
(27)复选框或单选框的当前状态通过( )属性来设置或访问。
A. Value
B. Checked
C. Selected
D. Caption
(28)下列控件中,没有Caption属性的是( )。
A. 框架
B. 列表框
C. 复选框
D. 单选按钮
(29)复选框的Value属性为1时,表示( )。
A. 复选框未被选中
B. 复选框被选中
C. 复选框内有灰色的勾
D. 复选框操作错误
(30)用来设置粗字体的属性是( )。
A. FontItalic
B. FontName
C. FontBold
D. FontSize
(31)将数据项“China”添加到列表框List1中,成为第一项应使用( )语句。
A. List1.AddItem “China”, 0
B. List1.AddItem “China”, 1
C. List1.AddItem 0, “China”
D. List1.AddItem 1, “China”
(32)假定时钟控件的Interval属性为1000,Enabled属性为True,并且有下面的事件过程,
计算机将发出()次Beep声。
Private Sub Timer1_Timer()
For i = 1 To 5
Beep
Next i
End Sub
A. 1000次
B.10000次
C. 5次
D. 以上都不对
(33)如果每0.5秒产生一个计时器事件,那么时钟控件的Interval属性应设为()。
A. 5
B. 50
C. 500
D. 5000
(34)将命令按钮Command1的标题复制到文本框控件,Text1作为显示文本,应执行()。
A. Text1= Command1
B.Text1= Command1.Caption
C.Text1.text= Command1.Caption
D.Text1.Text= CStr(Command1)
(35)表示滚动条控件取值范围最大值的属性是()。
A. Max
B. LargeChange
C. Value
D. Max-Min
二、填空题
(1)复选框的属性设置为2-Grayed时,将变为灰色,禁止用户使用。
(2)Visual Basic中有一种控件组合了文本框和列表框的特点,这种控件是。
(3)为了在程序运行时把d:\pic文件夹中的图形文件a.jpg装入图片框Picture1,所使用的语
句为。
(4)计时器控件能有规律地以一定的时间间隔触发事件,并执行该事件过程中的
程序代码。
(5)若要求输入密码时文本框中只显示*号,则应当在文本框的属性窗口中设置属
性。
(6)图像框和图片框在使用时有所不同,这两个控件中,能作为容器容纳其它控件的是。
(7)单击滚动条边的箭头时,滚动条默认滚动值为1,为了实现单击滚动条边的箭头时,滚
动条的滚动值为2,需要将其属性设置为2。
(8)滚动条响应的重要事件有和Change,滚动条产生Change事件是因为
改变了。
(9)列表框中的和属性是数组。
(10)在窗体上有一个名为Command1的命令按钮和一个名为Text1的文本框,程序运行后,
Command1为禁用(灰色)。
当向文本框中输入任何字符时,命令按钮Command1变为可用。
请在空白处填入适当的内容,将程序补充完整。
Private Sub Form_Load()
Command1.Enabled = False
End Sub
Private Sub Text1_ ()
Command1.Enabled = True
End Sub
三、编程题
(1)在FormLoad事件编写一个程序,利用Inputbox来输入语文、英语和计算机3门课的成
绩。
然后算出这3门课的总分和平均分,以MsgBox显示出来。
(2)在下图中“半径”后的文本框(TEXT1)中书输入圆的半径值后,单击“计算面积”按钮
(COMMAND1)和“计算周长”按钮(COMMAND2),其计算结果将显示在结果后的文本框(TEXT2)中。
请将控件的相关事件代码编写出来,以完成上述各功能。
(3)下图所示的界面,在图示的文本框中输入3个不同的数,点击“排序”按钮后,输入的
三个数按从大到小的顺序显示在另外3个文本框中。
(4)在窗体中建立两个命令按钮和一个标签,程序启动时只显示两个命令按钮,单击按钮“英
文”时显示“Good Bye”,单击按钮“中文”时显示“再见”。
(5)设计一程序界面如图示,程序运行时,拖动滚动条便可以改变颜色区的背景色。
(6)设计一倒计时程序界面如下图示,运行时点击“设置倒计时间”按钮可以用设置倒计时
的初始时间,点击“开始倒计时”按钮就开始倒计时。
(7)设计一程序,窗体上有两个列表框,左侧列表框列出若干个城市名称,当双击某个城市
名时,这个城市名显示在右侧列表框中
(8)设计如下图所示的程序界面,实现计算两个整数的最大公约数功能。
(9)设计一个程序,有两个输入栏用来输入数据,然后可以计算它们的值,如加、减、乘、
除、幂次方及余数。
当用户输入数据时,会马上更新运算结果,界面如下图所示:
(10)输入两点坐标,在图片框中显示两点的连线并计算两点间的距离。
习题 4
1程序阅读题
(1)假定有如下的Sub过程:
Sub S (x As Single, y As Single)
t = x
x = t / y
y = t Mod y
End Sub
在窗体上添加一个命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
Dim a As Single
Dim b As Single
a = 5:
b = 4
S a, b
Print a, b
End Sub
程序运行时,单击命令按钮得到的结果是。
A. 5, 4
B. 1, 1
C. 1.25, 4
D. 1.25, 1
(2)在在窗体上添加一个命令按钮Command1和一个文本框Text1,然后编写如下事件
过程:
Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer
x = 5
y = 7
z = 0
Text1.Text = ""
Call p1(x, y, z)
Text1.Text = Str(z)
End Sub
Private Sub p1(ByVal a As Integer, ByVal b As Integer, c As Integer)
c = a + b
End Sub
程序运行后,单击命令按钮得到的结果是。
A. 0
B. 12
C. Str(z)
D. 没有显示
(3)假定有以下函数过程:
Function Fun(S As String) As String
Dim s1 As String
For i = 1 To Len(S)
s1 = UCase(Mid(S, i, 1)) + s1
Next i
Fun = s1
End Function
在窗体上添加一个命令按钮,然后编写如下事件过程:
Private Sub Command1_Click()
Dim str1 As String, str2 As String
str1 = InputBox("请输入一个字符串")
str2 = Fun(str1)
Print str2
End Sub
程序运行后,单击命令按钮,如果在输入对话框中输入字符串“abcdegf”,单击确定按钮后程序在窗体上输出结果为。
A. abcdefg
B. gfedcba
C. ABCDEFG
D. GFEDCBA
(4)在在窗体上添加一个命令按钮Command1和两个名称分别为Label1和Label2的标
签,然后编写如下事件过程:
Private X As Integer
Private Sub Command1_Click()
X = 5: y = 3
Call proc(X, y)
Label1.Caption = X
Label2.Caption = y
End Sub
Sub proc(ByVal a As Integer, ByVal b As Integer)
X = a * a
y = b + b
End Sub
程序运行后,单击命令按钮,则两个标签中显示的内容分别是。
A. 5和3
B. 25和3
C. 25和6
D. 5和6
(5)下列程序输出结果为。
Private Sub Command1_Click()
For i = 1 To 10
GetValue i
Next i
Print GetValue(i)
End Sub
Private Function GetValue(ByVal a As Integer)
Static S As Integer
S = S + a
GetValue = S
End Function
A. 10
B. 65
C. 66
D. 11
(6)以下程序的运行结果是:。
Function f(m As Integer) As Integer
b = 1
Static c As Integer
b = b + 1
c = c + 1
f = m * b * c
End Function
Private Sub Command1_Click()
Dim a As Integer
a = 2
Sum = 0
For i = 1 To 3
Sum = Sum + f(a)
Next i
Print Sum
End Sub
A. 24
B. 12
C. 28
D. 32
(7)以下程序的运行结果是:。
Dim x As Integer, y As Integer, z As Integer
Sub s1(a As Integer, b As Integer)
Dim c As Integer
a = 2 * a
b = b + 2
c = a + b
End Sub
Sub s2(a As Integer, ByVal b As Integer)
Dim c As Integer
a = 2 * a
b = b + 2
c = a + b
End Sub
Private Sub Command1_Click()
x = 4
y = 4
z = 6
Call s1(x, y)
Print x + y + z;
Call s2(x, y)
Print x + y + z
End Sub
A. 24 28
B. 20 28
C. 20 18
D. 20 20
(8)以下程序的运行结果是:。
Sub s1(b() As Integer)
For i = 1 To 4
b(i) = 2 * i
Next i
End Sub
Private Sub Command1_Click()
Dim a(1 To 4) As Integer
For i = 1 To 4
a(i) = i + 5
Next i
s1 a()
For i = 1 To 4
Print a(i);
Next i
End Sub
A. 6 7 8 9
B. 12 14 16 18
C. 2 4 6 8
D. 1 2 3 4
2 填空题
(1)一个工程中包括两个窗体Form1和Form2,启动窗体为Form1。
在Form1上有一命令按钮Command1。
程序运行后,要求单击命令按钮时,Form1窗体消失,显示窗
体Form2,请将程序补充完整。
Private Sub Command1_Click()
Form1
Form2.
End Sub
(2) 一工程中有两个窗体form1和form2,一个标准模块module1,设在form1中定义了
过程aa ,在module1中定义了过程bb 。
Sub aa(x, y, z) z = x * x + y * y End Sub
Sub bb(x, y, z)
z = x ^ 3 + y ^ 3 End Sub
当在form1中单击命令按钮时,调用以上过程计算两个数的平方和和立方和,并分别将计算结果显示在文本框text3和text4中,请填空完成调用语句。
Private Sub Command1_Click() a = Val(Text1.Text) b = Val(Text2.Text) Call Text3.Text = c1 bb Text4.Text = c2 End Sub
(3) 在窗体form1中添加一个通用对话框控件CommonDialog1,程序运行时,首先使用
CommonDialog1打开一个标准颜色对话框,用于设置对象颜色,其次使用CommonDialog1打开一个标准字体对话框,用于设置对象的字体、字形和字号效果。
Private Sub Form_Load()
CommonDialog1.Action = 3
Text1.BackColor = CommonDialog1.Color CommonDialog1. = 4
Text1.FontName = CommonDialog1.FontName Text1.FontSize = CommonDialog1. End Sub
(4) 编写一个求最大公约数的函数,并调用该函数,程序如下: Private Sub Command1_Click()
Dim x As Integer, y As Integer, z As Integer x = 96 y = 64
z = Print z End Sub
Function gcd(ByVal a As Integer, ByVal b As Integer) As Integer Dim r As Integer Do While b <> 0
r = a Mod b a = b: b=r Loop gcd = a
End Function
(5) 已知菲波纳契数列具有如下递推关系:
⎩⎨
⎧≥+===--3n f f f 1f f 2
n 1n n 21
下面是计算此数列的函数,请填空。
Private Sub Command1_Click()
a% = Val(Text1.Text) x = fib(a) Print x End Sub
Function fib(n%) Select Case n% Case 1 fib = 1 Case 2 fib = 1 Case Else
fib = End Select End Function
(6) 已知函数k
k k n ....21)n ,k (sum +++=。
下面是实现计算该函数的程序,请填空。
Private Sub Command1_Click()
Dim k As Integer, i As Integer, s As Long n = 5 k = 1
For i = 1 To n
s = s + pow( ) Next i Sum = s Print Sum End Sub
Function pow(a As Integer, b As Integer) As Long Dim i As Integer, t As Long t = 1
For i = 1 To a Next i pow = t
End Function
3 编程题
(1) 编写输入一个0~6数字,显示汉英对照输出星期的函数过程。
(2) 编写判断奇偶数的Function 过程。
输入一个数,判断其奇偶性。
(3) 编写求两数中的较大数的函数过程,求多个数的较大数。
(4) 编写计算契比雪夫多项式的Function 过程,其定义如下:
⎪⎩⎪
⎨⎧≥-+-===2n )x ,2n (t )x ,1n (xT 21
n x 0n 1
)x ,n (T
习 题 5
1. 选择题
(1)菜单编辑器中,哪一个选项输入希望在菜单栏上显示的文本( )
A. 标题
B. 名称
C. 索引
D. 访问键 (2)下面哪个属性可以控制菜单项可见或不可见( )
A. Hide
B. Checked
C. Visible
D. Enabled (3)下面说法不正确的( )
A. 下拉菜单和弹出式菜单都是由菜单编辑器创建的
B. 每一个创建的主菜单最多可以有5级子菜单
C. 下拉菜单中的菜单项不可以作为弹出式菜单显示
D.控制下拉菜单项是否可用,由菜单编辑器中的有效属性设置
(4)菜单控件只有一个事件()
A. MouseUp
B. Click
C. DBClick
D. KeyPress
(5)下面说法不正确的是()
A.顶层菜单不允许设置快捷键
B.要使菜单项中的文字具有下画线,可在标题文字前加&符号。
C.有一菜单项名为MenuTerm,则语句MenuTerm.Enable = Flase 将使该菜单项失效。
D.若希望在菜单中显示“&”符号,则在标题栏中输入“&”符号。
2.填空题
(1)Visual Basic中的菜单可分为菜单和菜单。
(2)如要在菜单中设计分隔线,则应将菜单项的标题设置为。
(3)想要显示一弹出式菜单,可使用
(4)有些菜单项被点击后将显示一个对话框,通常在这些菜单项后有。
(5)菜单中的“热键”可通过在热键字母前插入符号实现。
(6)可通过快捷键打开菜单编辑器。
3.编程题
1.在窗体上画一个标签框,Alignment属性设为2,AutoSize属性设为True,BorderStyle属性设为1,FontSize设为20;然后画一个时钟控件,Interval属性设为1000。
如图所示,当单击时间选项时,标签框内显示时间(时间要动态变化),而单击日期标签框则显示当前日期。
通过菜单项要能够控制标签框的背景牙色、字体大小和字颜色,各菜单项的属性设置见下表:
图5-10 程序窗体设计界面
图5-11 程序运行界面
2.这里是几位名人的简介:
金庸:著名武侠小说家,其作品具有的读者数量,鲜有出其右者,代表作有《射雕英雄传》、《天龙八部》等。
路遥:著名作家,茅盾文学奖获得者,代表作有《平凡的世界》和《人生》等。
王火:作家,以长篇小说《战争与人》获茅盾文学奖,但却少被人所知道,一直居住在少被文坛关注的成都。
贝聿铭:世界级建筑大师,设计过世界各地很多标志性建筑,其中广为人知是香港的中银大厦。
建立一个弹出式菜单,包含4个菜单项,分别为“金庸”、“路遥”、“王火”和“贝聿铭”。
程序运行后,单击弹出菜单中的某个菜单项,在标签中显示相应的名字,而文本框中显示该名人的简介。
文本框的MultiLine属性设为True,FontSize属性设为20。
习题 6
1.选择题
(1)下面对语句Open ”Rizhi.dat” For Output As #1 功能说明错误的是()
A.以顺序输出模式打开文件”Rizhi.dat”
B.如果文件”Rizhi.dat”不存在,则建立一个新文件
C.如果文件”Rizhi.dat”已存在,则打开该文件,新写入的的数据将添加到文件末尾
D.如果文件”Rizhi.dat”已存在,则打开该文件,新写入的的数据将覆盖原来的数据
(2)执行语句Open “Sample.dat” For Random A s #1 Len = 50 后,对文件”Sample.dat”中的数据能够进行的操作是()
A. 只能写不能读
B. 只能读不能写
C. 即可以读,也可以写
D. 不能读,也不能写
(3)以下那个不是VB中的数据文件类型()
A. 顺序文件
B. 数据库文件
C. 随机文件
D. 二进制文件
(4)下列说法错误的是()
A.当用Write # 语句写顺序文件时,文件必须以Output或Append方式打开
B.用Open语句打开一个文件时,对同一个文件可以用几个不同的文件号打开
C.用Output和Append方式打开文件时,不用将文件关闭,就能重新打开文件
D.用Append方式打开文件时,进行写操作,写入文件的数据附加到原来文件的后面
(5)下面几个关键字均表示文件的打开方式,只能进行读不能写的是()
A. Input
B. Output
C. Random
D. Append
(6)下列哪个不是写文件语句()
A. Put
B. Print #
C. Write#
D. Output
(7)改变驱动器列表框的Drive属性将激活()事件
A. Change
B. Scroll
C. KeyDown
D. KeyUp
(8)为了使Drive1驱动器列表框、Dir1目录路径列表框和File1文件列表框同步协调工作,需要在()
A. Drive1的Change事件过程中加入Dir1.Path = Drive1.Drive,在Dir1的Change事件中加入File1.Path = Dir1.Path代码
B. Drive1的Change事件过程中加入Dir1.Path =Dir1.Path,在Dir1的Change事件中加入File1.Path = Drive1.Drive代码
C. Dir1的Change事件过程中加入Dir1.Path = Drive1.Drive,在Drive1的Change事件中加入File1.Path = File1.FileName代码
D. Dir1的Change事件过程中加入Dir1.Path = Drive1.Drive,在Drive1的Change事件中加入File1.Path = Dir1.Path代码
2.程序阅读题
(1)写出程序运行结果
Private Sub Command1_Click( )
Dim a(20)As Integer
Open “d:\ Data.txt” For Output As #1
For i = 2 To 8
For j = 1 To i
Print #1, j
Next j
Next i
Close #1
Open "d:\ Data.txt" For Input As #2
k = 0
While Not EOF(2)
k = k + 1
Input #2, a (k)
Wend
Close #2
For i = 2 To k / 4
Print a (i)
Next I
End Sub
(2)执行以下程序后,Prime.dat文件中的内容为
Private Sub Form_Click()
Dim num As Integer, dat1 As Integer, dat2 As Integer
Dim swit As Boolean
Open "d:\prime.dat" For Output As #1
num = 0
For dat1 = 2 To 10
swit = True
For dat2 = 2 To Sqr(dat1)
If (dat1 Mod dat2) = 0 Then
swit = False
Exit For
End If
Next dat2
If swit Then
num = num + 1
Write #1, " 第"; num; "个数"; dat1
End If
Next dat1
Close #1
End Sub
3.编程题
(1)编写程序,建立一顺序文件,输入某公司销售记录,每次从键盘上输入一种商品的数据,包括商品编号、名称、价格、销售数量和销售日期,建立文件后,在窗体上输出全部内容。
(2)建立一个随机文件用以存放6个学生的数据,包括学号、姓名和成绩,文件名为“student.dat ”,
习题7
1.选择题
(1)利用可视化数据管理器(Visdata)创建好表结构后,选中某数据表单击右键,在弹出菜单中选择()命令,即可添加记录。
A. 设计
B. 打开
C. 新建表
D. 修改
(2)Data控件的哪一个属性为设置访问的数据表的名称()
A. DatabaseName
B. connect
C. Recordsource
D. Recordsettype
(3)下列哪种控件是不能与Data控件一起使用的ActiveX绑定控件
A. DBListBox
B. DbcomboBox
C. DBGrid
D. ImageList
(4)记录集中移动记录到上一条记录的方法是()
A. MoveFirst
B. Updata
C. MoveNext
D. MovePrevious
(5)将新记录集添加到记录集后,保存更新结果使用的方法是()
A. AddNew
B. Updata
C. CancelUpdata
D. Refresh
(6)能从一个或多个数据表中取出字段,但只能浏览的记录集对象是()
A. 表类型
B. 动态集类型
C. 快照型
D. 都不对
(7)将一文本框与数据控件相关联需要设定文本框的()属性
A. Recordsource
B. DataField
C. DataSource
D. RecordsetType
(8)在一个学生信息表中查找所有姓“李”的,最后一个字为“峰”的人,可使用查询语句()
A.Select * From Student Where 姓名= “ 李?峰”
B.Select * From Student Where 姓名= “ 李* 峰”
C.Select * From Student Where 姓名= “ 李* ” And 姓名= “ * 强“
D.Select * From Student Where 姓名Like “ 李* 峰”
2.应用题
(1)编写一个通讯录程序,数据库“通讯录”的数据表中包含“姓名”、“性别”、“住址”和“联系电话”等,要求可以显示数据表中的记录内容,并可以添加、删除、根据姓名查询和增加等操作。
(2)利用VB的可视化数据管理器建立下面的数据表:
设计一数据窗体,利用该窗体实现对数据表的浏览、修改、删除、增加和查询记录的功能,并要求能够任意选择查询数据的方式,如即可通过学号查询,也可通过特长查询等。
(3)将题(2)中的数据表添加“照片”字段,使程序不但可以显示数据表中的记录内容,还可以显示每个人的照片,且照片的显示会随着记录指针的移动而变化。
习题 2解答
一、基本概念题
(1) 说明下列哪些是Visual Basic 合法的直接常量,并分别指出它们的类型。
100.0 %100 1E1 123D3 123,456 0100
“ASDF” “1234.5” #2004/10/7# 100# π
&O78 &H123 True T -1123! 345.54#
答:在VB 中,直接常量是以直接明显的形式给出的数据。
根据数据类型的不同,直接常量分为:字符串常量、数值常量、日期常量和布尔常量。
字符串常量是由一对半角双引号“””加以界定的字符序列,该字符序列可以是任何能被计算机处理的字符。
本题中,“ASDF ” 、 “1234.5”是字符串常量;
数值常量是由数值、小数点和正负号所构成的数值。
在Visual Basic 中除十进制数值常量外,还有八进制、十六进制数值常量。
八进制常量前加&O ;十六进制常量前加&H 。
本题中,100.0、1E1、123D3、0100、100#、&O78 、&H123、-1123!和345.54#均为数值常量。
日期常量用来表示某一天或某一天的具体时间。
在Visual Basic 中,日期常量用两个“#”号加以界定。
本题中,#2004/10/7#是日期常量。
逻辑型常量只有True 和False 两个值,表示“真”和“假”。
本题中,True 是逻辑常量。
本题中,%100、123,456、π、T 不是合法的常量。
(2)下列数据哪些是变量,哪些是常量?是什么类型的常量?
Name “name” False ff “11/16/99” cj
“120” n #11/12/2004# 12.345
答:“name ”、 “11/16/99”、 “120”是字符串常量;12.345是数值常量;#11/12/2004#是日期常量;False 是逻辑常量。
Name 、ff 、cj 、n 是变量。
(3) 下列符号中,哪些可以是Visual Basic 的合法变量名?
A123 a12_3 123_a a,123 a 123 Integer
XYZ False Sin(x) 变量名 sinx π
答:变量命名的规则是:必需以字母或汉字开头,其后可以是下划线、字母、汉字和数字,长度小于255个字符;不能使用VB 的关键字。
本题中,合法的变量名是:A123、 a12_3、XYZ 、变量名、sinx ;不合法的变量名是:123_a (不能用数字开头)、a,123(不能用逗号)、a 123(不能有空格)、False 、Sin(x)(VB 的关键字)、π(不是英文字母)。
(4)把下列数学表达式写成Visual Basic 表达式:
(1)5||z y x ++ (2)6)1(xy +
(3)xy y x 310+ (4)a ac
b b 242-+-
(5)3211111r r r ++ (6)110ln 45sin 10++++y x e。