2008 年 4 月 计 算 机 二 级 考 试 VB 笔 试 试 题 一 选 择 题 ( 每 题 2 分, 共 计 70 分 ) 1. 程 序 流 程 图 中 带 有 箭 头 的 线 段 表 示 的 是 A) 图 元 关 系 B) 数 据 流 C) 控 制 流 D) 调 用 关 系 2. 结 构 化 程 序 设 计 的 基 本 原 则 不 包 括 A) 多 态 性 B) 自 顶 向 下 C) 模 块 化 D) 逐 步 求 精 3. 软 件 设 计 中 模 块 划 分 应 遵 循 的 准 则 是 A) 低 内 聚 低 耦 合 B) 高 内 聚 低 耦 合 C) 低 内 聚 高 耦 合 D) 高 内 聚 高 耦 合 4. 在 软 件 开 发 中, 需 求 分 析 阶 段 产 生 的 主 要 文 档 是 A) 可 行 性 分 析 报 告 B) 软 件 需 求 规 格 说 明 书 C) 概 要 设 计 说 明 书 D) 集 成 测 试 计 划 5. 算 法 的 有 穷 性 是 指 A) 算 法 程 序 运 行 的 时 间 是 有 限 B) 算 法 程 序 所 处 理 的 数 据 是 有 限 的 C) 算 法 程 序 的 长 度 是 有 限 的 D) 算 法 只 能 被 有 限 的 用 户 使 用 6.- 对 长 度 为 n 的 线 性 表 排 序, 在 最 坏 的 情 况 下, 比 较 次 数 不 是 n(n-1)/2 的 排 序 算 法 是 A) 快 速 排 序 B) 冒 泡 排 序 C) 直 接 插 入 排 序 D) 堆 排 序 7. 下 列 关 于 栈 的 叙 述 正 确 的 是 A) 栈 按 先 进 先 出 组 织 数 据 B) 栈 按 现 金 后 出 组 织 数 据 C) 只 能 在 栈 底 插 入 数 据 D) 不 能 删 除 数 据 8. 在 数 据 库 设 计 中, 将 E-R 图 转 换 成 关 系 数 据 模 型 的 过 程 属 于 A) 需 求 分 析 阶 段 B) 概 念 设 计 阶 段 C) 逻 辑 设 计 阶 段 C) 物 理 设 计 阶 段 9. 有 一 个 关 系 R.S 和 T 如 下 由 关 系 R 和 S 通 过 运 算 得 到 关 系 T, 则 使 用 的 运 算 为 A) 并 B) 自 然 连 接 C) 笛 卡 尔 积 D) 交 10. 设 有 表 示 学 生 选 课 的 三 张 表, 学 生 S( 学 号, 姓 名, 性 别, 年 龄, 身 份 证 号 ), 课 程 C( 课 号, 课 名 ), 选 课 SC( 学 号, 课 号, 成 绩 ), 则 表 示 SC 的 关 键 字 ( 键 或 码 ) 为 A) 课 号, 成 绩 B) 学 号, 成 绩 C) 学 号, 课 号 D) 学 号, 姓 名, 成 绩 11) 以 下 叙 述 中 错 误 的 是 ( ) A) 标 准 模 块 文 件 的 扩 展 名 是.bas B) 标 准 模 块 文 件 是 纯 代 码 文 件 C) 在 标 准 模 块 中 声 明 的 全 局 变 量 可 以 在 整 个 工 程 中 使 用 D) 在 标 准 模 块 中 不 能 定 义 过 程 12) 在 Viusal Basic 中, 表 达 式 3*2\5 Mod 3 的 值 是 ( ) A)1 B)0 C)3 D) 出 现 错 误 提 示
(13) 以 下 选 项 中, 不 合 法 的 Visual Basic 的 变 量 名 是 ( ) A)a56 B)_xyz C)a_b D)andif (14) 以 下 数 组 定 义 语 句 中, 错 误 的 是 ( ) A)Static a(10) As Integer B)Dim c(3, 1 To 4) C)Dim d(-10) D)Dim b(0 To 5, 1 To 3) As Integer 15) 现 有 语 句 :y=iif(x>0, x Mod 3, 0), 设 x=10, 则 y 的 值 是 ( ) A)0 B)1 C)3 D) 语 句 有 错 16) 为 了 使 文 本 框 同 时 具 有 垂 直 和 水 平 滚 动 条, 应 先 把 MultiLine 属 性 设 置 为 True, 然 后 再 把 ScrollBars 属 性 设 置 为 ( ) A)0 B)1 C)2 D)3 17) 文 本 框 Text1 的 KeyDown 事 件 过 程 如 下 : Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) 其 中 参 数 KeyCode 的 值 表 示 的 是 发 生 此 事 件 时 ( ) A) 是 否 按 下 了 Alt 键 或 Ctrl 键 B) 按 下 的 是 哪 个 数 字 键 C) 所 按 的 键 盘 键 的 键 码 D) 按 下 的 是 哪 个 鼠 标 键 18) 窗 体 上 有 一 个 名 称 为 Hscroll1 的 滚 动 条, 程 序 运 行 后, 当 单 击 滚 动 条 两 端 的 箭 头 时, 立 即 在 窗 体 上 显 示 滚 动 框 的 位 置 ( 即 刻 度 值 ) 下 面 能 够 实 现 上 述 操 作 的 事 件 过 程 是 ( ) A)Private Sub Hscroll1_Change() Print Hscroll1.Value B)Private Sub Hscroll1_Change() Print Hscroll1.SmallChange C)Private Sub Hscroll1_Scroll() Print Hscroll1.Value D)Private Sub Hscroll1_ Scroll () Print Hscroll1. SmallChange 19) 若 已 把 一 个 命 令 按 钮 的 Default 属 性 设 置 为 True, 则 下 面 可 导 致 按 钮 的 Click 事 件 过 程 被 调 用 的 操 作 是 ( ) A) 用 鼠 标 右 键 单 击 此 按 钮 B) 按 键 盘 上 的 Esc 键 C) 按 键 盘 上 的 回 车 键 D) 用 鼠 标 右 键 双 击 此 按 钮 20) 要 使 两 个 单 选 按 钮 属 于 同 一 个 框 架, 正 确 的 操 作 是 ( ) A) 先 画 一 个 框 架, 再 在 框 架 中 画 两 个 单 选 按 钮 B) 先 画 一 个 框 架, 再 在 框 架 外 画 两 个 单 选 按 钮, 然 后 把 单 选 按 钮 拖 到 框 架 中 C) 先 画 两 个 单 选 按 钮, 再 用 框 架 将 单 选 按 钮 框 起 来 D) 以 上 三 种 方 法 都 正 确 21) 能 够 存 放 组 合 框 的 所 有 项 目 内 容 的 属 性 是 ( ) A)Caption B)Text C)List D)Selected 22) 设 窗 体 上 有 一 个 标 签 Label 和 一 个 计 时 器 Timer1,Timer1 的 Interval 属 性 被 设 置 为 1000, Enabled 属 性 被 设 置 为 True 要 求 程 序 运 行 时 每 秒 在 标 签 中 显 示 一 次 系 统 当 前 时 间 以 下 可 以
实 现 上 述 要 求 的 事 件 过 程 是 ( ) A)Private Sub Timer1_Timer() Label1.Caption=True B)Private Sub Timer1_Timer() Label1.Caption=Time$ C)Private Sub Timer1_Timer() Label1.Interval=1 D)Private Sub Timer1_Timer() For k=1 To Timer1.Interval Label1.Caption=Timer Next k 23) 设 有 如 图 所 示 窗 体 和 以 下 程 序 : Text1.Text = "Visual Basic" Private Sub Text1_LostFocus() If Text1.Text <> "BASIC" Then Text1.Text = "" Text1.SetFocus End If 程 序 运 行 时, 在 Text1 文 本 框 中 输 入 "Basic"( 如 图 所 示 ), 然 后 单 击 Command1 按 钮, 则 产 生 的 结 果 是 ( ) A) 文 本 框 中 无 内 容, 焦 点 在 文 本 框 中 B) 文 本 框 中 为 "Basic", 焦 点 在 文 本 框 中 C) 文 本 框 中 为 "Basic", 焦 点 在 按 钮 上 D) 文 本 框 中 为 "Visual Basic", 焦 点 在 按 钮 上 24) 窗 体 上 有 一 个 名 称 为 Command1 的 命 令 按 钮, 其 事 件 过 程 如 下 : x = "VisualBasicProgramming" a = Right(x, 11) b = Mid(x, 7, 5) c = MsgBox(a,, b)
运 行 程 序 后 单 击 命 令 按 钮, 以 下 叙 述 中 错 误 的 是 ( ) A) 信 息 框 的 标 题 是 Basic B) 信 息 框 中 的 提 示 信 息 是 Programming C)c 的 值 是 函 数 的 返 回 值 D)MsgBox 的 使 用 格 式 有 错 25) 设 工 程 文 件 包 含 两 个 窗 体 文 件 Form1.frm Form2.frm 及 一 个 标 准 模 块 文 件 Module1.bas 两 个 窗 体 上 分 别 只 有 一 个 名 称 为 Command1 的 命 令 按 钮 Form1 的 代 码 如 下 : Public x As Integer Form2.Show Private Sub Form_Load() x = 1 y = 5 Form2 的 代 码 如 下 : Print Form1.x, y Module1 的 代 码 如 下 : Public y As Integer 运 行 以 上 程 序, 单 击 Form1 的 命 令 按 钮 Command1, 则 显 示 Form2; 再 单 击 Form2 上 的 命 令 按 钮 Command1, 则 窗 体 上 显 示 的 是 ( ) A)1 5 B)0 5 C)0 0 D) 程 序 有 错 26) 窗 体 上 有 一 个 名 称 为 Text1 的 文 本 框, 一 个 名 称 为 Command1 的 命 令 按 钮 窗 体 文 件 的 程 序 如 下 : Private Type x a As Integer b As Integer End Type Dim y As x y.a = InputBox("") If y.a \ 2 = y.a / 2 Then y.b = y.a * y.a Else y.b = Fix(y.a / 2) End If Text1.Text = y.b 对 以 上 程 序, 下 列 叙 述 中 错 误 的 是 ( ) A)x 是 用 户 定 义 的 类 型 B)InputBox 函 数 弹 出 的 对 话 框 中 没 有 提 示 信 息
C) 若 输 入 的 是 偶 数,y.b 的 值 为 该 偶 数 的 平 方 D)Fix(y.a/2) 把 y.a/2 的 小 数 部 分 四 舍 五 入, 转 换 为 整 数 返 回 27) 窗 体 上 有 一 个 名 称 为 CD1 的 通 用 对 话 框 控 件 和 由 四 个 命 令 按 钮 组 成 的 控 件 数 组 Command1, 其 下 标 从 左 到 右 分 别 为 0 1 2 3, 窗 体 外 观 如 图 所 示 命 令 按 钮 的 事 件 过 程 如 下 : Private Sub Command1_Click(Index As Integer) Select Case Index Case 0: CD1.Action = 1 Case 1: CD1.ShowSave Case 2: CD1.Action = 5 Case 3: End End Select 对 上 述 程 序, 下 列 描 述 中 错 误 的 是 ( ) A) 单 击 打 开 按 钮, 显 示 打 开 文 件 的 对 话 框 B) 单 击 保 存 按 钮, 显 示 保 存 文 件 的 对 话 框 C) 单 击 打 印 按 钮, 能 够 设 置 打 印 选 项, 并 执 行 打 印 操 作 D) 单 击 退 出 按 钮, 结 束 程 序 的 运 行 28) 窗 体 上 有 两 个 水 平 滚 动 条 HV HT, 还 有 一 个 文 本 框 Text1 和 一 个 标 题 为 计 算 的 命 令 按 钮 Command1, 并 编 写 以 下 程 序 : Call cale(hv.value, HT.Value) Public Sub cale(x As Integer, y As Integer) Text1.Text = x * y 运 行 程 序, 单 击 计 算 按 钮, 可 根 据 速 度 与 时 间 计 算 出 距 离, 并 显 示 计 算 结 果 对 以 上 程 序, 下 列 叙 述 中 正 确 的 是 ( ) A) 过 程 调 用 语 句 不 对, 应 为 cale(hv, HT) B) 过 程 定 义 语 句 的 形 式 参 数 不 对, 应 为 Sub cale(x As Control, y As Control) C) 计 算 结 果 在 文 本 框 中 显 示 出 来 D) 程 序 不 能 正 确 运 行 29) 现 有 如 下 程 序 :
s = 0 For i = 1 To 5 s = s + f(5 + i) Next Print s Public Function f(x As Integer) If x >= 10 Then t = x + 1 Else t = x + 2 End If f = t End Function 运 行 程 序, 则 窗 体 上 显 示 的 是 ( ) A)38 B)49 C)61 D)70 30) 窗 体 上 有 一 个 用 菜 单 编 辑 器 设 计 的 菜 单 运 行 程 序, 并 在 窗 体 上 单 击 鼠 标 右 键, 则 弹 出 一 个 快 捷 菜 单 如 图 所 示 以 下 叙 述 中 错 误 的 是 ( ) A) 在 设 计 粘 贴 菜 单 项 时, 在 菜 单 编 辑 器 窗 口 中 设 置 了 有 效 属 性 ( 有 ) B) 菜 单 中 的 横 线 是 在 该 菜 单 项 的 标 题 输 入 框 中 输 入 了 一 个 - ( 减 号 ) 字 符 C) 在 设 计 选 中 菜 单 项 时, 在 菜 单 编 辑 器 窗 口 中 设 置 复 选 属 性 ( 有 ) D) 在 设 计 该 弹 出 菜 单 的 主 菜 单 项 时, 在 菜 单 编 辑 器 窗 口 中 去 掉 可 见 前 面 的 31) 窗 体 上 有 一 个 名 称 为 Picture1 的 图 片 框 控 件, 一 个 名 称 为 Label1 的 标 签 控 件, 如 图 所 示 现 有 如 下 程 序 : Public Sub display(x As Control) If TypeOf x Is Label Then x.caption = " 计 算 机 等 级 考 试 " Else x.picture = LoadPicture("pic.jpg") End If Private Sub Label1_Click() Call display(label1) Private Sub Picture1_Click()
Call display(picture1) 对 以 上 程 序, 下 列 叙 述 中 错 误 的 是 ( ) A) 程 序 运 行 时 会 出 错 B) 单 击 图 片 框, 在 图 片 框 中 显 示 一 幅 图 片 C) 过 程 中 的 x 是 控 件 变 量 D) 单 击 标 签, 在 标 签 中 显 示 一 串 文 字 32) 窗 体 上 有 两 个 名 称 分 别 为 Text1 Text2 的 文 本 框 Text1 的 KeyUp 事 件 过 程 如 下 : Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) Dim c As Integer c = UCase(Chr(KeyCode)) Text2.Text = Chr(Asc(c) + 2) 当 向 文 本 框 Text1 中 输 入 小 写 字 母 a 时, 文 本 框 Text2 中 显 示 的 是 ( ) A)A B)a C)C D)c 33) 设 窗 体 上 有 一 个 文 本 框 Text1 和 一 个 命 令 按 钮 Command1, 并 有 以 下 事 件 过 程 : Dim s As String, ch As String s = "" For k = 1 To Len(Text1) ch = Mid(Text1, k, 1) s = ch + s Next k Text1.Text = s 程 序 执 行 时, 在 文 本 框 中 输 入 Basic, 然 后 单 击 命 令 按 钮, 则 Text1 中 显 示 的 是 ( ) A)Basic B)cisaB C)BASIC D)CISAB 34) 某 人 编 写 了 如 下 程 序, 用 来 求 10 个 整 数 ( 整 数 从 键 盘 输 入 ) 中 的 最 大 值 : Dim a(10) As Integer, max As Integer For k = 1 To 10 a(k) = InputBox(" 输 入 一 个 整 数 ") Next k max = 0 For k = 1 To 10 If a(k) > max Then max = a(k) End If Next k Print max 运 行 程 序 时 发 现, 当 输 入 10 个 整 数 时, 可 以 得 到 正 确 结 果, 但 输 入 10 个 负 数 时 结 果 是 错 误 的 程 序 需 要 修 改, 下 面 的 修 改 中 可 以 得 到 正 确 运 行 结 果 的 是 ( ) A) 把 If a(k) > max Then 改 为 If a(k) < max Then B) 把 max = a(k) 改 为 a(k) = max C) 把 第 2 个 循 环 语 句 For k = 1 To 10 改 为 For k = 2 To 10
D) 把 max = 0 改 为 max = a(10) 35) 已 知 4 行 3 列 的 全 局 数 组 score(4,3) 中 存 放 了 4 个 学 生 3 门 课 程 的 考 试 成 绩 ( 均 为 整 数 ), 现 需 要 计 算 每 个 学 生 的 总 分, 某 人 编 写 程 序 如 下 : Option Base 1 Dim sum As Integer sum = 0 For i = 1 To 4 For j = 1 To 3 sum = sum + sore(i, j) Next j Next i 运 行 程 序 时 发 现, 除 第 1 个 人 的 总 分 计 算 正 确 外, 其 他 人 的 总 分 都 是 错 误 的 程 序 需 要 修 改 以 下 修 改 方 案 中 正 确 的 是 ( ) A) 把 外 层 循 环 语 句 For i = 1 To 4 改 为 For j = 1 To 3 内 层 循 环 语 句 For j = 1 To 3 改 为 For i = 1 To 4 B) 把 sum = 0 移 到 For i = 1 To 4 和 For j = 1 To 3 之 间 C) 把 sum = sum + sore(i, j) 改 为 sum = sum + sore(j, i) D) 把 sum = sum + sore(i, j) 改 为 sum = sore(j, i) 二 填 空 题 ( 每 空 2 分, 共 计 30 分 ) 1) 测 试 用 例 包 括 输 入 值 集 和 1 值 集 2) 深 度 为 5 的 满 二 叉 树 有 2 叶 子 结 点 3) 设 某 循 环 队 列 的 容 量 为 50, 头 指 针 front=5( 指 向 队 头 元 素 的 前 一 位 置 ), 尾 指 针 rear=29( 指 向 队 尾 元 素 ), 则 该 循 环 队 列 中 共 有 3 个 元 素 4) 在 关 系 数 据 库 中, 用 来 表 示 实 体 之 间 联 系 的 是 4 5) 在 数 据 库 管 理 性 系 统 提 供 的 数 据 定 义 语 言 数 据 操 纵 语 言 和 数 据 控 制 语 言 中, 5 负 责 数 据 的 模 式 定 义 与 数 据 的 物 理 存 取 构 建 6) 设 有 以 下 的 循 环 : x = 1 Do x = x + 2 Print x Loop Until 6
要 求 程 序 运 行 时 执 行 3 次 循 环 体, 请 填 空 (7) 窗 体 上 命 令 按 钮 Command1 的 事 件 过 程 如 下 : Dim total As Integer total = s(1) + s(2) Print total Private Function s(m As Integer) As Integer Static x As Integer For i = 1 To m x = x + 1 Next i s = x End Function 运 行 程 序, 第 3 次 单 击 命 令 按 钮 Command1 时, 输 出 结 果 为 7 8) 在 窗 体 上 画 一 个 名 称 为 Command1 的 命 令 按 钮, 然 后 编 写 如 下 程 序 : Option Base 1 Dim a(10) As Integer For i = 1 To 10 a(i) = i Next i Call swap( 8 ) For i = 1 To 10 Print a(i); Next Sub swap(b() As Integer) n = 9 For i = 1 To n / 2 t = b(i) b(i) = b(n) b(n) = t 10 Next 9) 在 窗 体 上 画 一 个 通 用 对 话 框, 其 名 称 为 CommonDialog1, 然 后 画 一 个 命 令 按 钮, 并 编 写 如 下 事 件 过 程 : CommonDialog1.Filter = "All Files(*.*) *.* Text Files" & "(*.txt) *.txt Batch Files(*.bat) *.bat" CommonDialog1.FilterIndex = 1 CommonDialog1.ShowOpen MsgBox CommonDialog1.FileName
程 序 运 行 后, 单 击 命 令 按 钮, 将 显 示 一 个 打 开 对 话 框, 此 时 在 文 件 类 型 框 中 显 示 的 是 11 如 果 在 对 话 框 中 选 择 d 盘 temp 目 录 下 的 tel.txt 文 件, 然 后 单 击 确 定 按 钮, 则 在 MsgBox 信 息 框 中 显 示 的 提 示 信 息 是 12 10) 以 上 程 序 的 功 能 是 : 把 顺 序 文 件 smtext1.txt 的 内 容 全 部 读 入 内 存, 并 在 文 本 框 Text1 中 显 示 出 来 请 填 空 Dim indata As String Text1.Text = "" Open "smtext1.txt" 13 As 14 Do While 15 Input #2, indata Text1.Text = Text1.Text & indata Loop Close #2