资源描述
1 面 向 对 象 程 序 设 计 Java 语 言 习 题 答 案第1章一 、 选 择 题1 下 列 选 项 中 , 不 属 于 Java 语 言 特 点 的 一 项 是 ( C ) 。( A) 分 布 式 ( B) 安 全 性( C) 编 译 执 行 ( D) 面 向 对 象【 解 析 】 Java 程 序 采 用 解 释 执 行 的 方 法 。 在 系 统 编 译 运 行 Java 程 序 时 , Java 编 译 器 将Java 程 序 转 化 为 字 节 码 , 在 运 行 时 , 解 释 器 将 编 译 得 到 的 字 节 码 进 行 解 释 执 行 。2 在 Java 语 言 中 , ( C ) 是 最 基 本 的 元 素 ? ( A) 方 法 ( B) 包( C) 对 象 ( D) 接 口【 解 析 】 构 成 Java 程 序 的 基 本 元 素 类 ( 抽 象 的 对 象 ) 。3 编 译 一 个 定 义 了 3 个 类 和 10 个 方 法 的 Java 源 文 件 后 , 会 产 生 ( D ) 个 字 节 码 文 件 ? 扩展 名 是 ( D ) ?( A) 13 个 字 节 码 文 件 , 扩 展 名 为 .class ( B) 1 个 字 节 码 文 件 , 扩 展 名 为 .class( C) 3 个 字 节 码 文 件 , 扩 展 名 为 .java ( D) 3 个 字 节 码 文 件 , 扩 展 名 为 .class【 解 析 】 源 文 件 中 的 每 一 个 类 编 译 后 都 会 生 成 一 个 字 节 码 文 件 , 字 节 码 文 件 的 扩 展 名是 .class。4 在 创 建 Applet 应 用 程 序 时 , 需 要 用 户 考 虑 问 题 是 ( B ) 。( A) 窗 口 如 何 创 建 ( B) 绘 制 的 图 形 在 窗 口 中 的 位 置( C) 程 序 的 框 架 ( D) 事 件 处 理【 解 析 】 创 建 Applet 程 序 时 必 须 继 承 系 统 类 Applet, 而 Applet 类 中 已 经 包 含 了 如 何 创 建 窗 口 以 及 事 件 处 理 等 内 容 , 这 类 程 序 的 框 架 也 都 是 固 定 的 , 而 绘 制 图 形 在 窗 口 中 的 位 置 则需 要 由 用 户 确 定 。5 Java 语 言 属 于 ( B ) 种 语 言 ?( A) 面 向 机 器 的 语 言 ( B) 面 向 对 象 的 语 言( C) 面 向 过 程 的 语 言 ( D) 面 向 操 作 系 统 的 语 言【 解 析 】 Java 语 言 是 一 种 纯 面 向 对 象 的 语 言 。6 下 列 关 于 Application 和 Applet 程 序 的 说 法 中 不 正 确 的 一 项 是 ( B ) 。( A) Application 使 用 解 释 器 java.exe ( B) Application 不 使 用 独 立 的 解 释 器( C) Applet 在 浏 览 器 中 运 行 ( D) Applet 必 须 继 承 Java 的 Applet 类【 解 析 】 Application 程 序 包 含 main()方 法 , 它 是 一 种 独 立 执 行 的 程 序 , 因 此 必 须 使 用 独立 的 解 释 器 解 释 执 行 。7 下 列 选 项 中 , 不 属 于 Java 核 心 包 的 一 项 是 ( A ) 。( A) javax.swing ( B) java.io ( C) java.utile ( D) java.lang【 解 析 】 凡 是 以 java 开 头 的 包 都 是 Java 核 心 包 , 以 javax 开 头 的 包 则 属 于 Java 扩 展 包 。8 下 列 描 述 中 , 不 正 确 的 是 ( A ) 。( A) 不 支 持 多 线 程 ( B) 一 个 Java 源 文 件 不 允 许 有 多 个 公 共 类 2 ( C) Java 通 过 接 口 支 持 多 重 继 承 ( D) Java 程 序 分 为 Application 和 Applet 两 类【 解 析 】 Java 是 支 持 多 线 程 的 语 言 。9 阅 读 下 列 代 码 , 选 出 该 代 码 段 正 确 的 文 件 名 ( C ) 。classAvoidmethod1()System.out.println(Method1inclassA);publicclassBvoidmethod2()System.out.println(Method2inclassB);publicstaticvoidmain(Stringargs) System.out.println(main()inclassB);( A) A.java ( B) A.class( C) B.java ( D) B.class【 解 析 】 Java 源 文 件 名 必 须 和 公 共 类 的 名 字 完 全 一 样 , 源 文 件 的 扩 展 名 为 .java。10 编 译 下 面 源 程 序 会 得 到 哪 些 文 件 ( D ) ?classA1classA2publicclassBpublicstaticvoidmain(Stringargs) ( A) 只 有 B.class 文 件 ( B) 只 有 A1.class 和 A2.class 文 件( C) 编 译 不 成 功 ( D) A1.class、 A2.class 和 B.class 文 件【 解 析 】 由 于 该 程 序 包 含 3 个 类 , 每 个 类 编 译 后 都 会 生 成 1 个 字 节 码 文 件 , 因 此 编 译 后会 生 成 以 这 3 个 类 名 命 名 的 字 节 码 文 件 。二 、 填 空 题1 Java 程 序 的 编 译 和 执 行 模 式 包 括 2 点 , 是 半 编 译 和 半 解 释 。2 Java 语 言 支 持 TCP/IP 协 议 , 从 而 使 得 Java 程 序 在 分 布 式 环 境 中 能 够 很 方 便 地 访 问 处于 不 同 地 点 的 对 象 。3 开 发 Java 程 序 的 一 般 步 骤 是 : 源 程 序 编 辑 、 生 成 字 节 码 和 解 释 执 行 。4 每 个 JavaApplication 程 序 可 以 包 括 许 多 方 法 , 但 是 必 须 有 且 只 能 有 一 个 main() 方 法 , 统 一 格 式 为 publicstaticvoidmain(Stringargs) , 它 是 程 序 执 行 的 入 口 。5 JVM 把 字 节 码 程 序 与 各 种 不 同 的 操 作 系 统 和 硬 件 分 开 , 使 得 Java 程 序 独 立 于 平 台 。6 在 Java 程 序 中 , 能 在 WWW 浏 览 器 上 运 行 的 是 Applet 程 序 。7 Java 源 程 序 文 件 和 字 节 码 文 件 的 扩 展 名 分 别 为 .java 和 .class 。8 如 果 在 Java 程 序 中 需 要 使 用 java.utile 包 中 的 所 有 类 , 则 应 该 在 程 序 开 始 处 加 上 importjava.utitle.* 语 句 。 3 三 、 编 程 题1 编 写 一 个 JavaApplication 类 型 的 程 序 , 输 出 “ ThisismyfirstJavaApplication! ” 。【 编 程 分 析 】 要 编 写 Java Application 类 型 的 程 序 , 需 要 在 JCreator 中 创 建 一 个 JavaApplication 类 型 的 工 程 , 这 时 JCreator 会 自 动 创 建 程 序 框 架 , 该 框 架 包 含 一 个 公 共 类 , 其 中包 含 一 个 main()方 法 。 删 除 main()方 法 中 自 动 生 成 的 代 码 , 编 写 自 己 的 代 码 即 可 。 由 于 该 程序 要 求 输 出 一 句 话 , 因 此 在 main()方 法 中 直 接 调 用 System.out.println()或 System.out.print()方 法 即 可 实 现 。【 参 考 程 序 】publicclassX3_1publicstaticvoidmain(Stringargs)System.out.println(ThisismyfirstJavaApplication!); 【 运 行 结 果 】ThisismyfirstJavaApplication!2 编 写 一 个 JavaApplet 类 型 的 程 序 , 输 出 “ 这 是 我 的 第 一 个 JavaApplet 类 型 的 程 序 ” 。【 编 程 分 析 】 要 编 写 一 个 JavaApplet 类 型 的 程 序 , 首 先 利 用 JCreator 创 建 一 个 JavaApplet类 型 的 工 程 , 该 工 程 自 动 创 建 两 个 文 件 , 一 个 源 文 件 ( .java 文 件 ) 和 一 个 HTML 文 件 ( .html文 件 ) , 源 文 件 中 包 含 一 个 公 共 类 , 其 中 包 含 两 个 方 法 , 即 init()方 法 和 paint()方 法 , 由 于 该程 序 只 是 要 求 输 出 一 句 话 , 因 此 只 要 将 paint()方 法 中 g.drawString()方 法 的 第 一 个 参 数 修 改 为要 输 出 的 内 容 即 可 。 如 果 不 是 利 用 JCreator 开 发 工 具 , 而 是 利 用 J2SDK, 则 用 户 需 要 自 己 编写 HTML 文 件 。【 参 考 程 序 】importjava.awt.*;importjava.applet.*; publicclassX3_2extendsAppletpublicvoidpaint(Graphicsg)g.drawString(这 是 我 的 第 一 个 JavaApplet 类 型 的 程 序 ,50,50);【 运 行 结 果 】 4 第2章一 、 选 择 题1 下 列 ( D ) 是 合 法 的 标 识 符 ?( A) 12class ( B) void ( C) -5 ( D) _blank【 解 析 】 根 据 Java 标 识 符 的 构 成 规 则 确 定 。2 下 列 ( B ) 不 是 Java 中 的 保 留 字 ?( A) if ( B) sizeof ( C) private ( D) null【 解 析 】 根 据 Java 保 留 字 表 进 行 选 择 。3 下 列 ( C ) 不 是 合 法 的 标 识 符 ?( A) $million ( B) $_million ( C) 2$_million ( D) $2_million【 解 析 】 根 据 Java 标 识 符 的 构 成 规 则 确 定 。 4 下 列 选 项 中 , ( B ) 不 属 于 Java 语 言 的 基 本 数 据 类 型 ?( A) 整 数 型 ( B) 数 组 ( C) 浮 点 型 ( D) 字 符 型【 解 析 】 根 据 Java 语 言 的 基 本 数 据 类 型 包 含 的 类 别 选 取 。5 下 列 关 于 基 本 数 据 类 型 的 说 法 中 , 不 正 确 的 一 项 是 ( D ) 。( A) boolean 类 型 变 量 的 值 只 能 取 真 或 假( B) float 是 带 符 号 的 32 位 浮 点 数( C) double 是 带 符 号 的 64 位 浮 点 数( D) char 是 8 位 Unicode 字 符【 解 析 】 Java 中 的 字 符 采 用 的 是 16 位 的 Unicode 字 符 。6 下 列 关 于 基 本 数 据 类 型 的 取 值 范 围 的 描 述 中 , 正 确 的 一 个 是 ( B ) 。( A) byte 类 型 的 取 值 范 围 是 -128 128 ( B) boolean 类 型 的 取 值 范 围 是 真 或 假( C) char 类 型 的 取 值 范 围 是 0 65536 ( D) short 类 型 的 取 值 范 围 是 -3276732767 【 解 析 】 根 据 每 种 类 型 占 几 个 字 节 即 可 推 算 出 其 取 值 范 围 , 如 byte 类 型 占 1 个 字 节 ,即 共 包 含 28个 数 值 , 其 取 值 范 围 范 围 应 为 -128 127, 其 他 类 型 也 是 如 此 。7 下 列 关 于 Java 语 言 简 单 数 据 类 型 的 说 法 中 , 正 确 的 一 项 是 ( A ) 。( A) 以 0 开 头 的 整 数 代 表 8 进 制 整 型 常 量( B) 以 0 x 或 0X 开 头 的 整 数 代 表 8 进 制 整 型 常 量( C) boolean 类 型 的 数 据 作 为 类 成 员 变 量 的 时 候 , 相 同 默 认 的 初 始 值 为 true( D) double 类 型 的 数 据 占 计 算 机 存 储 的 32 位【 解 析 】 根 据 每 种 数 据 类 型 的 特 性 进 行 判 断 。8 下 列 Java 语 句 中 , 不 正 确 的 一 项 是 ( C ) 。( A) $e,a,b=10; ( B) charc,d=a;( C) floate=0.0d; ( D) doublec=0.0f;【 解 析 】 不 能 将 double 类 型 的 常 量 赋 值 给 float 类 型 的 变 量 。9 在 编 写 Java 程 序 时 , 如 果 不 为 类 的 成 员 变 量 定 义 初 始 值 , Java 会 给 出 它 们 的 默 认 值 , 下 列 说 法 中 不 正 确 的 一 个 是 ( D ) 。( A) byte 的 默 认 值 是 0 ( B) boolean 的 默 认 值 是 false( C) char 类 型 的 默 认 值 是 0 ( D) long 类 型 的 默 认 值 是 0.0L【 解 析 】 long 类 型 的 默 认 值 是 0L, 而 不 是 0.0L。10 下 列 语 句 中 不 正 确 的 一 个 是 ( B ) 。 5 ( A) floatf=1.1f; ( B) byteb=128;( C) doubled=1.1/0.0; ( D) charc=(char)1.1f;【 解 析 】 bytel 类 型 变 量 的 取 值 范 围 是 -128 127。11 下 列 表 达 式 1+2+aa+3 的 值 是 ( B ) 。( A) 12aa3 ( B) 3aa3 ( C) 12aa ( D) aa3【 解 析 】 整 数 和 整 数 相 加 得 到 两 个 整 数 的 和 , 而 整 数 和 字 符 串 相 加 得 到 的 是 字 符 串 。12 已 知 y=2,z=3,n=4, 则 经 过 n=n+-y*z/n 运 算 后 n 的 值 为 ( A ) 。( A) 3 ( B) -1 ( C) -12 ( D) -3【 解 析 】 根 据 运 算 符 的 优 先 级 , 该 表 达 式 相 当 于 n=n+(-y)*z)/n。13 已 知 a=2,b=3, 则 表 达 式 a%b*4%b 的 值 为 ( A ) 。( A) 2 ( B) 1 ( C) -1 ( D) -2【 解 析 】 根 据 运 算 符 的 优 先 级 , 该 表 达 式 相 当 于 (a%b)*4)%b。14 已 知 x=2,y=3,z=4, 则 经 过 z-=-yx-运 算 后 , z 的 值 为 ( D ) 。 ( A) 1 ( B) 2 ( C) 3 ( D) 4【 解 析 】 在 表 达 式 运 算 过 程 中 , -y 的 值 变 为 2, x的 值 还 是 2, 等 号 右 侧 运 算 后 的 值为 0, 因 此 z 的 值 没 有 变 化 。15 表 达 式 (12=0)longj=64; 下 面 赋 值 语 句 中 不 正 确 的 一 个 是 ( B )( A) j=i; ( B) i=j; ( C) i=(short)j; ( D) j=(long)i;【 解 析 】 long 类 型 的 数 据 不 能 自 动 转 变 为 short 类 型 , 因 此 不 能 将 long 类 型 的 变 量 直 接赋 值 给 short 类 型 。17 现 有 1 个 char 类 型 的 变 量 c1=66 和 1 个 整 型 变 量 i=2, 当 执 行 c1=c1+(char)i;语 句 后 , c1的 值 为 ( D ) 。 ( A) d ( B) D ( C) 68 ( D) 语 句 在 编 译 时 出 错【 解 析 】 两 个 字 符 型 的 数 据 相 加 , 得 到 的 是 一 个 整 数 , 而 如 果 把 整 数 再 赋 值 给 一 个 字 符型 变 量 则 会 在 编 译 时 出 错 。18 下 列 说 法 中 , 正 确 的 一 项 是 ( D ) 。( A) 字 符 串 abcd 的 长 度 为 6 ( B) False 是 Java 的 保 留 字( C) 123.45L 代 表 单 精 度 浮 点 型 ( D) False 是 合 法 的 Java 标 识 符【 解 析 】 Java 语 言 对 字 符 的 大 小 写 是 敏 感 的 , False 不 是 false, 因 此 False 是 合 法 的 Java标 识 符 。19 以 下 的 变 量 定 义 语 句 中 , 合 法 的 是 ( D )( A) float_*5=123.456F; ( B) byte$_b1=12345;( C) int_long_=123456L; ( D) doubled=Double.MAX_VALUE;【 解 析 】 ( A) 中 _*5 不 是 合 法 的 标 识 符 , ( B) 中 12345 超 出 byte 范 围 , ( C) 中 不 能 将long 类 型 的 常 量 赋 值 给 int 型 的 变 量 。 20 下 列 关 于 运 算 符 优 先 级 的 说 法 中 , 不 正 确 的 一 个 是 ( C )( A) 运 算 符 按 照 优 先 级 顺 序 表 进 行 运 算( B) 同 一 优 先 级 的 运 算 符 在 表 达 式 中 都 是 按 照 从 左 到 右 的 顺 序 进 行 运 算 的( C) 同 一 优 先 级 的 运 算 符 在 表 达 式 中 都 是 按 照 从 右 到 左 的 顺 序 进 行 运 算 的( D) 括 号 可 以 改 变 运 算 的 优 先 次 序 6 【 解 析 】 同 一 优 先 级 的 运 算 符 在 表 达 式 中 都 是 按 照 从 左 到 右 的 顺 序 进 行 运 算 的 。二 、 填 空 题1 变 量 是 Java 程 序 的 基 本 存 储 单 元 之 一 , 变 量 的 主 要 类 型 包 括 2 大 类 : 字 符 型 和 数 值 型 。2 Java 语 言 的 整 数 类 型 变 量 和 常 量 一 样 , 各 自 都 包 括 4 种 类 型 的 数 据 , 它 们 分 别 是 byte、int 、 short 和 long。3 boolean 类 型 数 据 不 可 以 做 类 型 转 换 。4 在 Java 语 言 的 基 本 数 据 类 型 中 , 占 存 储 空 间 最 少 的 类 型 是 boolean , 该 类 型 占 用 的存 储 空 间 为 1 位 。5 Java 语 言 中 的 保 留 字 具 有 特 殊 意 义 和 作 用 , 不 能 作 为 普 通 标 识 符 使 用 。6 在 Java 语 言 中 , 浮 点 类 型 数 据 属 于 实 型 数 据 , 可 以 分 为 单 精 度 和 双 精 度 两 种 。7 char 类 型 的 数 据 可 以 表 示 的 字 符 数 共 为 65536 。8 定 义 初 始 值 为 10 的 8 次 方 的 常 整 型 变 量 iLong 的 语 句 是 finaliLong=100000000L 。 9 Java 语 言 中 的 数 据 类 型 转 换 包 括 自 动 转 换 和 强 制 转 换 两 种 。10 Java 中 的 字 符 采 用 的 是 16 位 的 Unicode 编 码 。11 数 据 类 型 中 存 储 空 间 均 为 64 位 的 两 种 数 据 类 型 是 long 和 double 。12 表 达 式 9*4/-5%5 的 值 为 -2 。 ( 十 进 制 表 示 )13 表 达 式 5g.drawString(b=+b,50,60);【 运 行 结 果 】 3 编 写 一 个 JavaApplication 类 型 的 程 序 , 从 键 盘 上 输 入 三 角 形 的 三 条 边 的 长 度 , 计 算 三 角形 的 面 积 和 周 长 并 输 出 。 根 据 三 角 形 边 长 求 面 积 公 式 如 下 :)(*)(*)(* csbsassarea , 其 中 a、 b、 c 为 三 角 形 的 三 条 边 , s=(a+b+c)/2。【 编 程 分 析 】 该 程 序 由 于 涉 及 到 数 据 输 入 , 因 此 首 先 建 立 输 入 流 对 象 , 输 入 三 角 形 三 条 边 a、b、 c 的 值 , 然 后 求 出 中 间 变 量 s 的 值 , 最 后 利 用 数 学 方 法 Math.sqrt()方 法 求 出 三 角 形 的 面 积并 输 出 。【 参 考 程 序 】importjava.io.*;publicclassX2_3_3publicstaticvoidmain(Stringargs)throwsIOException 8 InputStreamReaderisr=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(isr);doublea,b,c,s,area;Stringstr;str=br.readLine();a=Double.parseDouble(str);str=br.readLine();b=Double.parseDouble(str);str=br.readLine();c=Double.parseDouble(str);s=(a+b+c)/2.0;area=Math.sqrt(s*(s-a)*(s-b)*(s-c);System.out.println(area=+area); 【 运 行 结 果 】345area=6.0注 意 : 输 入 的 三 角 形 的 三 条 边 必 须 满 足 三 角 形 的 构 成 规 则 , 如 果 不 满 足 则 输 出 错 误 结 果 。4 编 写 一 个 JavaApplication 类 型 的 程 序 , 从 键 盘 上 输 入 摄 氏 温 度 C, 计 算 华 氏 温 度 F 的 值并 输 出 。 其 转 换 公 式 如 下 :F=(9/5)*C+32【 编 程 分 析 】 该 程 序 和 上 一 个 程 序 类 似 , 在 此 不 再 赘 述 。【 参 考 程 序 】 importjava.io.*;publicclassX2_3_4publicstaticvoidmain(Stringargs)throwsIOExceptionInputStreamReaderisr=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(isr);doubleC,F;Stringstr;str=br.readLine();C=Double.parseDouble(str);F=(9/5)*C+32;System.out.println(F=+F); 【 运 行 结 果 】37F=69.05 已 知 圆 球 的 体 积 公 式 为 4/3 r3, 编 一 程 序 , 输 入 圆 球 半 径 , 计 算 并 输 出 球 的 体 积 。【 编 程 分 析 】 该 程 序 和 第 3 题 类 似 , 在 此 不 再 赘 述 。 9 【 参 考 程 序 】importjava.io.*;publicclassX2_3_5publicstaticvoidmain(Stringargs)throwsIOExceptionInputStreamReaderisr=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(isr);intradius;doublevolume;Stringstr;System.out.print(Enterthevalueofradiusplease:);str=br.readLine();radius=Integer.parseInt(str);volume=4*Math.PI*Math.pow(radius,3)/3; System.out.println(volume=+volume);【 运 行 结 果 】Enterthevalueofradiusplease:26volume=73622.17663932561第3章一 、 选 择 题1 下 列 ( D ) 不 属 于 Java 语 言 流 程 控 制 结 构 ?( A) 分 支 语 句 ( B) 跳 转 语 句 ( C) 循 环 语 句 ( D) 赋 值 语 句 【 解 析 】 Java 语 言 流 程 控 制 结 构 只 包 括 分 支 、 循 环 和 跳 转 三 种 语 句 。2 假 设 a 是 int 类 型 的 变 量 , 并 初 始 化 为 1, 则 下 列 ( D ) 是 合 法 的 条 件 语 句 ?( A) if(a) ( B) if(a=3) ( C) if(a=2) ( D) if(true)【 解 析 】 条 件 语 句 中 的 “ 条 件 表 达 式 ” 只 能 是 boolean 类 型 , 不 能 是 其 他 类 型 。3 下 列 说 法 中 , 不 正 确 的 一 个 是 ( C ) 。( A) switch 语 句 的 功 能 可 以 由 ifelseif 语 句 来 实 现( B) 若 用 于 比 较 的 数 据 类 型 为 double 型 , 则 不 可 以 用 switch 语 句 来 实 现( C) ifelseif 语 句 的 执 行 效 率 总 是 比 switch 语 句 高( D) case 子 句 中 可 以 有 多 个 语 句 , 并 且 不 需 要 大 括 号 括 起 来【 解 析 】 语 句 的 执 行 效 率 高 低 要 根 据 具 体 语 句 来 确 定 , 不 能 简 单 地 说 ifelseif 语 句 的执 行 效 率 总 是 比 switch 语 句 高 。4 设 a、 b 为 long 型 变 量 , x、 y 为 float 型 变 量 , ch 为 char 类 型 变 量 且 它 们 均 已 被 赋 值 ,则 下 列 语 句 中 正 确 的 是 ( B ) 。 ( A) switch(x+y) ( B) switch(ch+1)( C) switchch ( D) switch(a+b);【 解 析 】 switch 后 面 的 表 达 式 必 须 放 在 括 号 ()中 , 且 表 达 式 的 类 型 只 能 是 byte、 short、int 和 char 类 型 , 不 能 是 其 他 类 型 。5 下 列 循 环 体 执 行 的 次 数 是 ( C ) 。 10 inty=2,x=4;while(-x!=x/y)( A) 1 ( B) 2 ( C) 3 ( D) 4【 解 析 】 第 1 次 执 行 while 时 , -x 的 值 为 3, 3/2=1, 满 足 等 号 两 端 值 不 等 的 条 件 , 执行 一 次 循 环 体 ; 第 2 次 执 行 while 时 , -x 的 值 为 2, 2/2=1, 条 件 满 足 , 又 执 行 一 次 循 环 体 ;第 3 次 执 行 while 时 , -x 的 值 为 1, 1/2=0, 条 件 满 足 , 再 次 执 行 一 次 循 环 体 ; 第 4 次 执 行while 时 , -x 的 值 为 0, 0/2=0, 条 件 不 满 足 满 足 , 结 束 循 环 。 因 此 在 这 个 循 环 语 句 执 行 的 过程 中 , 循 环 体 共 执 行 了 3 次 。6 下 列 循 环 体 执 行 的 次 数 是 ( B ) 。intx=10,y=30;do y-=x; x+; while(x+y-);( A) 1 ( B) 2 ( C) 3 ( D) 4【 解 析 】 执 行 1 次 循 环 体 后 , y 的 值 为 20, x 值 为 11, 然 后 执 行 while, 此 时 x+的 值 为 11, y的 值 为 20, 因 此 x+y条 件 满 足 , 判 断 完 后 , x 的 值 变 为 12, y 的 值 变 为 19;接 着 执 行 第 2 次 循 环 体 , 执 行 完 第 2 次 循 环 体 后 , y 的 值 为 9, x 值 为 13, 然 后 执 行 while,此 时 x+的 值 为 13, y的 值 为 9, 因 此 x+y条 件 不 满 足 , 结 束 循 环 。 因 此 在 这 个 循 环语 句 执 行 的 过 程 中 , 循 环 体 共 执 行 了 2 次 。7 已 知 如 下 代 码 :switch(m)case0:System.out.println(Condition0);case1:System.out.println(Condition1);case2:System.out.println(Condition2);case3:System.out.println(Condition3);break;default:System.out.println(OtherCondition);当 m 的 值 为 ( D ) 时 , 输 出 “ Condition3” ( A) 2 ( B) 0、 1 ( C) 0、 1、 2 ( D) 0、 1、 2、 3【 解 析 】 当 m 的 值 为 0、 1、 2、 3 时 , 都 能 输 出 “ Condition3” , 因 为 case0、 case1、case2 后 面 的 语 句 都 没 有 break, 因 此 可 以 继 续 向 后 执 行 。二 、 填 空 题1 跳 转 语 句 包 括 break、 continue、 return 和 throw2 switch 语 句 先 计 算 switch 后 面 的 表 达 式 的 值 , 再 和 各 case 语 句 后 的 值 做 比 较 。3 if 语 句 合 法 的 条 件 值 是 boolean 类 型 。4 continue 语 句 必 须 使 用 于 循 环 语 句 中 。5 break 语 句 有 两 种 用 途 : 一 种 从 switch 语 句 的 分 支 中 跳 出 , 一 种 是 从 循 环 语 句 内 部 跳 出 。6 do while 循 环 首 先 执 行 一 遍 循 环 体 , 而 while 循 环 首 先 判 断 表 达 式 的 值 。7 与 C+语 言 不 同 , Java 语 言 不 通 过 goto 语 句 实 现 跳 转 。8 每 一 个 else 子 句 都 必 须 和 它 前 面 的 一 个 距 离 它 最 近 的 if 子 句 相 对 应 。 9 在 switch 语 句 中 , 完 成 一 个 case 语 句 块 后 , 若 没 有 通 过 break 语 句 跳 出 switch 语 句 , 则会 继 续 执 行 后 面 的 case 语 句 块 。10 在 for 循 环 语 句 中 可 以 声 明 变 量 , 其 作 用 域 是 for 循 环 体 。三 、 写 出 下 列 程 序 的 运 行 结 果1 publicclassX3_3_1 11 publicstaticvoidmain(Stringargs)for(inti=0;i10;i+)if(i=5)break;System.out.print(i);【 运 行 结 果 】 01234【 程 序 解 析 】 本 程 序 主 要 考 查 break 语 句 的 使 用 。 程 序 中 的 for 循 环 变 量 i 是 从 0 到 9 进 行循 环 , 正 常 情 况 下 应 该 输 出 0 到 9, 但 是 由 于 循 环 体 中 有 “ if(i=5)break;” 语 句 , 当 i 为 5时 for 循 环 就 结 束 了 , 因 此 最 后 的 结 果 是 01234。2 publicclassX3_3_2publicstaticvoidmain(Stringargs) inti=5,j=2;while(ji-)j+;System.out.print(j);【 运 行 结 果 】 4【 程 序 解 析 】 本 程 序 主 要 考 查 while 语 句 以 及 “ 后 缀 -” 运 算 符 的 使 用 。 由 于 每 执 行 一 次 while判 断 , i 的 值 就 减 1, 每 执 行 1 次 循 环 体 , j 的 值 就 增 加 1, 而 while 判 断 总 共 经 历 了 “ 25” 、“ 30)” 结 束 执 行 , 必 须 等 到 i 的 为 0, 因 此 i 最 后 的 值 为 0。4 publicclassX3_3_4publicstaticvoidmain(Stringargs)intj=0;for(inti=3;i0;i-)j+=i;intx=2; while(xj)x+=1;System.out.print(x); 12 【 运 行 结 果 】 33453456【 程 序 解 析 】 本 程 序 主 要 考 查 for 循 环 和 while 循 环 嵌 套 的 情 况 。 在 for 循 环 第 1 次 执 行 到while 语 句 时 , j 和 x 的 值 分 别 为 3 和 2, 此 时 “ while(xj)” 条 件 满 足 , 进 入 while 循 环 体 执行 , x 值 变 为 3, 然 后 输 出 , 再 进 行 判 断 “ while(x0” 条 件 满 足 , 进入 for循 环 体 。 在 for循 环 第 2次 执 行 到 while语 句 时 , j和 x的 值 分 别 为 5和 2, 此 时 “ while(xj)”条 件 满 足 , 进 入 while 循 环 体 执 行 , 该 循 环 体 共 执 行 3 次 , x 值 分 别 变 为 3、 4、 5, 然 后 输出 , 在 for 循 环 第 3 次 执 行 到 while 语 句 时 , j 和 x 的 值 分 别 为 6 和 2, 此 时 “ while(x0” 条件 不 满 足 , 退 出 for 循 环 , 结 束 程 序 执 行 。 5 publicclassX3_3_5publicstaticvoidmain(Stringargs)inti=8,j=2;while(j-i)for(intk=0;k4;k+)j+;System.out.print(j);【 运 行 结 果 】 6【 程 序 解 析 】 本 程 序 主 要 考 查 while 循 环 和 for 循 环 嵌 套 执 行 的 情 况 。 第 1 次 执 行 “ while(j-i)” 时 , j 和 i 的 值 分 别 为 2 和 7, 条 件 满 足 , 执 行 for 循 环 , for 循 环 体 共 执 行 了 4 次 , j的 值 增 4, 变 为 6; 然 后 又 第 2 次 执 行 “ while(j-i)” , 此 时 j 和 i 的 值 分 别 为 6 和 6, 条 件不 满 足 , 结 束 while 循 环 , 输 出 j 的 值 。 6 publicclassX3_3_6publicstaticvoidmain(Stringargs)inta=0,b=1;do if(b%2=0)a+=b;b+;while(b=100);System.out.print(a);【 运 行 结 果 】 2550【 程 序 解 析 】 本 程 序 主 要 考 查 dowhile 循 环 的 执 行 情 况 。 执 行 循 环 体 之 前 , a=0, b=1, 进 入 循 环 体 后 , 由 于 “ b%2=0” 的 条 件 不 满 足 , 因 此 直 接 执 行 “ b+” , b 的 值 变 为 2, 满 足“ while(b=100)” 条 件 , 再 次 进 入 循 环 体 。 此 时 “ b%2=0” 的 条 件 满 足 , 语 句 “ a+=b” 执行 , 然 后 执 行 “ b+” , 再 进 行 “ while(b=100)” 判 断 , 如 此 一 直 执 行 下 去 , 直 至 该 条 件 不满 足 为 止 , 最 后 输 出 a 的 值 。 从 循 环 过 程 来 看 , 只 有 b 为 偶 数 时 才 加 到 a 中 去 , 因 此 a 的 值应 该 是 “ 2+4+6+100” 。 13 7 publicclassX3_3_7publicstaticvoidmain(Stringargs)for(inti=1;i=10;i+)if(i=5)continue;System.out.print(i+);【 运 行 结 果 】 678910【 程 序 解 析 】 本 程 序 主 要 考 查 continue 语 句 的 使 用 情 况 。 由 于 “ if(i=5)continue;” 语 句 ,使 得 for 循 环 变 量 i 从 1 到 5 的 循 环 过 程 中 都 不 能 执 行 “ System.out.print(i+);” , 只 有 i 的值 从 6 到 10 时 才 执 行 该 语 句 , 因 此 输 出 结 果 为 “ 678910” 。8 publicclassX3_3_8 publicstaticvoidmain(Stringargs)charch=7;intr=10;switch(ch+1)case7:r+=7;case8:r+=8;case9:r+=9;default:System.out.print(r);【 运 行 结 果 】 27 【 程 序 解 析 】 本 程 序 主 要 考 查 switchcase 语 句 , 由 于 “ ch+1” 的 值 是 8, 因 此 程 序 执 行 了“ r+=8;” 语 句 , 由 于 该 语 句 后 没 有 break, 因 此 又 执 行 了 后 面 的 “ r+=9;” 语 句 , 由 于 r 的初 值 为 10, 因 此 r 最 后 的 值 为 27。9 publicclassX3_3_9publicstaticvoidmain(Stringargs)lable: for(inti=0;i3;i+)for(intj=0;j0;i-)j+=i;a2: for(intk=1;k3;k+)j*=k;if(i=k) breaka1;System.out.println(j=+j);【 运 行 结 果 】 j=16 【 程 序 解 析 】 本 程 序 主 要 考 查 breaklab 语 句 的 执 行 情 况 。 当 程 序 执 行 到 “ breaka1;” 时 , 程序 流 程 直 接 跳 出 a1 所 在 的 外 层 for 循 环 , 输 出 j 的 值 。四 、 编 写 程 序1 利 用 if 语 句 , 根 据 下 列 函 数 编 写 一 个 程 序 , 当 键 盘 输 入 x 值 时 , 求 出 并 输 出 y 的 值 。x (x=1)y= 3x-2 (1x=10)【 编 程 分 析 】 本 题 主 要 考 查 ifelse 语 句 的 使 用 。 根 据 给 定 的 数 学 算 式 , 只 要 给 出 x 的值 , 就 有 对 应 的 y 算 式 , 因 此 利 用 ifelse 语 句 直 接 可 以 实 现 。【 参 考 程 序 】importjava.io.*; publicclassX3_4_1publicstaticvoidmain(Stringargs)throwsIOExceptionInputStreamReaderisr=newInputStreamReader(System.in);BufferedReaderbr=newBufferedReader(isr);intx,y;x=Integer.parseInt(br.readLine();if(x=1)y=x;elseif(x100|score0)System.out.println(输 入 成 绩 超 出 范 围 ! ); System.exit(1);k=score/10;switch(k)case10:case9:System.out.println(优 秀 );break;case8:System.out.println(良 好 );break;case7:System.out.println(中 等 ); break;case6:System.out.println(及 格 );break;default: System.out.println(不 及 格 );【 运 行 结 果 】87良 好3 利 用 for 循 环 , 计 算 1+3+7+ +( 2 20-1) 的 和 。【 编 程 分 析 】 本 例 主 要 考 查 利 用 for 循 环 求 一 个 数 列 的 和 的 编 程 方 法 。 数 列 的 项 数 和 每 一 项的 值 都 已 知 , 因 此 直 接 利 用 for 循 环 和 数 学 类 中 的 相 应 方 法 即 可 实 现 。【 参 考 程 序 】publicclassX3_4_3publicstaticvoidmain(Stringargs) 16 inti,sum=0;for(i=1;i21;i+)sum+=Math.pow(2,i)-1;System.out.println(sum=+sum);【 运 行 结 果 】sum=20971304 已 知 nnS 1114131211 , 利 用 while 循 环 编 程 求 解 n=100 时 的 S 值 。【 编 程 分 析 】 本 例 主 要 考 查 利 用 while 循 环 实 现 对 一 个 数 列 进 行 加 、 减 运 算 的 编 程 方 法 。 由于 项 数 已 经 确 定 , 因 此 数 列 的 首 项 和 末 项 已 知 , 但 是 由 于 加 减 交 替 出 现 , 可 以 利 用 一 个 变 量sign 来 确 定 符 号 , 设 sign 初 始 值 为 1, 循 环 一 次 让 它 变 一 次 符 号 , 从 而 实 现 符 号 的 交 替 变 化 。 【 参 考 程 序 】publicclassX3_4_4publicstaticvoidmain(Stringargs)inti=1,n=100;doublesign=1,sum=0;while(i=n)doublek=sign/i;sum+=k;i+;sign=-sign;System.out.println(S=+sum); 【 运 行 结 果 】S=0.6881721793101955 利 用 dowhile 循 环 , 计 算 1!+2!+3!+ +100!的 和 。【 编 程 分 析 】 本 例 主 要 考 查 利 用 dowhile 循 环 实 现 数 列 相 加 的 程 序 设 计 方 法 。 由 于 每 一 项都 是 一 个 阶 乘 , 所 以 在 循 环 过 程 中 先 求 阶 乘 , 然 后 再 相 加 。【 参 考 程 序 】publicclassX3_4_5publicstaticvoidmain(Stringargs)inti=1;longfact=1,sum=0;do fact*=i; sum+=fact;i+;while(i=100) ;System.out.println(sum=+sum); 17 【 运 行 结 果 】sum=10058763154855019776 编 程 序 , 求 101 3k k【 编 程 分 析 】 本 例 主 要 考 查 利 用 任 意 一 种 循 环 结 构 实 现 给 定 数 列 求 和 的 程 序 设 计 方 法 。 实 现方 法 和 前 几 例 类 似 , 在 此 不 再 赘 述 。【 参 考 程 序 】publicclassX3_4_6publicstaticvoidmain(Stringargs)intk,sum=0;for(k=1;k=10;k+) sum+=Math.pow(k,3);System.out.println(sum=+sum);【 运 行 结 果 】sum=30257 编 写 打 印 “ 九 九 乘 法 口 诀 表 ” 的 程 序 。【 编 程 分 析 】 本 例 主 要 考 查 利 用 循 环 嵌 套 进 行 程 序 设 计 的 方 法 。 “ 九 九 乘 法 口 诀 表 ” 既
展开阅读全文