2008 年 9 月 计 算 机 二 级 VB 语 言 真 题 一 选 择 题 ( 每 题 2 分, 共 计 70 分 ) 1. 一 个 栈 的 初 始 状 态 为 空 现 将 元 素 1 2 3 4 5 A B C D E 依 次 入 栈, 然 后 再 依 次 出 栈, 则 元 素 出 栈 的 顺 序 是 A)12345ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA 2. 下 列 叙 述 中 正 确 的 是 A) 循 环 队 列 有 队 头 和 队 尾 两 个 指 针, 因 此, 循 环 队 列 是 非 线 性 结 构 B) 在 循 环 队 列 中, 只 需 要 队 头 指 针 就 能 反 映 队 列 中 元 素 的 动 态 变 化 情 况 C) 在 循 环 队 列 中, 只 需 要 队 尾 指 针 就 能 反 映 队 列 中 元 素 的 动 态 变 化 情 况 D) 循 环 队 列 中 元 素 的 个 数 是 由 队 头 指 针 和 队 尾 指 针 共 同 决 定 3. 在 长 度 为 n 的 有 序 线 性 表 中 进 行 二 分 查 找, 最 坏 情 况 下 需 要 比 较 的 次 数 是 A)O(n) B)O(n2) C)O(log2n) D)O(nlog2n) 4. 下 列 叙 述 中 正 确 的 是 A) 顺 序 存 储 结 构 的 存 储 一 定 是 连 续 的, 链 式 存 储 结 构 的 存 储 空 间 不 一 定 是 连 续 的 B) 顺 序 存 储 结 构 只 针 对 线 性 结 构, 链 式 存 储 结 构 只 针 对 非 线 性 结 构 C) 顺 序 存 储 结 构 能 存 储 有 续 表, 链 式 存 储 结 构 不 能 存 储 有 序 表 D) 链 式 存 储 结 构 比 顺 序 存 储 结 构 节 省 存 储 空 间 5. 数 据 流 图 中 带 有 箭 头 的 线 段 表 示 的 是 A) 控 制 流 B) 事 件 驱 动 C) 模 块 调 用 D) 数 据 流 6. 在 软 件 开 发 中, 需 求 分 析 阶 段 可 以 使 用 的 同 居 是 A)N-S 图 B)DFD 图 C)PAD 图 D) 程 序 流 程 图 7. 在 面 向 对 象 方 法 中, 不 属 于 对 象 基 本 特 点 的 是 A) 一 致 性 B) 分 类 性 C) 多 态 性 D) 标 识 唯 一 性 8. 一 间 宿 舍 可 以 住 多 个 学 生, 则 实 体 宿 舍 和 学 生 之 间 的 联 系 是 A) 一 对 一 B) 一 对 多 C) 多 对 一 D) 多 对 多 9. 在 数 据 管 理 技 术 发 展 的 三 个 阶 段 中, 数 据 共 享 最 好 的 是 A) 人 工 管 理 阶 段 B) 文 件 系 统 阶 段 C) 数 据 库 系 统 阶 段 D) 三 个 阶 段 相 同 10. 有 三 个 关 系 R S 和 T 如 下 : 由 关 系 R 和 S 通 过 运 算 得 到 关 系 T, 则 所 使 用 的 运 算 为 A) 笛 卡 尔 积 B) 交 C) 并 D) 自 然 连 接 11. 在 设 计 窗 体 时 双 击 窗 体 的 任 何 地 方, 可 以 打 开 的 窗 口 是 A) 代 码 窗 口 B) 属 性 窗 口 C) 工 程 资 源 管 理 器 窗 口 D) 工 具 箱 窗 口 12. 若 变 量 a 未 实 现 定 义 而 直 接 使 用 ( 例 如 :a=0), 则 变 量 a 的 类 型 是
A)Integer B)String C)Boolean D)Variant 13. 把 圆 周 率 的 近 似 值 3.14159 存 放 在 变 量 pi 中, 应 该 把 变 量 pi 定 义 为 A)Dim pi As Integer B)Dim pi(7) As Integer C)Dim pi As Single D)Dim pi As Long 14. 表 达 式 2*3^2-4*2/2+3^2 的 值 是 A)30 B)31 C)49 D)48 15. 以 下 不 能 输 出 Program 的 语 句 是 A)Print mid("vbprogram"3,7) B)Print Right("VBProgram",7) C)Print Mid("VBProgram",3) D)Print Left("VBProgram",7) 16. 窗 体 上 有 一 个 名 称 为 Frame1 的 框 架 ( 如 图 ), 若 要 把 框 架 上 显 示 的 "Frame1" 改 为 汉 字 框 架, 下 面 正 确 的 语 句 是 A)Frame1.Name=" 框 架 " B)Frame1.Caption=" 框 架 " C)Frame1.Text=" 框 架 " D)Frame1.Value=" 框 架 " 17. 以 下 叙 述 中 错 误 的 是 A) 在 通 用 过 程 中, 多 个 形 式 参 数 之 间 可 以 用 逗 号 作 为 分 隔 符 B) 在 Print 方 法 中, 多 个 输 出 项 之 间 可 以 用 逗 号 作 为 分 隔 符 C) 在 Dim 语 句 中, 所 定 义 的 多 个 变 量 可 以 用 逗 号 作 为 分 隔 符 D) 当 一 行 中 有 多 个 语 句 时, 可 以 用 逗 号 作 为 分 隔 符 18. 设 窗 体 上 有 一 个 列 表 框 控 件 List1, 含 有 若 干 列 表 项 以 下 能 表 示 当 前 被 选 中 的 列 表 项 内 容 的 是 A)List1.List B)List1.ListIndex C)List1.Text D)List1.Index 19. 设 a=4,b=5,c=6, 执 行 语 句 Print a<b And b<c 后, 窗 体 上 显 示 的 是 A)True B)False C) 出 错 信 息 D)0 20. 执 行 下 列 语 句 strinpug=inputbox(" 请 输 入 字 符 串 "," 字 符 串 丢 画 框 "," 字 符 串 ) 将 显 示 输 入 对 话 框 如 果 此 时 直 接 点 击 " 确 定 " 按 钮, 则 变 量 strinput 的 内 容 是 A)" 请 输 入 字 符 串 " B)" 字 符 串 对 话 框 " C)" 字 符 串 " D) 空 字 符 串 21. 窗 体 上 有 Command1 Command2 两 个 命 令 按 钮 现 编 写 以 下 程 序 : Option Base 0 Dim a() As Integer m = InputBox(" 请 输 入 一 个 正 整 数 ")
ReDim a(m) Private Sub Command2_Click() m = InputBox(" 请 输 入 一 个 正 整 数 ") ReDim a(m) 运 行 程 序 是, 单 击 Command1 后 输 入 整 数 10, 再 单 击 Command2 后 输 入 整 数 5, 则 数 组 a 中 元 素 的 个 数 是 A)5 B)6 C)10 D)11 22. 在 窗 体 上 画 一 个 命 令 按 钮 和 一 个 标 签, 其 名 称 分 别 为 Command1 和 Label1, 然 后 编 写 如 下 的 事 件 过 程 conter = 0 For I = 1 To 4 For J = 6 To 1 Step -2 conter = conter + 1 Next J Label1.Caption = Str(conter) 程 序 运 行 后, 单 击 命 令 按 钮, 标 签 中 显 示 的 内 容 是 A)11 B)12 C)16 D)20 23. 在 窗 体 上 画 一 个 名 为 command1 的 命 令 按 钮, 然 后 编 写 以 下 程 序 : Dim M(10) As Integer For k = 1 To 10 M(k) = 12 - k Next k x = 8 Print M(2 + M(x)) 运 行 程 序, 单 击 命 令 按 钮, 在 窗 体 上 显 示 的 是 A)6 B)5 C)7 D)8 24. 以 下 关 于 过 程 及 过 程 参 数 的 描 述 中, 错 误 的 是 A) 调 用 过 程 时 可 以 用 控 件 名 称 作 为 实 际 参 数 B) 用 数 组 作 为 过 程 的 参 数 是, 使 用 的 是 传 地 址 方 式 C) 只 有 函 数 过 程 能 够 将 过 程 中 处 理 的 信 息 传 回 到 调 用 的 程 序 中 D) 窗 体 (Form) 可 以 作 为 过 程 的 参 数 25. 在 窗 体 上 画 一 个 名 为 Command1 的 命 令 按 钮, 再 画 两 个 名 称 分 别 为 Label1 Label2 的 标 签, 然 后 编 写 如 下 程 序 代 码 : Private X As Integer X = 5: Y = 3
Call proc(x, Y) Label1.Caption = X Label2.Caption = Y Private Sub proc(a As Integer, ByVal b As Integer) X = a * a Y = b + b 程 序 运 行 后, 单 击 命 令 按 钮, 则 两 个 标 签 中 显 示 的 内 容 分 别 是 A)25 和 3 B)5 和 3 C)25 和 6 D)5 和 6 26. 在 窗 体 上 有 两 个 名 称 分 别 为 Text1 Text2 的 文 本 框, 一 个 名 称 为 Command1 的 命 令 按 钮 运 行 后 的 窗 体 外 观 如 图 所 示 设 有 如 下 的 类 型 和 变 量 生 命 Private Type Person name As String * 8 major As String * 20 End Type Dim p As Person 设 文 本 框 中 的 数 据 已 正 确 地 赋 值 给 Person 类 型 的 变 量 p, 当 单 击 保 存 按 钮 时, 能 够 正 确 地 把 变 量 中 的 数 据 写 入 随 机 文 件 Test2.dat 中 的 程 序 段 是 A)Open "c:\test2.dat" For Output As #1 Put #1,1,p Close #1 B)Open "c:\test2.dat" For Random As #1 Get #1,1,p Close #1 C)Open "c:\test2.dat" For Random As #1 Len=Len(p) Put #1,1,p Close #1 D)Open "c:\test2.dat" For Random As #1 Len=Len(p) Get #1,1,p Close #1 27. 在 窗 体 上 画 一 个 名 称 为 Text1 的 文 本 框 和 一 个 名 称 为 Command1 的 命 令 按 钮, 然 后 编 写 如 下 事 件 过 程 : Dim i As Integer, n As Integer For i = 1 To 50 i = i + 3 n = n + 1
Next If i > 10 Then Exit For Text1.Text = Str(n) 程 序 运 行 后, 单 击 命 令 按 钮, 在 文 本 框 中 显 示 的 值 是 A)2 B)3 C)4 D)5 28. 假 定 有 以 下 循 环 结 构 Do Until 条 件 表 达 式 循 环 体 Loop 则 以 下 正 确 的 描 述 是 A) 如 果 条 件 表 达 式 的 值 是 0, 则 一 次 循 环 体 也 不 执 行 B) 如 果 条 件 表 达 式 的 值 不 是 0, 则 至 少 执 行 一 次 循 环 体 C) 不 论 条 件 表 达 式 的 值 是 否 为 真, 至 少 要 执 行 一 次 循 环 体 D) 如 果 条 件 表 达 式 的 值 恒 为 0, 则 无 限 次 执 行 循 环 体 29. 在 窗 体 上 画 一 个 命 令 按 钮, 然 后 编 写 如 下 事 件 过 程 : Dim I, Num Randomize Do For I = 1 To 1000 Num = Int(Rnd * 100) Print Num Select Case Num Case 12 Exit For Case 58 Exit Do Case 65, 68, 92 End End Select Loop 上 述 事 件 过 程 执 行 后, 下 列 描 述 中 正 确 的 是 A)Do 循 环 执 行 的 次 数 为 1000 此 B) 在 For 循 环 中 产 生 的 随 机 数 小 于 或 等 于 100 C) 当 所 产 生 的 随 机 数 为 12 时 结 束 所 有 循 环 D) 当 所 产 生 的 随 机 数 为 65,68 或 92 时 窗 体 关 闭 程 序 结 束 30. 在 窗 体 上 画 一 个 名 为 Command1 的 命 令 按 钮, 然 后 编 写 如 下 代 码 :
Option Base 1 Dim a a = Array(1, 2, 3, 4) j = 1 For I = 4 To 1 Step -1 s = s + a(i) * j j = j * 10 Print s 运 行 上 面 的 程 序, 其 输 出 结 果 是 A)1234 B)12 C)34 D)4321 31. 设 有 如 下 通 用 过 程 Public Function Fun(xStr As String) As String Dim tstr As String, strl As Integer tstr = "" strl = Len(xStr) I = 1 Do While I <= strl / 2 tstr = tstr & Mid(xStr, I, 1) & Mid(xStr, strl - I + 1, 1) I = I + 1 Loop Fun = tstr End Function 在 窗 体 上 画 一 个 名 称 为 Command1 的 命 令 按 钮 然 后 编 写 如 下 的 事 件 过 程 : Dim S1 As String S1 = "abcdef" Print UCase(Fun(S1)) 程 序 运 行 后, 单 击 命 令 按 钮, 输 出 结 果 是 A)ABCDEF B)abcdef C)AFBECD D)DEFABC 32. 某 人 为 计 算 n!(0<n<=12) 编 写 了 下 面 的 函 数 过 程 Private Function fun(n As Integer) As Long Dim p As Long p = 1 For k = n - 1 To 2 Step -1 p = p * k Next k fun = p End Function 在 调 试 时 发 现 该 函 数 过 程 产 生 的 结 果 是 错 误 的, 程 序 需 要 修 改 下 面 的 修 改 方 案 中 有 3
种 是 正 确 的, 错 误 的 方 案 是 A) 把 p=1 改 为 p=n B) 把 For k=n-1 To 2 Step -1 改 为 For k=1 T0 n-1 C) 把 For k=n-1 To 2 Step -1 改 为 For k=1 T0 n D) 把 For k=n-1 To 2 Step -1 改 为 For k=2 T0 n 33. 假 定 有 以 下 函 数 过 程 : Function Fun(S As String) As String Dim s1 As String For I = 1 To Len(S) s1 = LCase(Mid(S, I, 1)) + s1 Fun = s1 End Function 在 窗 体 上 画 一 个 命 令 按 钮, 然 后 编 写 如 下 事 件 过 程 : Dim Str1 As String, Str2 As String Str1 = InputBox(" 请 输 入 一 个 字 符 串 ") Str2 = Fun(Str1) Print Str2 程 序 运 行 后, 单 击 命 令 按 钮, 如 果 在 输 入 对 话 框 中 输 入 字 符 串 abcdefg, 则 单 击 确 定 按 钮 后 在 窗 体 上 的 输 出 结 果 为 A)ABCDEFG B)abcdefg C)GFEDCBA D)gfedcba 34. 为 计 算 a 的 n 次 方 的 值, 某 人 编 写 了 函 数 power 如 下 : Private Function power(a As Integer, n As Integer) As Long Dim p As Long p = a For k = 1 To n p = p * a Next k power = p End Function 在 调 试 时 发 现 是 错 误 的, 例 如 Print power(5,4) 的 输 出 值 应 该 是 625, 但 实 际 输 出 是 3125 程 序 需 要 修 改 下 面 的 修 改 方 案 中 有 3 个 是 正 确 的, 错 误 的 一 个 是 A) 把 For k=1 To n 改 为 For k=2 To n B) 把 p=p*a 改 为 p=p^n C) 把 For k=1 To n 改 为 For k=2 To n-1 D) 把 p=a 改 为 p=1 35. 某 人 编 写 了 下 面 的 程 序
Dim a As Integer, b As Integer a = InputBox(" 请 输 入 整 数 ") b = InputBox(" 请 输 入 整 数 ") pro a pro b Call pro(a + b) Private Sub pro(n As Integer) While (n > 0) Print n Mod 10; n = n \ 10 Wend Print 但 调 试 时 发 现 只 输 出 了 前 2 行 ( 即 2 个 数 的 反 序 ), 而 未 输 出 第 3 行 ( 即 2 个 数 之 和 的 反 序 ), 程 序 需 要 修 改 下 面 的 修 改 方 案 中 正 确 的 是 A) 把 过 程 pro 的 形 式 参 数 n As Integer 改 为 ByVal n As Integer B) 把 Call pro(a+b) 改 为 pro a+b C) 把 n=n\10 改 为 n=n/10 D) 在 pro b 语 句 之 后 增 加 语 句 c%=a+b, 再 把 Call pro(a+b) 改 为 pro c 二 填 空 题 ( 每 空 2 分, 共 计 30 分 ) 1. 对 下 列 二 叉 树 进 行 中 序 遍 历 的 结 果 是 1 2. 按 照 软 件 测 试 的 一 般 步 骤, 继 承 测 试 应 在 2 测 试 之 后 进 行 3. 软 件 工 程 三 要 素 包 括 方 法 工 具 和 过 程, 其 中, 3 支 持 软 件 开 发 的 各 个 环 节 的 控 制 和 管 理 4. 数 据 库 设 计 包 括 概 念 设 计 4 和 物 理 设 计 5. 在 二 维 表 中, 元 组 的 5 不 能 再 分 成 更 小 的 数 据 项 6. 在 窗 体 上 画 一 个 文 本 框 一 个 标 签 和 一 个 命 令 按 钮, 其 名 称 分 别 为 Text1 Label1 和 Command1, 然 后 编 写 如 下 两 个 事 件 过 程 : S$ = InputBox(" 请 输 入 一 个 字 符 串 ") Text1.Text = S$
Private Sub Text1_Change() Label1.Caption = UCase(Mid(Text1.Text, 7)) 程 序 运 行 后, 单 击 命 令 按 钮, 将 显 示 一 个 输 入 对 话 框, 如 果 在 该 对 话 框 中 输 入 字 符 串 VisualBasic, 则 在 标 签 中 显 示 的 内 容 是 6 7. 在 窗 体 上 画 一 个 命 令 按 钮, 其 名 称 为 Command1, 然 后 编 写 如 下 事 件 过 程 : a$ = "National Computer Rank Examination" n = Len(a$) S = 0 For I = 1 To n b$ = Mid(a$, I, 1) If b$ = "n" Then S = S + 1 End If Print S 程 序 运 行 后, 单 击 命 令 按 钮, 输 出 结 果 是 7 8. 为 了 在 运 行 时 把 d:\pic 文 件 夹 下 的 图 形 文 件 a.jpg 装 入 图 片 框 Picture1, 所 使 用 的 语 句 为 8 9. 设 有 如 下 程 序 : Private Sub Form_Click() Cls a$ = "ABCDFG" For I = 1 To 6 Print Tab(12 - I); 9 程 序 运 行 后, 单 击 窗 体, 结 果 如 图 所 示, 请 填 空 10. 在 窗 体 上 画 一 个 命 令 按 钮, 其 名 称 为 Command1, 然 后 编 写 如 下 代 码 : Option Base 1 Dim Arr Arr = Array(43, 68, -25, 65, -78, 12, -79, 43, -94, 72) pos = 0 neg = 0 For k = 1 To 10 If Arr(k) > 0 Then 10
Else 11 End If Next k Print pos, neg 以 上 程 序 的 功 能 是, 计 算 并 输 出 数 组 Arr 中 10 个 数 的 正 数 之 和 pos 与 负 数 之 和 neg, 请 填 空 12. 在 窗 体 上 画 一 个 名 为 Command1 的 命 令 按 钮, 然 后 编 写 如 下 程 序 : Dim i As Integer Sum = 0 n = InputBox("Enter a number") n = Val(n) For i = 1 To n Sum = 12 Next i Print Sum Function fun(t As Integer) As Long p = 1 For i = 1 To t p = p * i Next i 13 End Function 以 上 程 序 的 功 能 是, 计 算 1!+2!+3!+...+n!, 其 中 n 从 键 盘 输 入, 请 填 空 14. 在 窗 体 上 画 一 个 文 本 框, 名 称 为 Text1, 然 后 编 写 如 下 程 序 : Private Sub Form_Load() Open "d:\temp\dat.txt" For Output As #1 Text1.Text = "" Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then If UCase(Text1.Text) = 14 Then Close #1 End Else Write #1, 15 Text1.Text = "" End If End If