《vb6.0程序设计教程课后习题答案,答题完成后再看答案(二)》是由大铁棍娱乐网(www.datiegun.com)编辑为你整理收集在【教育学习】栏目,于2016-03-14 22:29:53整理发布,希望对你有所帮助,可及时向我们反馈。
20.下列关于添加“控件”的方法正确的是 。
A.单击控件图标,将指针移到窗体上,双击窗体
B.双击工具箱中的控件,即在窗体中央出现该控件
C.单击工具箱中的控件,将指针移到窗体上,再单击
D.用鼠标左键拖动工具箱中的某控件到窗体中适当位置
21.下面有一程序,如果从键盘上输入“Testing”,则在文本框中显示的内容是 。
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii >= 65 And KeyAscii <= 122 Then
KeyAscii = 65
End If
End Sub
A.A B.Testing
C.AAAAAAA D.程序出错
22.文本框Text1和Text2用于接受输入的两个数,求这两个数的乘积,错误的是 。
A.y=Text1.Text * Text2.Text
B.y=Val(Text1.Text) * Val (Text2.Text)
C.y=Str(Text1.Text) * Str(Text2.Text)
D.文本框的Text属性是字符型,所以以上语句都错误。
23.为了在按下Esc键时执行某个命令按钮的Click事件过程,需要把该命令按钮的一个属性设置为True,这个属性是 。
A.Value B.Default C.Cancel D.Enabled
24.假定窗体上有一个标签,名为Label1,为了使该标签透明并且没有边框,则正确的属性设置为 。
A.Label1.BackStyle=0 : Label1.BorderStyle=0
B.Label1.BackStyle=1 : Label1.BorderStyle=1
C.Label1.BackStyle=True : Label1.BorderStyle=True
D.Label1.BackStyle=False : Label1.BorderStyle=False
25.程序运行时,拖动滚动条上的滚动块,则触发的事件是 。
A.Move B.Change C.Scroll D.GetFocus
三、填空题
1.要是标签框(Label)l控件可换行显示并且可自动调节大小,需将其 属性和 属性同时设置为True。
2.大多数控件都可设置其 属性使其有效或无效,可设置其 属性使其可见或不可见。
3.组合框具有 和 两种控件的基本功能。
4.鼠标 的动作,使滚动条的Scroll、Change事件都会发生。
5.执行语句“HScroll1.Value = HScroll1.Value + 100”时,发生 事件。
6.将焦点定位于命令按钮Command1之上的语句为 。
7.定时器控件只能接收 事件。
8.Text文本框能接受的最长字符数由文本框的 属性确定。
9. 方法用来向列表框中加入表项。
10.定时器的Interval属性值为0时,表示 。
四、程序阅读题
1.当程序运行后,在文本框Text1中输入1234,写出窗体上的输出结果。
Private Sub Text1_Change()
Print Text1 & "-"
End Sub
2.下面程序运行后,在文本框Text1中输入6并按回车键后,写出文本框中显示的内容。
Dim N%,M%
Private Sub Text1_Keypress(Keyascii As Integer)
If Isnumeric(Text1) Then '判断是否为数字
Select Case Val(Text1) Mod 2
Case 0
N=N+Val(Text1)
Case 1
M=M+Val(Text1)
End Select
End If
Text1=""
Text1.Setfocus
IF Keyascii=13 Then
Text1=N & M
End If
End Sub
3.如图8.25所示的窗体上有一个列表框和一个文本框,下面程序运行后,在文本框中输入“789”,然后双击列表框中的“463”,写出文本框中的显示结果。
图8.25 窗体
Private Sub Form_Load()
List1.AddItem "453"
List1.AddItem "979"
List1.AddItem "463"
List1.AddItem "122"
List1.AddItem "784"
Text1.Text = ""
End Sub
Private Sub List1_DblClick()
a = List1.Text
Text1= a + Text1.Text
End Sub
4.执行了下面的程序后,写出列表框中各项的数据。
Private Sub Form_Load()
Combo1.AddItem "西瓜": Combo1.AddItem"苹果": Combo1.AddItem "橘子"
Combo1.AddItem "葡萄": Combo1.AddItem "哈密瓜"
Combo1.AddItem "火龙果": Combo1.AddItem "釉子"
Combo1.List(0) = "李子" : Combo1.List(7) = "猕猴桃"
End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then Combo1.List(Combo1.ListCount) = Combo1.Text
List1.Clear
For i% = 0 To Combo1.ListCount - 1
If Len(Trim(Combo1.List(i%))) < 3 Then
List1.AddItem Combo1.List(i%)
End If
Next i%
End Sub
写出程序运行时,在组合框Combo1中输入文本“香蕉”(以回车键结束)后,控件List1中的所有表项。
5.程序代码如下:
Private Sub Form_Load()
Label1.AutoSize = True
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim a As String * 1, b As String, n As Byte
If KeyAscii = 13 Then
b = Text1.Text: n = Len(b)
For i% = 1 To n \ 2
a = Left(b, 1)
b = Right(b, n - 1) + a
Label1.Caption = Label1.Caption + b + Chr(13) + Chr(10)
Next i%
End If
End Sub
请写出在文本框Text1中输入12345(以换行结束)后,标签控件Label1上的显示结果。
6.控件Hscroll1的属性设置如下:
HScroll1.Min = 1
HScroll1.Max = 9
HScroll1.Value = 1
HScroll1.SmallChange = 2
HScroll1.LargeChange = 4
下列程序运行时,4次单击滚动条右端箭头按钮,写出各次单击时,Text1上的显示结果。
Dim y As Single
Private Function f1(x2 As Integer) As Single
Static x1 As Integer
f1 = 0
For i% = x1 To x2
f1 = f1 + i%
Next i%
x1 = i%
End Function
Private Sub HScroll1_Change()
y = y + f1(HScroll1.Value)
Text1.Text = y
End Sub
7.执行下列程序,按下回车键后的输出结果。
Option Base 1
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim x As Integer, y As Integer
a = Array(3, 6, 8, 4, 1, 7) 'a数组中的元素分别为3,6,8,4,1,7
x = a(1)
y = a(1)
If KeyAscii = 13 Then
For i = 2 To 6
If a(i) > x Then
x = a(i)
y = i
End If
Next i
End If
Print x; y
End Sub
五、程序填空题
1.本题是利用计时器控件来实现文字的水平移动。要求:如图8.26所示,运行时标签框内的文字从窗体左边向右边移动,当标签框的最左边超出窗体的右边界时,从窗体的左边进入窗体(尾部先进入),并要求在文字移动时,文字颜色随时间任意变化。
图8.26 标签框移动
代码如下:
Private Sub Form_Load()
Form1.WindowState = 2 : Timer1.Interval = 100
End Sub
Private Sub Timer1_Timer()
Label1.ForeColor = RGB(255 * Rnd, 255 * Rnd, 255 * Rnd)
⑴ = Label1.Left + 150
If Label1.Left >= Form1.Width Then
Label1.Left = ⑵
End If
End Sub
Private Sub Command1_Click()
End
End Sub
2.下面是一个添加和删除程序,程序运行界面如图8.27所示,单击“添加”按钮(Command1)将文本框(Text1)中的内容加到列表框(List1)中的第一项,如果文本框中没有内容,则给出提示“没有内容,不予添加”。单击“删除”按钮(Command2)则将所有选中表项删除。如果没有选择要删除的表项,则给出提示“请选择删除的项目”。
图8.27 添加和删除程序
Private Sub Form_Load()
Form1.Caption = "添加与删除"
Text1.Text = ""
List1.AddItem "Word"
List1.AddItem "Excel"
List1.AddItem "PowerPoint"
List1.AddItem "Outlook"
End Sub
Private Sub Command2_Click()
If ⑴ Then
MsgBox ("请选择删除的项目")
Else
⑵
End If
End Sub
Private Sub Command1_Click()
If ⑶ Then
MsgBox ("没有内容,不予添加")
Else
⑷
Text1.Text = ""
End If
End Sub
3.窗体上有两个命令按钮:Command1(显示)和Command2(退出)。下列程序运行时,“显示”按钮能响应,“退出”按钮不能响应;单击“显示”按钮后,在窗体上显示一个用字符“*”组成的5层的金字塔,同时“显示”按钮不能响应,“退出”按钮能响应。
Private Sub Command1 Click()
Dim i As Integer, j As Integer
For i = 1 To 5
Print Spc(5 - i);
For j = ⑴ : Print "*"; : Next j
Next i
Command1.Enabled = False : ⑵
End Sub
Private Sub Command2 Click()
End
End Sub
Private Sub Form Load()
Command1.Enabled = True
⑶
End Sub
4.下面的程序段是检查输入的算术表达式中圆括号是否配对,并显示相应的结果。本程序在文本框中输入表达式,边输入边统计,以输入回车作为表达式输入结束,然后显示结果。
Dim Count1%
Private Sub Text1_Keypress(Keyascii As Intcger)
If ⑴ ="(" Then
Count1 =Count1+1
Elself ⑵ Then
⑶
End If
If Keyascii=13 Then
If ⑷ Then
Print "左右括号配对"
Elseif ⑸ Then
Print "左括号多于右括号"; Count1; "个"
Else
Print "右括号多于左括号"; -Count1; "个"
End If
End If
End Sub
5.利用1个定时器、1个标签和2个命令按钮制作一个动态秒表。
要求各控件名称取缺省值,控件Command1、Command2标题分别为“开始”、“结束”。运行时,单击“开始”按钮后秒表开始计时,并在标签上显示总秒数;单击“结束”按钮后,计时结束,在窗体上显示出运行的时间(折算成小时、分钟和秒数)。
Dim x As Long
Private Sub Form_Load()
Timer1.Interval = 1000: Timer1.Enabled = False
End Sub
Private Sub Command1_Click()
Cls
x = 0
⑴
End Sub
Private Sub Command2_Click()
Dim h As Integer, m As Integer, s As Integer
Timer1.Enabled = False
h = ⑵
m = ⑶
s = x Mod 3600 Mod 60
Print "运行了" + Str(h) + "小时" + Str(m) + "分" + Str(s) + "秒"
End Sub
Private Sub Timer1_Timer()
⑷
Label1.Caption = x
End Sub
6.下列程序段将十进制数转会为十六进制数。单击窗体弹出InputBox对话框,让用户输入一个十进制数;单击“确定”按钮后,在Label1上显示出十六进制数的结果。如果输入的不是十进制数,在Label1上显示出“你输入的不是十进制数,退回窗体状态,让用户继续输入。
Private Sub Form_Click()
Dim shex As String, ndec As Integer, ys As Integer, ai As String
ndec = Val(InputBox("请输入一个十进制数"))
while ⑴
ys= ⑵
Select Case ys
Case 10
ai = "A"
Case 11
ai = "B"
Case 12
ai = "C"
Case 13
ai = "D"
Case 14
ai = "E"
Case 15
ai = "F"
Case 0 To 9
⑶
Case Else
label1 = "你输入的不是十进制数"
⑷
End Select
shex= ⑸
ndec = ndec \ 16
Wend
label1= ⑹
End Sub
7.本程序用于处理文本框Text1.Text中的内容,假设文本框中有偶数个字符。要求:将文本框中的内容从头尾至中间依次各取字符,组成一个新的字符串Str2,并在窗体上输出。
例如:
Text1.Text = "12345678",则 Str2 = "18273645"
Private Sub Form_Click()
Dim Str1 As String, Str2 As String
Str1 = Text1.Text
Str2 = ""
m = 0
Do ⑴
Str2 = Str2 + ⑵
Str2 = Str2 + ⑶
m = m + 1
Loop
Form1.Print Str2
End Sub
六、程序设计题
1.窗体上设计两个文本框和两个标签框,标签上显示“摄氏温度”和“华氏温度”,文本框一个用于输入摄氏温度(文本框只接收数字字符和小数点“.”字符),另一个用于输出对应的华氏温度。摄氏温度c与华氏温度f的转换公式为c=(5/9)*(f-32)。
提示:本题可以用文本框的KeyPress事件来判断输入的字符是否为数字字符或小数点“.”。
2.编写一个能对列表框进行项目添加、修改和删除操作的应用程序,如图8.28所示。“添加”按钮的功能是将文本框中的内容添加到列表框中,“删除”按钮可删除列表框中选定的项目,“修改”按钮,可把要修改的项目显示在文本框中,当在文本框修改好后再单击“修改确定”按钮则更新列表框中的内容。当按下“修改”按钮后,“修改确定”按钮才可选取,否则不可操作。
图 8.28 列表框应用程序
3.编程,窗体标题为“猜数游戏”。
基本要求:单击“出题”按钮则生成一个1到100间的随机整数;然后在文本框中输入若干数(以回车键结束),大于或小于随机数则给出提示信息,猜1个数超过10次不可再猜该数。猜中了,提示“恭喜你,猜中了字样”。
4.在窗体上有两个命令按钮和一个文本框,标题属性分别为“开始”、“结束”和Text1。文本框Text1中的字符数不超过200个。程序刚开始运行时,“结束”按钮成灰色,单击“开始”按钮后,将文本框中的字符按其ASCII码的值由小到大自左至右重新组合,并在窗体上输出重组后的字符串,同时使“结束”按钮响应而“开始”按钮不能响应。
5.通讯录程序设计,程序启动后界面如图8.29所示:
(1)当用户在文本框内输入完一个同学的记录后,单击“添加“按钮,则记录字段加到各数组和组合框的List集内。
(2)当在下拉式组合框中选取一个表项后,则与该表项相应的记录便自动显示在窗体右边的文本框内。
(3)当在下拉式组合框中选取一个表项后,单击“删除“按钮,与表项相应的记录便被删除。
图8.29 第5题界面设计
6.编写一个如图8.30所示的复选框和单选按钮控制的字体变化效果。
图8.30 复选框和单选按钮
7.统计输入信息有多少个英文大写字母、小写字母、数字字符。界面如图8.31所示。在Text1中输入信息,单击“确定”按钮后,分别在Text2、Text3、Text4中显示大写字母、小写字母和数字字符的个数。
图8.31 统计字符个数
8.已知在List1和List2中分别有n个随机产生的两位正整数(通过Load事件实现),现将List1和List2中的数全部移到List3中,并在List3中按照由小到大的顺序进行输出。
9.用户界面如下图所示,用于显示左右两个组合框中数据的左移和右移功能。程序开始运行时,在左边组合框中随机生成10个由小到大排列的三位正整数(已知组合框1的Sorted属性已设置为True),现要求完成:
(1)单击“>>”按钮,左边组合框中的10个数全部移到右边组合框,并由大到小排列,同时使“<<”按钮能响应,“>>”按钮不能响应;
(2)单击“<<”按钮,右边组合框中的10个数全部移到左边组合框,并由小到大排列,同时使“>>”按钮能响应,“<<”按钮不能响应;
(3)单击“结束按钮”,结束程序运行。
已知各控件的Caption属性已经在属性窗口中设置完成。
图8.32 组合框
第8章 常用控件参考答案:
一、判断题
1、× 2、× 3、√ 4、√ 5、× 6、× 7、× 8、× 9、× 10、×
11、× 12、√ 13、× 14、√ 15、√ 16、× 17、× 18、× 19、×
20、×
二、单选题
1、A 2、B 3、A 4、C 5、B 6、D 7、A 8、B 9、C 10、C 11、A 12、A 13、C 14、B 15、A 16、B 17、C 18、D 19、A 20、D 21、C 22、D
23、C 24、A 25、C
二、填空题
1、Autosize WordWrap 2、Enabled Visible 3、文本框和列表框
4、拖动滚动条 5、Change 6、Command1.Setfoucs 7、Timer
8、MaxLength 9、AddItem 10、定时器屏蔽
三、程序阅读题
60
1-
12-
123-
1234-
1、 2、
463789
3、
23451
34512
李子
苹果
橘子
葡萄
柚子
香蕉
4、 5、
6、
8 3
7、
6
15
28
45
四、程序填空题
1、(1) Label1.left (2) –Label1.Width
2、(1) List1.ListIndex<0 (或者写成= -1) (2) List1.RemoveItem List1.ListIndex
(3) Text1.Text=”” (4) List1.AddItem Text1.Text
3、(1) 1 to 2*I-1 (2) Command2.Enabled=True
(3) Command2.Enabled=False
4、(1)right(text1.text,1) (2)right(text1.text,1)=”)” (3)count1=0
(4)count1>0
5、(1) Timer1.Enabled=True (2) x \ 3600 (3) (x-h*3600)\60
(4) x=x+1
6、(1) ndec<>0 (2) ndec mod 16 (3) ai=trim(Ys)
(4) end (5) ai & shex (6)shex
7、(1) m<=len(str1) (2) mid (str1,m+1,1) (3)mid (str1,len(str1)-m,1)
五、程序设计题
1、
Private Sub Form_Click()
Dim f As Single, c As Single
c = Val(Text1.Text)
f = 32 + 9 / 5 * c
Text2.Text = f
End Sub
Private Sub Form_Load()
Text1.Alignment = 1
Text2.Alignment = 1
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If (KeyAscii < 49 Or KeyAscii > 57) And KeyAscii <> 46 Then
KeyAscii = 0
End If
End Sub
2、 Private Sub Command1_Click()
If Text1.Text = "" Then
MsgBox "请先输入添加项"
Else
List1.AddItem Text1.Text
End If
End Sub
Private Sub Command2_Click()
If List1.ListIndex < 0 Then
MsgBox "请选择一删除项"
Else
List1.RemoveItem List1.ListIndex
End If
End Sub
Private Sub Command3_Click()
If List1.ListIndex < 0 Then
MsgBox "请选择一修改项"
Else
Text1.Text = List1.Text
End If
Command4.Enabled = True
End Sub
Private Sub Command4_Click()
Dim a As Integer
If List1.Text = Text1.Text Then
MsgBox "请先修改此项"
Else
a = List1.ListIndex
List1.RemoveItem List1.ListIndex
List1.AddItem Text1.Text, a
End If
End Sub
Private Sub Form_Load()
Command4.Enabled = False
End Sub
3、 Dim a As Integer
Private Sub Command1_Click()
a = Int(Rnd * 100) + 1
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Static i As Integer
If KeyAscii = 13 Then
If Val(Text1.Text) > a Then
Label1.Caption = "太大了,请重输"
i = i + 1
ElseIf Val(Text1.Text) = a Then
Label1.Caption = "恭喜你,你答对了!"
i = 0
Command1_Click
Else
Label1.Caption = "太小了,请重输!"
i = i + 1
End If
If i > 10 Then
MsgBox "你失败了!"
End
End If
End If
End Sub
4、
Private Sub Command1_Click()
Dim n As Integer: n = Len(Text1.Text)
Dim s(1 To 1000) As String, i As Integer, j As Integer, t As String, a As String
For i = 1 To n
s(i) = Mid(Trim(Text1.Text), i, 1)
Next i
For i = 1 To n - 1
For j = i + 1 To n
If s(i) > s(j) Then
t = s(i): s(i) = s(j): s(j) = t
End If
Next j, i
For i = 1 To n: a = a + s(i): Next i
Print a
Command1.Enabled = False: Command2.Enabled = True
End Sub
Private Sub Command2_Click(): End: End Sub
Private Sub Form_Load()
Text1.MaxLength = 200
Command2.Enabled = False: Command1.Enabled = True
End Sub
5、
Dim a(1 To 1000) As String, b(1 To 1000) As String, c(1 To 1000) As Double, d(1 To 1000) As Double
Private Sub Combo1_click()
Text1.Text = a(Combo1.ListIndex + 1)
Text2.Text = b(Combo1.ListIndex + 1)
Text3.Text = c(Combo1.ListIndex + 1)
Text4.Text = d(Combo1.ListIndex + 1)
End Sub
Private Sub Command1_Click()
Combo1.AddItem Text1.Text
a(Combo1.ListCount) = Text1.Text
b(Combo1.ListCount) = Text2.Text
c(Combo1.ListCount) = Val(Text3.Text)
d(Combo1.ListCount) = Val(Text4.Text)
End Sub
Private Sub Command2_Click()
For i = Combo1.ListIndex + 1 To Combo1.ListCount - 1
a(i) = a(i + 1)
b(i) = b(i + 1)
c(i) = c(i + 1)
d(i) = d(i + 1)
Next i
a(i) = ""
b(i) = ""
c(i) = 0
d(i) = 0
Combo1.RemoveItem Combo1.ListIndex
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
End Sub
Private Sub Form_Load()
Dim i As Integer
Combo1.AddItem "张三"
Combo1.AddItem "李四"
Combo1.AddItem "王五"
a(1) = "张三": a(2) = "李四": a(3) = "王五"
b(1) = "浙江林学院": b(2) = "浙江工业大学": b(3) = "浙江大学"
c(1) = 311300: c(2) = 310027: c(3) = 310014
d(1) = 63742212: d(2) = 88394277: d(3) = 88326531
End Sub
6、
Private Sub Check1_Click()
If Check1.Value = 1 Then
Label1.FontBold = True
Else
Label1.FontBold = False
End If
End Sub
Private Sub Check2_Click()
If Check1.Value = 1 Then
Label1.FontItalic = True
Else
Label1.FontItalic = False
End If
End Sub
Private Sub Option1_Click()
Label1.FontName = "宋体"
End Sub
Private Sub Option2_Click()
Label1.FontName = "楷体_gb2312"
End Sub
7、
Private Sub Command1_Click()
Dim a As String, i As Integer, n As Integer
Dim s As Integer, q As Integer, l As Integer
n = Len(Text1.Text)
For i = 1 To n
a = Mid(Text1.Text, i, 1)
If a >= "a" And a <= "z" Then
s = s + 1 '大写个数
ElseIf a >= "A" And a <= "Z" Then
q = q + 1 '小写个数
ElseIf a >= "0" And a <= "9" Then
l = l + 1
End If
Next i
Text2.Text = s
Text3.Text = q
Text4.Text = l
End Sub
Private Sub Form_Load()
Text1.SetFocus
End Sub
8、
Private Sub Form_Click()
Dim i As Integer, j As Integer, t As Integer
For i = 0 To List1.ListCount - 1
List3.AddItem List1.List(i)
Next i
List1.Clear
Do While List2.ListCount
List3.AddItem List2.List(0)
List2.RemoveItem 0
Loop
For i = 0 To List3.ListCount - 2
For j = i + 1 To List3.ListCount - 1
If List3.List(i) > List3.List(j) Then
t = List3.List(i): List3.List(i) = List3.List(j): List3.List(j) = t
End If
Next j, i
End Sub
Private Sub Form_Load()
Dim i As Integer, n As Integer
n = InputBox("")
For i = 1 To n
List1.AddItem Int(Rnd * 90) + 10
List2.AddItem Int(Rnd * 90) + 10
Next i
End Sub
9、
Private Sub Form_Load()
Dim i As Integer
Combo1.Text = ""
For i = 1 To 10 ‘随机产生10个三位整数
Combo1.AddItem Int(Rnd * 900) + 100
Next i
Combo2.Text = ""
Command1.Enabled = True
Command2.Enabled = False
End Sub
Private Sub Command1_Click()
Dim i As Integer, j As Integer, t As Integer
For i = 0 To 9 ‘将Combo1中数据添加到Combo2中
Combo2.AddItem Combo1.List(i)
Next i
For i = 0 To 8 ‘由大到小排列
For j = i + 1 To 9
If Combo2.List(i) < Combo2.List(j) Then
t = Combo2.List(i): Combo2.List(i) = Combo2.List(j)
Combo2.List(j) = t
End If
Next j, i
Combo1.Clear ‘清除Combo1中的数据
Command1.Enabled = False ‘Command1按钮不能用
Command2.Enabled = True
End Sub
Private Sub Command2_Click()
Dim i As Integer, j As Integer, t As Integer
Do While Combo2.ListCount <> 0 ‘将Combo2中数据移动到Combo1
Combo1.AddItem Combo2.List(0)
Combo2.RemoveItem 0
Loop
Command1.Enabled = True
Command2.Enabled = False
End Sub
Private Sub Command3_Click()
End : End Sub
习题九答案
1.判断题:×√√√√ ××√√× ××√××
2.选择题:DDCCD BDCCB
3. 填空题
1. -
2. 一级子菜单
3. 将顶级菜单设置为不可见
4. popupmenu pmenu,0,x,y
5. showfont
6. 工程、部件
7. click
8. 代码窗口,click
9. 下拉式,弹出式
10. 打开/另存为、颜色,字体、打印、帮助
4. 程序阅读题
1、 打开对话框
2、 *.txt
3、allfiles
*.exe
*.txt
*.doc
4、Checking, No File Selectd,重试(R) , 取消
5. 程序填空题
“c:\winnt”
commondialog1.showopen,
loadpicture(commondialog1.filename)
6. 程序设计题
1、 界面如图:
代码如下:
Private Sub Command1_Click()
CommonDialog1.FileName = ""
CommonDialog1.Flags = 4096
CommonDialog1.Action = 1
If CommonDialog1.FileName = "" Then
MsgBox "No File Selectd", 5 + vbExclamation, "Checking"
Else
List1.AddItem CommonDialog1.FileName
End If
End Sub
2、
代码如下:
Private Sub a_Click()
CommonDialog1.ShowColor
Text1.ForeColor = CommonDialog1.Color
End Sub
Private Sub b_Click()
CommonDialog1.Flags = 1
CommonDialog1.ShowFont
Text1.FontSize = CommonDialog1.FontSize
End Sub
Private Sub c_Click()
CommonDialog1.Flags = 1
CommonDialog1.ShowFont
Text1.FontName = CommonDialog1.FontName
End Sub
Private Sub d_Click()
End
End Sub
第十章
一、判断题
1.用Cls方法能够清除窗体或图片框中用picture属性设置的图形。
2.picture图片框既可用来显示图片和绘制图形,也可用print方法来显示文字。
3.移动框架时框架内控件也跟随移动,所以框架内各控件的left、top属性值也随之改变。
4.框架控件和形状控件都不能响应用户的鼠标单击事件。
5.图片框的Move方法不仅可以移动图片框,而且还可以改变该图片框的大小,同时也会改变该图片框控件的有关属性值。
6.VB提供的几种标准坐标系的原点都是在绘图区域的左上角,如果要把坐标原点放在其他位置,则需要使用自定义坐标系统。
7.Image和PictureBox的 Autosize属性的功能不同。
8.当Scale方法不带参数时,则采用默认坐标系。
9.使用Line方法画矩形时,必须在指令中使用关键字B和F。
10.Circle方法正向采用顺时针方向。
二、选择题
1.改变控件在窗体中的左右位置应修改该控件的 属性。
A.Top B.Left C.Width D.Right
2.重新定义图片框控件的坐标系统,可采用该图片框的 方法。
A.Scale B.ScaleX C.ScaleY D.SetFocus
3.若在图片框上用绘图方法绘制一个圆,则图片框的 属性不会对该圆的外观产生影响。
A.BackColor B.ForeColor C.DrawWidth D.DrawStyle
4.形状控件所显示的图形不可能是 。
A.圆 B.椭圆 C.圆角正方形 D.等边三角形
5.执行form1.scale(10,-20)-(-30,20)语句后,form1窗体坐标系X轴和Y轴的正方向是 。
A.向左和向下 B.向右和向上 C.向左和向上 D.向右和向下
6.对象的边框类型由 属性设置。
A.DrawWidth B.DrawStyle C.Borderstyle D.ScaleMode
7.Cls可清除窗体和图片框中的 内容。
A.运行时输出的文字和图形 B.设计时放置的控件
C.Picture属性设置的背景图案 D.以上三项
8.下列用Line方法绘制红色实心矩形的语句正确的是 。
A.Line(10,10)-Step(50,50),RGB(255,0,0),BF
B.Line(10,10)-Step(60,60),B,RGB(255,0,0),BF
C.Line(10,10)-Step(60,60),RGB(255,0,0),B
D.Line Step (10,10)-Step(50,50),BF
9. 要清除PictureBox控件中的图形,必须用哪条命令 。
A. Picture1.Picture = LoadPicture()
B. Picture1.Picture = ""
C. Picture1.Picture = LoadPicture("")
D. kill Picture1.Picture
10.用Scale方法改变了窗体坐标系以后,被改变了属性值的窗体属性名是 。
A.ScaleWidth B.Width C.Height D.DrawMode
三、填空题
1.以图片框pic1的中心位置为圆心,以700为半径在pic1上画一个圆的方法是_____________________________________________。
2.画图语句picture1.circle(800,1000),500的含义是 。
3.使用Scale方法建立窗体Form1的用户坐标系统,其中窗体左上角坐标为(-200,250),右下角坐标为(300,-100),具体形式为 。
4. PictureBox控件可通过设置其 属性为True,使图片框可自动调整大小以适应图片的大小;而Image控件可通过设置其________________________属性为True,使其加载的图片能自动调整大小以适应Image。
四、程序阅读题
1.写出下列各段程序运行的结果。
Private Sub Command1_Click()
Dim x As Double, y As Double
x = Width / 4
y = Height / 4
Line (x, y)-Step(1000, 1000), , B
Line -(x, y)
End Sub
2.画出下列各段程序运行的结果。
Private Sub Picture1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
x0 = X: y0 = Y
End Sub
Private Sub Picture1_MouseUp(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Picture1.FillStyle <> 0 Then
Picture1.FillStyle = 0
Else
Picture1.FillStyle = 1
End If
Picture1.Line (x0, y0)-(X, Y), RGB(255, 255, 0), B
End Sub
五、程序填空题
1. 完成一个行星程序的设计,一个蓝色的小圆围绕红色大圆沿椭圆轨道运行。椭圆方程为:x=x0+rx*cos(alfa),y=y0+ry*sin(alfa),其中X0,Y0为椭圆圆心坐标,RX为水平半径,RY为垂直半径,ALFA为圆心角。具体要求如下:
1)在窗体中引入一个合适大小的形状控件SHAPE2,将SHAPE2的SHAPE属性设置为圆形、蓝色。
2)TIMER的时间间隔为0.1秒。
3)代码窗口中的内容填充完整。
效果如图10.17所示。
图10.17 行星运动
Dim rx As Single, ry As Single
Dim alfa As Single
Private Sub Form_Load() ' 窗体最大化充满屏幕
Form1.Left = 0
Form1.Top = 0
Form1.Width = (1)
Form1.Height = (2) ' 将SHAPE1居中
Shape1.Left = Form1.ScaleWidth / 2 - Shape1.Width / 2
Shape1.Top = Form1.ScaleHeight / 2 - Shape1.Height / 2
rx = Form1.ScaleWidth / 2 - Shape1.Width / 2
ry = Form1.ScaleHeight / 2 - Shape1.Height / 2 ' 将SHAPE2的起始位置
定位在水平轴的0度位置上
Shape2.Left = Form1.ScaleWidth / 2 + rx - Shape2.Width / 2
Shape2.Top = Form1.ScaleHeight / 2 - Shape2.Height / 2
End Sub
Private Sub Timer1_Timer()
alfa = alfa + 0.05
x = Form1.ScaleWidth / 2 + rx * Cos(alfa)
y = Form1.ScaleHeight / 2 + ry * Sin(alfa)
Shape2.Left = (3)
Shape2.Top = (4)
End Sub
图10.18 “画板”程序运行效果
2. 下面是一个“画板”程序,程序运行结果如图10.18所示。单击“颜色”按钮(Command1)打开颜色对话框,实现对绘图笔颜色的设置,单击“清除”按钮(Command2)则清除图片框中的图形,使用单选按钮选择线型粗细(Option1)设置为1磅和(Option2)设置为3磅,根据选择的线型的粗细、颜色,用鼠标的左键模拟笔在绘图区随意绘图。
Private Sub Command1_Click() ' 设置图片框前景颜色
CommonDialog1.Action = 3
(1)
End Sub
Private Sub Command2_Click() ' 清除绘制图形
Picture1.Cls
End Sub
Private Sub Option1_Click() ' 选择线宽
Picture1.DrawWidth = 1
End Sub
Private Sub Option2_Click() ' 选择线宽
Picture1.DrawWidth = 3
End Sub ' 鼠标按下,确定当前坐标
Private Sub Picture1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
(2)
(3)
End Sub ' 按下鼠标左键,移动鼠标画线
Private Sub Picture1_MouseMove(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
If Button = 1 Then (4)
End Sub
六、程序设计题
1.在窗体上画一条正弦曲线,变化范围在0~2π之间。
2.以缇为单位,以窗体中心点为原点,以窗体的高与宽中最小值的1/2为半径画一个半圆(线为蓝色,线粗为2twip,填充色为红色)。
3.x1、y1已声明为模块级变量,鼠标按下的事件过程如下:
Dim x1 As Single, y1 As Single
Private Sub Picture1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
x1 = x: y1 = y
End Sub
编制事件过程Picture1_MouseUp,使得在图片框控件Pic1上拖动鼠标后,绘制出一个矩形,鼠标按下、抬起的位置分别为矩形斜对角线的定点,矩形轮廓线为红色,矩形内部填充色为绿色。
第10章 习题答案
一、判断题
×√×××√√√××
二、选择题
BAADA CAACA
三、填空题
(1) pic1.Circle (pic1.ScaleLeft + pic1.ScaleWidth / 2, pic1.ScaleTop + pic1.ScaleHeight / 2), 700
(2) 以图片框(800,1000)为圆心画一个半径为500的圆
(3) Form1.scale (-200,250)-(300,-100)
(4) Autosize stretch
四、程序阅读题
1、 窗体宽和高的1/4为起点,画一个连长为1000的正方形,并画出其正向对角线
2、 在图片框中交替画出空心和实心的矩形
五、程序填空题
1、
(1) Screen.Width
(2) Screen.Height
(3) X
(4) Y
2、
(1)Picture1.ForeColor= CommonDialog1.Color
(2)If Option1.Value=True Then Picture1.DrawWidth=1
(3)If Option2.Value=True Then Picture1.DrawWidth=3
(4)Picture1.Pset (x,y)
六、程序设计题
1、
Private Sub Form_Click()
Const Pi = 3.1415926
Dim i As Single
Form1.Scale (0, 1)-(2 * Pi, -1)
Form1.Line (0, 0)-(2 * Pi, 0)
Form1.Line (0, -1)-(0, 1)
For i = 0 To 2 * Pi Step 0.0001
Form1.PSet (i, Sin(i))
Next i
End Sub
2、
Private Sub Form_Click()
Dim r As Single, x As Single, y As Single
x = Form1.ScaleWidth / 2
y = Form1.ScaleHeight / 2
r = x
If r > y Then r = y
Form1.Circle (Form1.ScaleLeft + Form1.ScaleWidth / 2, Form1.ScaleTop + Form1.ScaleHeight / 2), r, vbBlue, -2 * 3.14, -3.14
End Sub
Private Sub Form_Load()
Form1.DrawWidth = 3
Form1.FillStyle = 0
Form1.FillColor = vbRed
End Sub
3、
Dim x1 As Single, y1 As Single
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, x As Single, yAs Single)
x1 = x: y1 = y
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
Picture1.Line (x1, y1)-(x, y), vbRed, B
End Sub
Private Sub Form_Load()
Picture1.FillStyle = 0
Picture1.FillColor = vbGreen
End Sub
第十一章
一、判断题
1.在Visual Basic中文件列表框的FileName属性返回或设置一个选中的文件全名(包含路径)字符串。
2.在顺序文件中增加记录,实际上是在文件的末尾附加记录,方法是先找到文件最后一个记录号,然后把要增加的记录写在它的后面。
3.驱动器列表框、目录列表框是下拉列表框。
4.目录列表框的Path属性,只能用程序代码设置,不能通过属性窗口设置。
5.Open语句中的For字句缺省,则默认打开的文件是随机文件。
6.用Write#语句向文本文件输出时,VB自动为同一行上的不同数据间加逗号作为间隔符。
7.用OUTPUT模式打开文件,如果指定文件和路径不存在,则会自动创建指定文件及路径。
8.若某文件已存在,用OUTPUT方式打开该文件,等同于用APPEND方式打开该文件。
9.在Open语句中用Input方式所打开的文件必须已经存在,否则会出现运行错误。
10.文件列表框与盘驱动器列表框、目录列表框一样,都能响应Change事件。
二、选择题
1.设定文件列表框中所显示的文件类型,应修改该控件的 属性。
A.Pattern B.Path C.FileName D.Name
2. 函数可以用来获取未打开文件的长度。
A.Len B.FileLen C.LOF D.EOF
3.下列 方法或函数可以调用外部的可执行文件。
A.Show B.Shell C.Input D.Open
4.若目录列表框控件Dir1的Path属性当前值为“C:\”,双击该列表框的表项“Pwin2000”后,控件Dir1的Path属性当前值为 。
A.“c:\Pwin2000” B.“c:\\Pwin2000\”
C.“c:\Pwin2000\” D.“c:Pwin2000\”
5.Kill语句在Visual Basic中的功能是 。
A.杀病毒 B.清屏幕 C.清内存 D.删除文件
6.要在C盘根目录下建立名为File.dat的顺序文件,应先使用 语句。
A.Open "File1.dat" For Input As #1
B.Open "File1.dat" For Output As #1
C.Open "C:\File1.dat" For Input As #1
D.Open "C:\File1.dat" For Output As #1
7.执行语句“Write #1,123;-34.56,"input";time”后,相应文件内被写入 。
A.123,-34.56,input,2005-06-08
B."123","-34.56","input","2005-06-08"
C.123,-34.56,"input",#2005-06-08#
D.123 -34.56 input2005-06-08
8.下面的叙述不正确的是: 。
A.Write#语句和Print#语句建立的顺序文件格式完全一样。
B.Write#语句和Print#语句都能实现向文件中写入数据。
C.用Write#语句输出数据,各数据项之间自动插入逗号,并且将字符串加上双引号。
D.若使用Print#语句输出数据,各数据项之间没有逗号,并且字符串不加双引号。
9.改变驱动器列表框的Drive属性将激活 事件。
A.Change B.KeyDown C.Click D.MouseDown
10. 方式打开的文件只能读不能写。
A.append B.random C.output D.input
11.下列Write语句中,错误的语句是 。
A.Write #1, x ; y B.Write #1
C.Write #1; x ; y D.Write #1, “x”, “y”
12.设a=10,b=20,c=30。要使这三个数可写入顺序文件中,且写到不同的打印区,应该使用 。
A.Print #1, a, b, c B.Print #1, a; b; c
C.Write #1; a, b, c D.Write #1, a; b; c
13.设有语句:
Open "c:\test.dat" For Output As #1
则以下错误的叙述是: 。
A.该语句打开C盘根目录下一个已存在的文件test.dat
B.该语句在C盘根目录下建立一个名为test.dat的文件
C.该语句建立的文件的文件号为1
D.执行该语句后,就可以通过Print#语句向文件test.dat中写入信息
14.从打开的顺序文件中读取数据,错误的语句是 。
A.x=Input (#1, 1) B.x=Input(1, #1)
C.Line Input #1, x D.Input #1, x
15.向随机文件写入数据,使用的语句是 。
A.Input #文件号, 变量名 B.Write #文件号,表达式列表
C.Put#文件号, 变量名 D.Get#文件号,变量名
16.设已打开3个文件,文件号为1、2、3。要关闭所有文件,正确的是 。
A.Close 1,2,3,4,5 B.Close #1; #2; #3; #4; #5
C.Close #1-#5 D.Close
三、程序阅读题
1.写出程序运行时单击Form后,该文件中的最终结果。
Private Sub Form_click()
Open "d:\shunxu.txt" For Output As #1
Print #1, "print:"
Print #1, "A"; "B"; "C",
Print #1, "1234567,abcdefg"
Write #1, "write:"
Write #1, "A"; "B"; "C",
Write #1, "1234567,abcdefg"
Close # 1
End Sub
2.在窗体的通用声明区声明两个模块级变量a和y。
Dim a As Integer, y As Integer
Private Sub Form_Load()
Open "c:\a1.dat" For Output As #1
Close #1
End Sub
Private Sub Command1_Click()
Open "c:\a1.dat" For Append As #1
Call aa(5)
y = y + a
Print #1, "y="; y, "a="; a
Close #1
End Sub
Sub aa(i As Integer)
x = 1
Do Until x > i
a = a + x
x = x + 3
Loop
End Sub
写出程序运行时连续三次单击Command1后,a1.dat文件的最终结果。
3.写出程序运行时单击窗体后,a1.dat文件的结果和窗体上的输出结果。
Private Sub Form_Click()
Dim xx(6) As Integer, k As Integer
Open "c:\a1.dat" For Output As #1
For i = 1 To 6
j = i * i: Print #1, j;
Next i
Close #1
Open "c:\a1.dat" For Input As #2
k = 0
Do While Not EOF(2)
k = k + 1: Input #2, xx(k)
Loop
Close #2
For i = k To k / 2 Step -1: Form1.Print xx(i);: Next i
End Sub
4.写出程序运行时单击窗体后,abc.txt文件中的结果。
Private Sub Form_Click()
Open "d:\abc.txt" For Output As #2
Dim m, n As Integer
For n = 1 To 20
If n Mod 5 = 0 Then
Print #2, n
m = m + n
End If
Next n
Print #2, "m="; m
Close #2
End Sub
四、程序填空题
1.程序说明:从指定的任意一个驱动器中的任何一个文件夹下查找文本文件(不含汉字),并将选定的文件的完整路径显示在文本框Text1中,文件的内容显示在文本框Text2中。
Private Sub Form_Load()
File1. (1) = "*.txt"
Text1.Text = "": Text2.Text = ""
End Sub
Private Sub Dir1_Change()
(2)
End Sub
Private Sub Drive1_Change()
(3)
End Sub
Private Sub File1_Click()
If Right(File1.Path, 1) <> "\" Then
Text1.Text = File1.Path + "\" + File1.FileName
Else
Text1.Text = File1.Path + File1.FileName
End If
(4)
Do While Not EOF(1)
(5)
Text2.Text = Text2.Text + s$ + Chr(13) + Chr(10)
Loop
Close #1
End Sub
2.程序说明:从已存在与磁盘的顺序文件Data1中读取数据,计算出数据的平方值。将该数据及其平方值存入新的顺序文件Data2中。
Private Sub Form_Click()
Dim x As Single, y As Single
Open "data1.dat" For Input As #1
Open "data2.dat" For Output As #2
Do While (1)
(2)
Print x,
y = x * x
(3)
Print y
Loop
Close
End Sub
3.在C盘当前文件夹下建立一个名为Data.txt的顺序文件。要求用文本框输入若干个英文单词,每次按下回车键时写入一条记录,并清除文本框中的内容,直到在文本框中输入“END”为止(忽略大小写)。
Private Sub Form_Load()
Text1.Text = ""
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
Open "c:\data.txt" For Output As #1
If KeyAscii = 13 Then
If (1) = "END" Then
(2)
End
Else
(3)
Text1.Text = ""
End If
End If
End Sub
4.程序说明:本程序求3~100之间的所有素数(质数)并统计个数;同时,将这些素数从小到大依次写入顺序文件e:\a33dataout.txt;素数的个数显示在窗体Form1上。
Private Sub Command1_Click()
Dim count As Integer, flag As Boolean
Dim t1 As Integer, t2 As Integer
(1)
count = 0
For t1 = 3 To 100
flag = True
For t2 = 2 To Int(Sqr(t1))
If (2) then flag = False
Next t2
(3)
count = count+1
Write #1, t1
End If
Next t1
(4)
Close #1
End Sub
五、程序设计题
1.文本文件e:\aa.txt中存放了若干行字符,编制相应事件过程:在加载窗体时读入文件中各行字符并顺序在列表框控件List1的列表部分显示。
2.在C:\txt目录下的有两个顺序文件a.txt和b.txt,其中都按升序排列了5个数据记录,要求编程将两文件合并成一个文件c.txt,并使c.txt文件中的记录按降序排列。
3.编制单击窗体的事件过程,作如下处理:
从文件c:\a.txt中依次读出20个学生的学号以及2门功课成绩,统计每个学生的总分,并按照总分从高到低进行排序,然后将学生信息按总分从高分到低分输出到c:\b.txt。
输入文件c:\a.txt格式 输出文件c:\b.txt格式
"0001",20,30 "0008",90,90,180
"0002",80,90 "0002",80,90,170
…………………
4.通过键盘输入数据,将包含学号、姓名、性别、计算机、工程制图、高等数学等科成绩数据输入到一个随机文件(Student.dat)中。程序界面如图11.15所示,在文本框中输入个数据后,单击输入按钮,将数据写入文件,并清除文本框中的内容,继续输入。单击结束按钮,关闭文件,结束程序。
图11.15 程序设计题4的界面设计
第11章文件 答案
一、 判断题
1——5 : ×√√√√ 6——10: √√×√×
二、 选择题
1——5:ABBAD 6——10: DCAAD
11——16:CAAACD
三、 程序阅读题
1、 print:
ABC 1234567,abcdefg
"write:"
"A","B","C","1234567,abcdefg"
结果:
y= 5 a= 5
y= 15 a= 10
y= 30 a= 15
2、
4、
3、 4、
5
10
15
20
m= 50
窗体上:
36 25 16 9
文件中:
1 4 9 16 25 36
四、 程序填空题
1、pattern
file1.path=dir1.path
dir1.path=drive1.drive
open text1.text for input as #1
line input #1,s$
2、not eof(1)
input #1, x
print #2, x, y
3、Ucase (text1.text)
close #1
write #1, text1.text
4、open “e:\a33dataout.txt” for output as #1
t1 mod t2=0
if t2>int(sqr(t1))
print count
五、 程序设计题
1、
Private Sub Form_click()
Dim count As Integer, i As Integer, j As Integer, s As String
Open "d:\aa.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, s
List1.AddItem s
count = count + 1
Loop
Close
For i = 0 To count - 2
For j = i + 1 To count - 1
If List1.List(i) > List1.List(j) Then
t = List1.List(i): List1.List(i) = List1.List(j): List1.List(j) = t
End If
Next j, i
End Sub
2、
Private Sub Form_click()
Dim i As Integer, a(10) As Integer, j As Integer, t As Integer
Open "c:\a.txt" For Input As #1
For i = 1 To 5: Input #1, a(i): Next i
Close #1
Open "c:\b.txt" For Input As #2
For i = 6 To 10: Input #2, a(i): Next i
Close #2
For i = 1 To 9
For j = i + 1 To 10
If a(i) < a(j) Then
t = a(i): a(i) = a(j): a(j) = t
End If
Next j, i
Open "c:\c.txt" For Output As #3
For i = 1 To 10
Write #3, a(i)
Next i
Close #3
End Sub
3、
Private Type Student
num As String
s(1 To 5) As Single
End Type
Private Sub Form_Click()
Dim stu() As Student, temp As Student
Dim i%, j%, p%, n%, tnum$
Open "c:\A.dat" For Input As #1
Do While Not EOF(1)
n = n + 1
ReDim Preserve stu(1 To n)
Input #1, stu(n).num
For i = 1 To 4
Input #1, stu(n).s(i)
stu(n).s(5) = stu(n).s(5) + stu(n).s(i)
Next i
Loop
Close #1
For i = 1 To n - 1
p = i
For j = i + 1 To n
If stu(j).s(5) > stu(p).s(5) Then p = j
Next j
temp = stu(p)
stu(p) = stu(i)
stu(i) = temp
Next i
Open "c:\B.dat" For Output As #1
For i = 1 To n
Print #1, stu(i).num;
For j = 1 To 5
Print #1, stu(i).s(j);
Next j
Print #1,
Next i
End Sub
4、
略