VB课后习题答案 陈庆章主编.docx
VB课后习题答案 陈庆章主编第1章 Visual Basic 6.0程序设计概述 一、判断题 1 2 3× 说明:同类控件相互重叠,设计时可以设置“置前”、“置后”属性。 4 5× 6 7× 8 9 10× 11 12 13× 14 15× 16 17 18 19 20 二、选择题 1. C 2. B 3D 4C 5B 6A 7D 8A 9B 10A 11C 12D 三、填空题 1对象、事件 2属性、方法、事件 3控件、屏幕 4对象 5Left、Top 6属性、<对象名>.<属性名>=<表达式> 7网格 8F orm1 9Load或Initialize或Resize或Activate 10Activate、Deactivate 四、程序设计题 程序1界面设计参看图10-1、10-2以及表10-1。 表10-1 实例2各控件的主要属性设置 控件 标签控件1 标签控件2 命令按钮1 命令按钮2 属性 Name(Label1) Name(Label2) FontUnderLine(True) Name(Command1) Name(Command2) 属性 Caption("我的第一个VB程序") Caption("请输入你的姓名") FontItalic(True) Caption("确定(&O)") Caption("结束(&X)") 过程设计如下: Private sub Form_Click Command2.Enabled = False Een Sub Private Sub Command1_Click Label2.Visible = False Label1.Caption = Text1.Text + ": 欢迎使用" + Label1.Caption Text1.Visible = False Command1.Enabled = False: Command2.Enabled = True End Sub Private Sub Command2_Click End End Sub 程序2界面设计略,过程设计如下: Private Sub Command1_Click '字体变大 Form1.FontSize = Form1.FontSize + 3 Form1.Cls: Print "欢迎使用VB" End Sub Private Sub Command2_Click '字体变小 Form1.FontSize = Form1.FontSize - 3 Form1.Cls: Print "欢迎使用VB" End Sub Private Sub Command3_Click '字体加粗 Form1.FontBold = True Form1.Cls: Print "欢迎使用VB" End Sub Private Sub Command4_Click '字体不加粗 Form1.FontBold = False Form1.Cls: Print "欢迎使用VB" End Sub 运行时,不得连续、过多次单击“字体变小”按钮,因为当FontSize属性值小于0会产生适时错误。 程序3界面设计略,过程设计如下: Private Sub Form_Load Text1.Text = "Visual Basic 程序设计" End Sub Private Sub Form_Resize Text1.Top = 0: Text1.Left = 0 Text1.Width = Form1.ScaleWidth/2 '用 Form1.ScaleWidth效果优于用Form1. Width Text1.Height = Form1.ScaleHeight/2 '用 Form1.ScaleHeight优于用Form1. Height Command1.Top = Form1.ScaleHeight - Command1.Height Command1.Left = Form1.ScaleWidth - Command1.Width End Sub 第2章 程序设计基础 一、判断题 1 2× 3× 4× 5 6× 7 8 9 10× 二、选择题 1B 2D 3A 4C 5C 6B 7A 8D 9. C 10A 三、填空题 1String 24 3"aaa" 4145 56 63 718 8False 9(x Mod 10) * 10 + x 10 1010 + Int( Rnd * 90 ) 11a * b Mod c 12Log(x)+Sin(3.141593/6) 13Const PI=3.1415926 14日期 15Int(x)+1 四、程序设计题 程序1界面设计略,过程设计如下: 方法一、用文本框控件输入圆的半径 Private Sub Command1_Click Dim x As Single x = Text1.Text Label1.Caption = x * x * 3.141593 End Sub 方法二、用InputBox函数输入圆的半径 Private Sub Command1_Click Dim x As Single '若要求计算结果具有15位有效位数,声明x为Double类型 x = InputBox("r=","输入圆的半径") Label1.Caption = x * x * 3.141593 End Sub 程序2略。 第3章 结构化程序设计与数组 一、判断题 1 2× 3 4× 5 6× 7× 8 9× 10 二、选择题 1A 2D 3C 4C 5D 6B 三、填空题 1If x>y Then t=y: y=x: x=t 2IS 3For i = 0 to 9: B(i) = InputBox("B(" & i & ")="): Next i 4Dim 5String 68 四、程序阅读题 程序1. 0 5 程序2. 20 程序3. 2 4 7 11 16 程序4. 1 4 9 16 25 程序5. 程序6. 五、程序填空题 1q * i s + p * i / q 2r = 0 m Mod n 3i + j - 1 7 - i Print 410 + Int(Rnd * 90) i + 1 To 30 a(i)=a(j) a(i) Mod 2 = 1 六、程序设计题 程序1界面设计略,过程设计如下: Private Sub Form_Click Dim x As Integer, y As Integer, z As Integer Dim max As Integer, midd As Integer, min As Integer x = InputBox("请输入x的值:") y = InputBox("请输入y的值:") z = InputBox("请输入z的值:") If x > y Then max = x Else max = y If z > max Then max = z If x < y Then min = x Else min = y If z < min Then min = z midd = x + y + z - max - min Print max; midd; min End Sub 程序2界面设计略,过程设计如下: Private Sub Form_Click Dim x As Single, y As Single x = InputBox("请输入x的值:") If x > 3 Then Next i y = x + 3 ElseIf x >= 1 Then y = x * x ElseIf x > 0 Then y = Sqr(x) Else y = 0 End If Print y End Sub 程序3界面设计略,过程设计如下: Private Sub Form_Click Dim i As Integer, j As Integer For i = 1 To 9 For j = 1 To 9 Print Tab(j - 1) * 4); i * j; Next j Print Next i End Sub 程序4界面设计略,过程设计如下: Private Sub Form_Click Dim x As Single, s As Single, t As Single Dim i As Integer, n As Integer x = InputBox("请输入x的值:") n = InputBox("请输入n的值:") t = x / 2: s = t For i = 3 To n t = t * x / i s = s + t Next i Print s End Sub 程序5界面设计略,过程设计如下: Private Sub Form_Click Dim e As Single, t As Single, i As Integer e = 2: t = 1: i = 1 While t >= 0.0001 i = i + 1: t = t / i: e = e + t Wend Print e End Sub 程序6界面设计略,过程设计如下: Option Base 1 Private Sub Form_Click Dim n As Integer, a(9, 9) As Integer, i As Integer, j As Integer On Error GoTo k '下列代码中若出现错误,转到标号为K的语句执行。 n = InputBox("请输入n,0<n<10") For i = 1 To n: a(i, 1) = 1: a(i, i) = 1: Next i For i = 3 To n For j = 2 To i - 1 a(i, j) = a(i - 1, j - 1) + a(i - 1, j) Next j, i For i = 1 To n Print Tab(30 - 2 * i); For j = 1 To i Print Space(4 - Len(Trim(Str(a(i, j); Trim(Str(a(i, j); Next j Print Next i Exit Sub k: MsgBox "输入n值小于1或大于10,数组下标超界。" End Sub 第4章 函数与过程 一、判断题 1× 2 3× 4× 5 6× 7× 8 二、填空题 1按地址传送 2b As Long 36 4按值传递 5按地址传递 6Public x As Single 7Static x As Integer 8Form2.y 三、程序阅读题 程序1. s = 2 程序2. 1 程序3. 1 1 2 1 1 2 1 2 2 2 2 3 s = 5 1 1 s = 9 1 2 1 1 3 3 1 1 4 6 4 1 四、程序填空题 1ByeVal k Mod i k = k i 2a Aa Double n-1 a(j) < a(k) 3a As Double, n As Integer 五、程序设计题 程序1界面设计略,过程设计如下: Private Function fsum(x As Double, n As Integer) As Double Dim i As Integer For i = 1 To n fsum = fsum + x(i) Next i fsum = fsum / n End Function 程序2界面设计略,过程设计如下: Private Sub ff(a As Single, n As Integer) Dim i As Integer, x As Single For i = 1 To n 2 x = a(n - i + 1): a(n - i + 1) = a(i): a(i) = x Next i End Sub 程序3界面设计略,过程设计如下: Private Sub find(x As Single, m As byte, n As Byte, _ xmax As Single,ki As Byte,kj As Byte) xmax = x(1,1): ki = 1: kj = 1 For i = 1 To m For j = 1 To n If Abs(x(i, j) > Abs(xmax) Then xmax = x(i, j): ki = i: kj = j Next j, i End Sub t = t * x f = s Call pp(i) 第5章 常用控件 一、判断题 1× 2× 3× 4 5× 6 7× 8 9 10 11× 12× 13 14 15× 16× 17× 18 19 20× 21 22× 23 24× 25 二、选择题 1C 2D 3B 4B 5B 6C 7B 8B 9B 10A 11D 12C 13B 14B 15A 16D 17B 18B 19B 20A 三、填空题 1上、下、左、左 2缇、无关 3&、<Alt>+<Y> 4Enabled 5MaxLength 6Text1.SetFocus 7MultiLine 8Visible 9Alignment 10AutoSize 11ForeColor 120或1 13True 141 15AddItem 161 17List1.Clear 18文本框、列表框 19下拉式组合框、简单组合框、下拉式列表框 20Scroll 21Value 22Change 23定时器不起作用 24Timer 2565535 四、程序阅读题 程序1. 116 程序2. 8 程序3. 23451 程序4. 小,你好! 程序5. 您好 34512 小李,你好! 欢迎使用Visual Basic! 程序6. 李子 程序7. y = 6 程序8. n = 1 苹果 y = 14 n = 3 橘子 n = 5 葡萄 柚子 香蕉 五、程序填空题 1a(i) = Mid(str1, i, 1) 或 a(i) = Mid(Text1.Text, i, 1) p = j a(i) = a(p) Command2.Enabled = True 21 To 2*i1 Command2.Enabled = True Command2.Enabled = False 3Text2.Enabled = False p = 2 Print i Val(Text1.Text) < 2 或 Val(Text1.Text) <= 1 KeyAscii = 13 4List1.ListCount List1.RemoveItem I i = i + 1 5Timer1.Enabled = True x 3600 (x Mod 3600) 60 或 (x - 3600 * h) 60 x = x + 1 6Label1.Left Label1.Left = -Label1.Width 六、程序设计题 程序1. 界面设计略,过程设计如下: Private Sub Command1_Click If Command1.Caption = "显示" Then Print "欢迎使用Visual Basic!": Command1.Caption = "清除" Else Form1.Cls: Command1.Caption = "显示" End If End Sub Private Sub Command2_Click End End Sub Private Sub Form_Load Form1.Cls: Command1.Caption = "显示": Command2.Caption = "退出" End Sub 程序2界面设计略,过程设计如下: Private Sub Form_Load Text1.MaxLength = 1: Text1.Text = "" End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) Label1.Caption = CStr(KeyAscii) End Sub 程序3界面设计略,过程设计如下: Const pwd As String = "123456" '预设密码为123456 Private Sub Command1_Click Cls: Print "欢迎进入!" End Sub Private Sub Form_Load Command1.Caption = "进入": Command1.Enabled = Falsew Text1.Text = "": Text1.PasswordChar = "*" End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If Text1.Text = pwd Then m = MsgBox("口令正确,欢迎进入!"): Command1.Enabled = True Else m = MsgBox("口令错误,请重新输入!"): Text1.Text = "" End If End If End Sub 程序4界面设计略,过程设计如下: Dim num As Integer, m As Integer, rec As Integer Private Sub Form_Load Command1.Caption = "出题": Command1.Enabled = True Text1.Text = "": Text1.Enabled = False: rec = 0 End Sub Private Sub Command1_Click Randomize: num = Int(Rnd * 100) + 1: Text1.Enabled = True Label1.Caption = "": Command1.Enabled = False End Sub Private Sub Command2_Click End End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then m = Val(Text1.Text): rec = rec + 1: Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text): Text1.SetFocus If rec > 10 Then Label1.Caption = "差!重新开始": Call Form_Load Else If m > num Then Label1.Caption = Str(m) & "大了!" ElseIf m < num Then Label1.Caption = Str(m) & "小了!" Else If rec < 5 Then Label1.Caption = "好!猜对了。" Else Label1.Caption = "还行!猜对了。" End If Call Form_Load End If End If End If End Sub 程序5界面设计如图10-3所示,过程设计如下: Private Sub Form_Load Command1(0).Enabled = False: Command1(1).Enabled = False Command1(2).Enabled = False: Label1.Caption = "" End Sub Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 Clipboard.Clear: Clipboard.SetText Text1.SelText Text1.SelText = "": Label1.Caption = "请选择要粘贴的位置!" Command1(0).Enabled = False: Command1(1).Enabled = False Command1(2).Enabled = True Case 1 Clipboard.Clear: Clipboard.SetText Text1.SelText Label1.Caption = "请选择要粘贴的位置!": Command1(0).Enabled = False Command1(1).Enabled = False: Command1(2).Enabled = True Case Else Text1.SelText = Clipboard.GetText: Form_Load Label1.Caption = "粘贴完成!" End Select End Sub Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, _ X As Single, Y As Single) Dim n As Integer n = Text1.SelLength If n > 0 Then Label1.Caption = "选择了" & n & "个字,请选择下一步操作!" Command1(0).Enabled = True: Command1(1).Enabled = True Else Label1.Caption = "" End If End Sub 程序6界面设计如图10-4所示,过程设计如下: Private Sub Form_Load Label1.Caption = " 当前日期:": Text1.Text = Date Option1(0).Caption = "显示日期": Option1(1).Caption = "显示时间" Option1(0).Value = True: Command1.Caption = "退出" End Sub Private Sub Option1_Click(Index As Integer) Select Case Index Case 0 Label1.Caption = "当前日期:": Text1.Text = Date Case 1 Label1.Caption = "当前时间:": Text1.Text = Time End Select End Sub Private Sub Command1_Click End End Sub 程序7过程设计如下: Private Sub Form_Load Label1.Caption = " 当前日期:": Text1.Text = Date Option1(0).Caption = "显示日期": Option1(1).Caption = "显示时间" Option1(0).Value = True: Command1.Caption = "退出" Combo1.AddItem "年-月-日": Combo1.AddItem "月-日-年" Combo1.AddItem "日-月-年": Combo1.Text = "年-月-日" End Sub Private Sub Combo1_Click Dim n As String Select Case Combo1.ListIndex Case 0: n = "yyyy-mm-dd" Case 1: n = "mm-dd-yyyy" Case 2: n = "dd-mm-yyyy" End Select Text1.Text = Format(Date, n) End Sub Private Sub Option1_Click(Index As Integer) Select Case Index Case 0: Label1.Caption = "当前日期:": Text1.Text = Date Case 1: Label1.Caption = "当前时间:": Text1.Text = Time End Select End Sub Private Sub Command1_Click End End Sub 程序8. 界面设计如图10-5所示,过程设计如下: Private Sub Form_Load List1.AddItem "happy": List1.AddItem "apple" List1.AddItem "student": List1.AddItem "computer" End Sub Private Sub Command1_Click List1.AddItem Text1.Text: Text1.SetFocus Text1.SelStart = 0: Text1.SelLength = Len(Text1.Text) End Sub Private Sub Command3_Click List1.Clear End Sub Private Sub Command4_Click End End Sub Private Sub Command2_Click If List1.ListIndex <> -1 Then List1.RemoveItem List1.ListIndex End Sub 9界面设计如图10-6所示,过程设计如下: Private Sub Form_Load Option1(0).Caption = "八进制": Option1(1).Caption = "十六进制" Option1(2).Caption = "二进制" End Sub Private Function tran(k As Long, n As Integer) As String Dim x As Integer, y As String * 1, k1 As Long tran = "": k1 = Abs(k) Do While k1 > 0 x = k1 Mod n If x >= 10 Then y = Chr(Asc("A") + x - 10) Else y = CStr(x) tran = y + tran k1 = k1 n Loop If k < 0 Then tran = "-" + tran End Function Private Sub Option1_Click(Index As Integer) Dim k As Long, n As Integer k = Val(Text1.Text) Select Case Index Case 0 Label2.Caption = "八进制": n = 8 Case 1 Label2.Caption = "十六进制": n = 16 Case 2 Label2.Caption = "二进制": n = 2 End Select Text2.Text = tran(k, n) End Sub 10界面设计如图10-7所示,过程设计如下: Private Sub Form_Load Label1.Left = Width / 2 - Label1.Width / 2 Label1.AutoSize = True HScroll1.Min = 1: HScroll1.Max = 1000 HScroll1.SmallChange = 10: HScroll1.LargeChange = 100 HScroll1.Value = 500: Timer1.Interval = 500 End Sub Private Sub HScroll1_Change Timer1.Interval = HScroll1.Value End Sub Private Sub HScroll1_Scroll Call HScroll1_Change End Sub Private Sub Timer1_Timer Label1.FontSize = Label1.FontSize + 2 Label1.Left = Width / 2 - Label1.Width / 2 If Label1.FontSize >= 72 Then Timer1.Enabled = False End Sub 第6章 图形控件和图形方法 一、判断题 1 2× 3 4× 5 6× 7× 8× 910 二、选择题 1C 2B 3C 4A 5A 6C 7A 8C 9C 10B 11A 12B 13B 14C 15C 三、填空题 1 Circle (ScaleLeft + ScaleWidth / 2, ScaleTop + ScaleHeight / 2), 800 2LoadPicture 3AutoSize、Stretch、False、False 4选中、属性 5形状、矩形 6Picture1.Picture=LodePicture("C:WindowsCloud.bmp") 7图片框、其他控件 8缇、SclaeMode 9颜色 10颜色、圆弧起点处转角、圆弧终点处转角、椭圆纵轴与横轴长度之比 四、程序阅读题 程序1. 转动一条红色直线,其轨迹形成一个圆 程序2. 在窗体上随机的位置、用随机的颜色、半径绘制1000个空心的圆。 程序3. 在图片框内绘制多个黄色边框矩形,填充样式在“实心”、“透明”间交替变换。 五、程序填空题 1Combo1.ListIndex Shape1.BorderStyle Combo2.AddItem Str(i) 2Call pic False n = n + 1 LoadPicture("