2007 年 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) 对 下 列 二 叉 树 () 进 行 前 序 遍 历 的 结 果 为 A)DYBEAFCZX B)YDEBFZXCA C)ABDYECFXZ D)ABCDEFXYZ 7) 某 二 叉 树 中 有 n 个 度 为 2 的 结 点, 则 该 二 叉 树 中 的 叶 子 结 点 数 为 () A)n+1 B)n-1 C)2n D)n/2 8) 在 下 列 关 系 运 算 中, 不 改 变 关 系 表 中 的 属 性 个 数 但 能 减 少 元 组 个 数 的 是 () A) 并 B) 交 C) 投 影 D) 笛 卡 儿 乘 积 9) 在 E R 图 中, 用 来 表 示 实 体 之 间 联 系 的 图 形 是 () A) 矩 形 B) 椭 圆 形 C) 菱 形 D) 平 行 四 边 形 10) 下 列 叙 述 中 错 误 的 是 () A) 在 数 据 库 系 统 中, 数 据 的 物 理 结 构 必 须 与 逻 辑 结 构 一 致 B) 数 据 库 技 术 的 根 本 目 标 是 解 决 数 据 共 享 问 题 C) 数 据 库 技 术 是 指 己 有 数 据 管 理 系 统 的 基 础 上 建 立 数 据 库
D) 数 据 库 系 统 需 要 操 作 系 统 的 支 持 11) 下 面 可 以 正 确 定 义 2 个 整 形 变 量 和 1 个 字 符 串 变 量 的 语 句 的 是 () A)Dim n,m AS Interger,s AS String B)Dim a%,b$,c AS String C)Dim a AS Integer,b,c AS String D)Dim x%,y AS Integer,z AS String 12) 下 列 表 述 中 不 能 判 断 x 是 否 为 偶 数 的 是 () A)x/2=Int(x/2) B)x Mod 2=0 C)Fix(x/2)=x/2 D)x\2=0 13) 设 在 名 称 为 Myform 的 窗 体 上 只 有 1 个 名 称 为 C1 的 命 令 按 钮, 下 面 叙 述 中 正 确 的 是 () A) 窗 体 的 Click 事 件 过 程 的 过 程 名 是 Myform_Click B) 命 令 按 钮 的 Click 事 件 过 程 名 是 C1_Click C) 命 令 按 钮 的 Click 事 件 过 程 的 过 程 名 是 Command1_Click (14) 设 窗 体 上 有 1 个 滚 动 条, 要 求 单 击 滚 动 条 右 端 的 按 钮 一 次, 滚 动 条 移 动 一 定 的 刻 度 值, 决 定 此 刻 度 的 属 性 是 () A)Max B)Min C)SmallChange D)LargeChang 15)1 个 二 维 数 组 可 以 存 放 1 个 矩 形. 在 程 序 开 始 有 语 句 Option Base 0, 则 下 面 定 义 的 数 组 中 正 好 可 以 存 放 1 个 4*3 矩 阵 ( 即 只 有 12 个 元 素 ) 的 是 () A)Dim a(-2 To 0,2) AS Integer B)Dim a(3,2) AS Ingeger C)Dim a(4,3)as Ingeger D)Dim a(-1 To -4,-1 To -3)AS Ingeger 16) 若 设 置 了 文 本 框 的 属 性 PasswordChar= $, 则 运 行 程 序 时 向 文 本 框 中 输 入 8 个 任 意 字 符 后, 文 本 框 中 显 示 的 是 () A)8 个 $ B)1 个 $ C)8 个 * D) 无 任 何 内 容 17) 设 在 窗 体 上 有 1 个 名 称 为 Combo1 的 组 合 框, 含 有 5 个 项 目, 要 删 除 最 后 一 项, 正 确 的 语 句 是 () A)Combo1.RemoveItem Combo1.Text B) Combo1.RemoveItem4 C) Combo1.RemoveItem Combo1.ListCount D) Combo1.RemoveItem5 18) 工 程 中 有 2 个 窗 体, 名 称 分 别 为 Form1.Form2,Form1 为 启 动 窗 体, 该 窗 体 上 有 命 令 按 钮 Command1, 要 求 程 序 运 行 后 单 击 该 命 令 按 钮 时 显 示 Form2, 则 按 钮 的 Click 事 件 过 程 应 该 是 () A)Private Sub Command1_Click( ) B) Private Sub Command1_Click( ) Form2.Show Form2.Visible C) Private Sub Command1_Click( ) D)Private Sub Command1_Click( ) Load Form2 Form2.Load 19) 若 在 某 窗 体 模 块 中 有 如 下 事 件 过 程 () Private Sub Command1_Click(Index AS Integer)
则 以 下 叙 述 中 正 确 的 是 A) 此 事 件 过 程 与 不 带 参 数 的 事 件 过 程 没 有 区 别 B) 有 1 个 名 称 为 Command1 的 窗 体, 单 击 此 窗 体 则 执 行 此 事 件 过 程 C) 有 1 个 名 称 为 Command1 的 空 件 数 组, 数 组 中 有 多 个 不 同 类 型 控 件 D) 有 1 个 名 称 为 Command1 的 空 件 数 组, 数 组 中 有 多 个 相 同 类 型 控 件 20) 以 下 循 环 语 句 中 在 任 何 情 况 下 都 至 少 执 行 一 次 循 环 体 的 是 () A)Do While < 条 件 > B)While < 条 件 > 循 环 体 循 环 体 Loop Wend C)Do D)Do Until < 条 件 > 循 环 体 循 环 体 Loop Until < 条 件 > Loop 21) 在 窗 体 上 有 1 个 名 为 Cd1 的 通 用 对 话 框, 为 了 在 运 行 程 序 时 打 开 保 存 文 件 对 话 框, 则 在 程 序 总 应 使 用 的 语 句 是 () A)Cd1.Action=2 B)Cd1.Action=1 C)Cd1.ShowSave=Ture D)Cd1.ShowSave=0 22) 下 面 关 于 菜 单 的 叙 述 中 错 误 的 是 () A) 各 级 菜 单 中 的 所 有 菜 单 项 的 名 称 必 须 唯 一 B) 同 一 子 菜 单 中 的 菜 单 项 名 称 必 须 唯 一, 但 不 同 子 菜 单 中 的 菜 单 项 名 称 可 以 相 同 C) 弹 出 式 菜 单 也 用 菜 单 编 辑 器 编 辑 23) 已 知 有 下 面 的 过 程 () Private Sub proc1(a As Integer,b As String,Optional x As Boolean) 正 确 调 用 此 过 程 的 语 句 是 A)Call procl(5) B)Call proc1 5, abc,false C)proc1(12, abc,true) D)proc1 5, abc 24) 在 窗 体 上 有 一 个 文 件 名 称 为 Text1 的 文 本 框 和 1 个 名 称 为 Command1 的 命 令 按 钮, 要 求 在 程 序 执 行 时, 每 单 击 命 令 按 钮 一 次, 文 本 框 向 右 移 动 一 定 距 离 下 面 能 够 正 确 实 现 上 述 功 能 的 程 序 是 () A) B) Text1.Left=100 T ext1.left= Text1.Left-100 C) D) Text1.Move.Text.Left+100 Text1.Move.Text.Left 25) 某 人 创 建 了 1 个 工 程, 其 中 的 窗 体 名 称 为 Form1; 之 后 又 添 加 了 1 个 名 为 Form2 的 窗 体, 并 希 望 程 序 执 行 时 先 显 示 Form2 窗 体, 那 么, 他 需 要 做 的 工 作 是 () A) 在 工 程 属 性 对 话 框 中 把 启 动 对 象 设 置 为 Form2 B) 在 Form1 的 Load 事 件 过 程 中 加 入 语 句 Load Form2 C) 在 Form2 的 Load 事 件 过 程 中 加 入 语 句 Form2.Show D) 在 Form2 的 TabIndex 属 性 设 置 为 1, 把 Form1 的 TabIndex 属 性 设 置 为 2 26) 窗 体 上 有 1 个 名 称 为 Text1 的 文 本 框 和 1 个 名 称 为 Command1 的 命 令 按 钮 要 求 程 序 运 行 时,
单 击 命 令 按 钮, 就 可 以 把 文 本 框 中 的 内 容 写 到 文 件 out.txt 中, 每 次 写 入 的 内 容 附 加 到 文 件 原 有 内 容 之 后 下 面 能 够 实 现 上 述 功 能 的 程 序 是 () A) B) Open out.txt For Inpit As#1 Open out.txt For Outpit As#1 Print#1,Text1.Text Print#1,Text1.Text Close#1 Close#1 C) D) Open out.txt For Append As#1 Open out.txt For Random As#1 Print#1,Text1.Text Print#1,Text1.Text Close#1 Close#1 (27) 为 计 算 1+3+5+ +99 的 值, 某 人 编 程 如 下 k=1 s=0 While k<=99 k=k+2 : s=s+k Wend Print s 在 调 试 时 发 现 运 行 结 果 有 错 误, 需 要 修 改 下 列 错 误 原 因 和 修 改 方 案 中 正 确 的 是 () A)While Wend 循 环 语 句 错 误, 应 改 为 For k=1 To 99 Next k B) 循 环 条 件 错 误, 应 改 为 Whlie k<99 C) 循 环 前 的 赋 值 语 句 k=1 错 误, 应 改 为 k=0 D) 循 环 中 两 条 赋 值 语 句 的 顺 序 错 误, 应 改 为 s=s+k : k=k+2 28) 下 面 程 序 在 调 试 时 出 现 了 死 循 环 n=inputbox( 请 输 入 一 个 整 数 ) Do If n Mod 2=0 Then n=n+1 n=n+2 If Loop Until n=1000 下 面 关 于 死 循 环 的 叙 述 中 正 确 的 是 () A) 只 有 输 入 的 n 是 偶 数 时 才 会 出 现 死 循 环, 否 则 不 会 B) 只 有 输 入 的 n 是 奇 数 时 才 会 出 现 死 循 环, 否 则 不 会 C) 只 有 输 入 的 n 是 大 于 1000 的 整 数 时 才 会 出 现 死 循 环, 否 则 不 会 D) 输 入 任 何 整 数 都 会 出 现 死 循 环 29) 在 窗 体 上 有 1 个 名 称 为 CommonDialog1 的 通 用 对 话 框 和 1 个 名 称 为 Command1 的 命 令 按 钮, 以 及 其 他 一 些 控 件 要 求 在 程 序 运 行 时, 单 击 Command1 按 钮, 则 显 示 打 开 文 件 对 话 框, 并 在 选 择 或 输 入 了 1 个 文 件 名 后, 就 可 以 打 开 该 文 件 以 下 是 Command1_Click 事 件 过 程 的 两 种 算 法
算 法 1: CommonDialog1.ShowOpen Open CommonDialog1.FileName For Input As#1 算 法 2: CommonDialog1.ShowOpen IfCommonDialog1.FileName<> Then Open CommonDialog1.FileName For Input As#1 下 面 关 于 这 两 种 算 法 的 叙 述 中 正 确 的 是 () A) 显 示 打 开 文 件 对 话 框 后 若 未 选 择 或 输 入 任 何 文 件 名, 则 算 法 2 会 出 错, 算 法 1 不 会 B) 显 示 打 开 文 件 对 话 框 后 若 未 选 择 或 输 入 任 何 文 件 名, 则 算 法 1 会 出 错, 算 法 2 不 会 C) 两 种 算 法 的 执 行 结 果 完 全 一 样 D) 算 法 1 允 许 输 入 的 文 件 名 中 含 有 空 格, 而 算 法 2 不 允 许 30) 窗 体 上 有 1 个 名 称 为 List 的 列 表 框, 其 中 已 经 输 入 了 若 干 个 项 目 ( 如 图 所 示 ): 还 有 2 个 文 本 框, 名 称 分 别 为 Text1 Text2, 1 个 名 称 为 Command1 的 命 令 按 钮, 并 有 以 下 程 序 Dim str As String, s As String, k As Integer s=text1 Str= For k=list1.listcount-1 to 0 Step-1 If InStr(List.List(k),s)>0 then str=str&list.list(k)& Next k If str= Then Text2= 没 有 匹 配 的 项 目 Text2=str 程 序 运 行 时, 在 Text1 中 输 入 京, 单 击 命 令 按 钮, 则 在 Text2 中 显 示 的 内 容 是 () A) 京 B) 北 京 南 京 C) 南 京 D) 没 有 匹 配 的 项 目 31) 在 窗 体 上 画 1 一 个 名 称 为 Command1 的 命 令 按 钮, 并 编 写 以 下 程 序 Print fun( ABCDEFG ) Function fun(st As String) As String stlen=len(st) temp=
For k fun=temp End Function 程 序 运 行 时, 单 击 命 令 按 钮, 则 窗 体 上 显 示 的 是 () A)ABCDEFG B)AGBFCE C)GFEDCBA D)AGBFCED 32) 在 窗 体 上 先 后 画 2 个 图 片 框, 名 称 分 别 为 Picture1 和 banana,banana 中 添 加 了 香 蕉 图 片 ( 见 图 1), 且 将 banana.dragmode 属 性 设 置 为 1 要 求 程 序 运 行 时, 可 以 用 鼠 标 把 banana 拖 拽 到 Picture1 中 ( 见 图 2) 能 实 现 此 功 能 的 事 件 过 程 是 () A) Priate Sub Form_DragDrop(Source As Control,X As Single,Y As Single banana.move Picture1.Left+X,Picture1.Top+Y) B)Private Sub banana _DragDrop(Source As Control,X As Single,Y As Single ) Source.Move Picture1.Left+X.Picture1.Top+Y C) B)Private Sub Picture1_DragDrop(Source As Control,X As Single,Y As Single ) Source.Move Picture1.Left+X.Picture1.Top+Y D) B)Private Sub Picture1_DragDrop(Source As Control,X As Single,Y As Single ) banana.move banana.left+x, banana.top+y 33) 在 窗 体 上 画 1 个 名 称 为 Command1 的 命 令 按 钮, 然 后 编 写 如 下 事 件 过 程 Option Base 1 Pribate Sub Command1_Click() Dim a(5.5) As Integer For i=1 To 5 a(i,j)*5\10 Next j Next i S=0 For i=1 To 5 S=s+a(i,i) Next i Print s 程 序 运 行 后, 单 击 命 令 按 钮, 输 出 结 果 是 () A) 15 B)13 C)11 D)9 34) 在 窗 体 上 从 左 到 右 有 Text1 Text2 两 个 文 本 框 ( 见 图 ), 要 求 程 序 运 行 时, 在 Text1 中 输 入 1 个 分 数 后 按 回 车 键, 则 判 断 分 数 的 合 法 性, 若 分 数 为 0~100 中 的 1 个 数, 周 围 光 标 移 到 Text2 中 ; 否 则 光 标 不 动, 并 弹 出 对 话 框 显 示 分 数 错, 下 面 程 序 中 正 确 的 是 () A)Private Sub Text1 KeyPress(KeyAscii AS Integer) If KeyAscii=13 Then 回 车 符 的 ACSII 码 是 13 a=val(text1) If a>=0 or a<=100 Then
Text2.SetFocus Text1. SetFocus ; MsgBox( 分 数 错 ) B) Private Sub Text1 KeyPress(KeyAscii AS Integer) If KeyAscii=13 Then 回 车 符 的 ACSII 码 是 13 a=val(text1) If a>=0 And a<=100 Then Text1.SetFocus Text2. SetFocus ; MsgBox( 分 数 错 ) C) Private Sub Text1 KeyPress(KeyAscii AS Integer) If KeyAscii=13 Then 回 车 符 的 ACSII 码 是 13 a=val(text1) If a<0 And a>100 Then Text2.SetFocus Text1. SetFocus ; MsgBox( 分 数 错 ) D) Private Sub Text1 KeyPress(KeyAscii AS Integer) If KeyAscii=13 Then 回 车 符 的 ACSII 码 是 13 a=val(text1) If a>=0 And a<=100 Then Text2.SetFocus Text1. SetFocus ; MsgBox( 分 数 错 ) 35) 在 窗 体 上 画 2 个 命 令 按 钮, 名 称 分 别 为 Command1 command2, 并 编 写 如 下 程 序 Const n=5,m=4 Dim a(m,n) K=1 For i=1 To m For j=1 To n a(i,j)=k
k=k+1 Next j Next i Private Sub Command2_Click() Summ=0 For i=1 To m For j=1 To n If i=1 Or i=m Then Summ=summ+a(i,j) If j=i Or j=n Then Summ=summ+a(i,j) Next j Next i Print summ 过 程 Command1_Click() 的 作 用 是 二 维 数 组 a 中 存 放 1 个 m 行 n 列 的 矩 阵 ; 过 程 Command2_Click() 的 作 用 是 () A) 计 算 矩 阵 外 围 一 圈 元 素 的 累 加 和 B) 计 算 矩 阵 除 外 一 圈 以 外 的 所 有 元 素 的 累 加 和 C) 计 算 矩 阵 第 1 列 和 最 后 一 列 元 素 的 累 加 和 D) 计 算 矩 阵 第 1 行 和 最 后 一 行 元 素 的 累 加 和 二 填 空 题 ( 每 空 2 分, 共 计 30 分 ) 1) 在 深 度 为 7 的 满 二 叉 树 中, 度 为 2 的 结 点 个 数 为 1 2) 软 件 测 试 分 为 白 箱 ( 盒 ) 测 试 和 黑 箱 ( 盒 ) 测 试, 等 价 类 划 分 法 属 于 2 测 试 3) 在 数 据 库 系 统 中, 实 现 各 种 数 据 管 理 功 能 的 核 心 软 件 称 为 3 4) 软 件 生 命 周 期 可 分 为 多 个 阶 段, 一 般 分 为 定 义 阶 段 开 发 阶 段 和 维 护 阶 段 编 码 和 测 试 属 于 4 阶 段 5) 在 结 构 化 分 析 使 用 的 数 据 流 图 (DFD) 中, 利 用 5 对 其 中 的 图 形 元 素 进 行 确 切 解 释 6)1+ + + +.n 最 大 的 n 请 填 空 Private Sub Command1 Click() Dim s,m,n AS Integer m=val(inputbox( 请 输 入 一 个 大 于 100 的 整 数 )) n= 6 s=0 Do While s N=n+1 S=s+n*n Loop Print " 满 足 不 等 式 的 最 大 n 是 " 7
7) 下 面 程 序 的 功 能 是 把 文 件 file11.txt 中 重 复 字 符 去 掉 后 ( 即 若 有 多 个 字 符 相 同, 则 只 保 留 1 个 ) 写 入 文 件 file2.txt 请 填 空 Private Sub Command1 Click() Dim inchar AS String,temp AS String,outchar AS String Outchar= Open= file1.txt For Input AS #1 Open= file2.txt For Output AS 8 n=lof( 9 ) inchar=input$(n,1) For k=1 To n temp=mid(inchar,k,1) If InStr(outchar,temp)= 10 Then outchar=outchar & temp Next k print #2, 11 close #2 close #1 8) 在 窗 体 上 先 画 1 个 名 为 Text1 的 文 本 框 和 平 个 名 为 Label1 的 标 签, 再 画 1 个 名 为 OP1 的 有 4 个 单 选 按 钮 数 组, 其 Index 属 性 按 季 度 顺 序 为 0 3( 见 图 1) 在 文 件 sales.txt 中 按 月 份 顺 序 存 有 某 企 业 某 年 12 个 月 的 销 售 额 要 求 在 程 序 执 行 时, 鼠 标 单 击 1 个 单 选 按 钮, 则 Text1 中 显 示 相 应 季 度 的 销 售 总 额, 并 把 相 应 的 文 字 显 示 在 标 签 上 图 2 是 单 击 第 3 季 度 单 选 按 钮 产 生 的 结 果 请 填 空 Dim sales(12) As Long Private Sub Form Load() open sales.txt For Input AS #1 For k=1 To 12 Input #1,sales(k) Next k Close #1 Private Sub 12 (Index, AS Integer) Dim sum AS Long,k AS Ingeger,month AS Ingeger sum=0 month=index* 13 For k=1 To 3 month=month+1 sum=sum+sales(month) Next k Label1.Caption=Opl(Index). 14 & 销 售 总 额 : Text1=sum
9) 某 人 编 写 如 下 函 数 来 判 断 a 是 否 为 素 数, 若 是, 则 函 数 返 回 True; 否 则 返 回 False Function Prime(a As Integer)AS Boolean Dim k As Interger,isprime AS Boolean If a<2 Then isprime=false isprime=true k=2 Do While k If a Mod k=0 Then isprime=false ELSE k=k+1 End IF LOOP prime=isprime End Function 在 测 试 时 发 现 有 1 个 非 素 数 也 被 判 断 为 素 数, 这 个 错 判 的 数 是 15