专升本C语言历年考试题及答案5.pdf
(一)程 序 设 计 语 言 的 发 展1、机器语言 2、汇编语言 3、面 向 过 程 的 语 言 4、面 向 对 象 的 程 序 设 计 语 言(二)C 程 序 设 计 语 言 的 执 行 过 程1、编辑 2、编译 3、连接 4、执行(三)用 库 函 数 组 装 C 程序例 1:计 算 2.1715的 正 弦 值。#include math.hmai n()(float a;/*定 义 a 为实型变量*/a=sin(2.1715);/*调用 sin 函 数*/printf(t 0.0都 是 十 进 制 数 形 式。指 数 形 式。如 123.56e4或 123.56E4都 代 表 123.56*10、但 字 母 e(或 E)之 前 必 须 有 数 字,e后 面 指 数 必 须 为 整 数。例 如:e3、2.1e3.5、.e3、e 等 都 不 是 合 法 的 指 数 形 式。例 3:下 面 四 个 选 项 中,均 是 不 合 法 的 浮 点 数 的 选 项 是 _ _ _ _ _ _。(A)160.0.12 e3(B)123 2e4.2.e5(C)-.18 123e4 0.0(D)-,e3.234 le3答 案:B详 解:160.0.12-.18 123e4 0.0.234 1 c 3 是 实 数 的 十 进 制 形 式 或 指 数 形 式。e3 2e4.2.e 5.e 3 不 是 正 确 的 指 数 形 式。因 为 正 确 的 字 母 e(或 E)之 前 必 须 有 数 字,e后 面 指 数 必 须 为 整 数。对 于 数 据 表 示 形 式.e 5 以 及-.e3,e 前 的.与 不 是 有 效 的 数 字 表 示 形 式。1 2 3 是 整 数 形 式。2、实型变量C 实 型 变 量 分 为 单 精 度(flo a t型)和 双 精 度(d o u b le型)两 类。在 一 般 系 统 中,一 个 单 精 度 型 数 据 在 内 存 中 占 4 个 字 节(3 2 位),一 个 d o u b le型 数 据 占 8 个字节。一 个 单 精 度 型 变 量 能 接 收 7 位 有 效 数 字,一 个 d o u b le型 变 量 能 接 收 1 7 位 有 效 数 字,数值的范围 随 机 器 系 统 而 异。在 IBM P C 中,单 精 度 实 数 的 范 围 约 为 士 (3.4E1(r38-3.4E1()38),双精度实数的范围约为 (1.7 E IO-.7103。8)。例 4:m ain()float a;a=l 1 1 I I 1.666666;printf(4%r,a);输 出 结 果:111111.640621详 解:一 个 实 型 常 量 不 分 float型 和 double型。一 个 实 型 常 量 可 以 赋 给 一 个 float型 或 double型 变 量。根 据 变 量 的 类 型 截 取 实 型 常 量 中 相 应 的 有 效 位 数 字。由 于 float型 变 量 只 能 接 收 7 位 有 效 数 字,因 此 在 把 111111.666666赋 给 a 时 1,a 只接收了111111.6,由 于 输 出 函 数 printf中 的 f格 式 表 示 输 出 小 数 点 后 的 6 位 小 数,所 以 1 1 1 1 I 1 .6后 的 40621属 于 无 意 义 数 字。如 果 a 改 为 double型,则 能 全 部 接 收 上 述 1 2 位 数 字。(六)字符型数据1、字 符 常 量:普 通 形 式 的 字 符 常 量:用 引 号(即 撇 号)括 起 来 的 一 个 字 符,如 D,飞,?,等都是字符常 量。转 义 符:以开 头 的 字 符 序 列。常 用 的 以 开 头 的 特 殊 字 符 见 表 2.2表 2.2字符形式功能n换行t横向跳格v竖向跳格b退格r回车f走纸换页反斜杠字符单引号字符ddd1 到 3 位 8 进 进 制 所 代 表 的 字 符xhh1 到 2 位 1 6 进 制 数 所 代 表 的 字 符例 5:若 有 说 明 语 句:char c=7 2 9;则 变 量 c_(A)包 含 1 个字符(B)包 含 2 个字符(C)包 含 3 个字符(D)说明不合法答 案:D详 解:后 可 以 有 1 到 3 位 8 进 制 所 代 表 的 字 符,本 题 中“后 的“72”属 于 8 进 制 所 代 表 的 字 符,而“9”则 不 属 于8进 制 位 所 代 表 的 字 符,则 八729,中 包 含 了 两 个 字 符 常 量 为72,和 勺。而字符常量是用引 号(即 撇 号)括 起 来 的 一 个 字 符,所 以 答 案 为D。2、字符变量字 符 变 量 是 用 来 存 放 字 符 常 量 的 存 储 单 元。3、字 符 数 据 在 内 存 中 的 存 储 形 式将 一 个 字 符 常 量 存 放 到 一 个 字 符 变 量 中,实 际 上 并 不 是 把 该 字 符 本 身 存 放 到 内 存 单 元 中 去,而是 将 该 字 符 的 相 应 的A SCI I码 值 存 放 到 存 储 单 元 中 去。例6:将 小 写 字 母 转 换 成 大 写 字 母main()char c1=5a*;c1=c1-32;printf(%c”,c 1);)输 出 结 果:A详 解:0的AS C H码 为9 7,所 以cl=,a;语 句 的 功 能 是 把9 7赋值给了 cl,cl=c 1-32;语 句 的 功 能 是 把97-32的 值6 5赋 值 给c 1。printf函 数 中 的 ;:格 式 表 示 以 字 符 方 式 输 出。AS C H码 值 为6 5的 字 符 为A,所 以 运 行 结 果 为:A(七)字 符 串 常 量字 符 常 量 是 用 一 对 双 引 号 括 起 来 的 零 个 或 多 个 字 符 序 列。C规 定 以 字 符、0,作 为 字 符 串 结 束 标志。所 以 字 符 串“a实 际 上 包 含2个 字 符:工 0 因 此 下 面 的 语 句:c=a”;把 一 个 串 赋 值 给 一 个 字 符 变 量c是 错 误 的。例7:下 面 不 正 确 的 字 符 串 常 量 是 _ _ _ _ _ _ _。(A)abc(B)(C)”0“(D)”答 案:A详 解:abc,是 用 单 引 号 引 来 的,所 以,abc,不 是 正 确 的 字 符 串 常 量。(八)算 术 运 算 符 和 算 术 表 达 式1、基 本 算 术 运 算 符 C语 言 中 有5个 基 本 算 术 运 算 符:+(加 法 运 算 符。如3+5、+3)-(减 法 运 算 符。如5-2-3)*(乘 法 运 算 符,如3*5)(除 法 运 算 符,如 5/3,5.0/3)%(求 余 运 算 符,要 求 两 侧 均 为 整 型 数 据)例8:在C语 言 中,要 求 运 算 数 必 须 是 整 型 的 运 算 符 是(A)/(B)+(C)!=(D)%答 案:D详 解:对 于 运 算 符 来 说,要 求 两 侧 均 为 整 型 数 据,所 以 表 达 式3.5%2与3%2.0是 错 误 的。例9:写 出 下 列 程 序 的 输 出 结 果m a in()printf(%d,%dn,5/3,5%3);p rin tf((大 于)=(大 于 或 等 于)(小 于)=(小 于 或 等 于)(等 于)是(不 等 于)2、优 先 级 别:关 系 运 算 符 的 优 先 级 别 低 于 纯 算 术 类,高 于 赋 值 类。后 两 个 的 优 先 级 小 于 前 四 个。如 表 达 式a+b v c+d完 全 等 价 于 表 达 式(a+b)(c+d)o3、运 算 量:关 系 运 算 符 是 双 元 运 算 符,整 型、实 型、字 符 都 可 以 参 预 运 算。4、左 右 结 合 性:从 左 向 右 的 结 合 方向5、关 于 关 系 运 算 符 的 进 一 步 说 明:关 系 表 达 式 的 值 是 整 型 数0或1,故 也 可 以 将 其 看 成 一 种 整 型 表 达 式。例 如:i n t i=l ,j=7,a;a=i+(j%4 !=0);的 执 行 结 果 为:a的 值 为2。要 说 明x在 区 间 a,b 中,普 通 数 学 中 使 用 表 达 式aWxOb。但C语 言 中 应 写 成a =x&x 2 7 8在 数 学 上 是 不 允 许 的,而 在C中 是 允 许 的。按 自 左 至 右 求 解。字 符 数 据 的 比 较 按 其ASCH码 值 进 行。在 判 定 两 个 浮 点 数 是 否 相 等 时,由 于 存 储 上 的 误 差,会 得 出 错 误 的 结 果。例 如:1.0/3.0*3.0=1.0该 表 达 式 的 值 为0。(+)逻辑运算1、C语 言 提 供 的 逻 辑 运 算 符:&(逻 辑 与)1 1(逻 辑 或)!(逻 辑 非)2、优 先 级 别:&与I I的 优 先 级 别 低 于 关 系 运 算 符,高 于 条 件 运 算 符,&的 优 先 级 别 高 于I I,!的优 先 级 别 与 自 加 运 算 符(+)、自 减 运 算 符(-)同 级。3、运 算 量:&和I I是 双 元 运 算 符,!是 单 元 运 算 符。例 12:已知 x=43,c h=A ,y=0;则 表 达(x=y&c h v B&!y )的 值 是 _ _ _ _ _ _ _。(A)0(B)语法错(C)1 (D)“真”答 案:C详 解:C语 言 不 提 供 逻 辑 性 数 据“真”和“假”,在 进 行 逻 辑 运 算 时,结 果 不 是1就 是0。4、左 右 结 合 性:&和I I运 算 符 的 结 合 方 向 为 自 左 至 右,!的 结 合 方 向 为 自 右 至 左。5、关 于 逻 辑 运 算 符 的 进 一 步 说 明:在 一 个&表 达 式 中,若&的 一 端 为0,则 不 必 再 计 算 另 一 端,该 表 达 式 的 值 肯 定 为0。在 一 个I I表 达 式 中,若I I的 一 端 为0,则 不 必 再 计 算 另 一 端,该 表 达 式 的 值 肯 定 为L例 13:写 出 下 面 程 序 的 输 出 结 果。m a i n()i n t x,y,z;x=y=z=();+x&+y I l+z;p r i n t f(t 4%d,%d,%d x,y.z);x=y=z=O;+x l l +y&+z;p r i n i f(%d,%d,%d”,x,y,z);输 出 结 果:1,1,01,0,0详 解:因 为&的 优 先 级 别 高 于I I,所 以 表 达 式+x&+y l l +z是 一 个 或 表 达 式,根 据I I的 一 端 为0,则不 必 再 计 算 另 一 端 的 原 则,先 计 算 表 达 式+x&+y的 值 为1,因 为1或 任 何 值 都 为1,所以表达式+z没 有 运 算,输 出 结 果 为:1,1 ,0。表 达 式+x l l +y&+z也 是 一 个 或 表 达 式,同 样 根 据I I的 端 为0.则不必 再 计 算 另 一 端 的 原 则,先 计 算 表 达 式+z的 值 为1,因 为1或 任 何 值 都 为1,所 以 表 达 式+y&+z没 有 运 算,愉 出 结 果 为:1,0.0o(十 一)赋值运算1、基 本 的 赋 值 运 算 符:=(将 赋 值 运 算 符 右 侧 的 表 达 式 赋 给 左 侧 的 变 量)2、自反算术赋 值 运 算 符C语 言 中 有5个 基 本 自 反 算 术 赋 值 运 算 符:+=(a+=3等价 J-a=a 4-3)3等 价 于a=a-3)*=(a *=3等 价 于a=a*3)(a*=3等 价 于a=a *3)%=(a%=3等 价 于a=a%3)3、优 先 级 别:赋 值 运 算 符 与 自 反 算 术 赋 值 运 算 符 属 于 同 等 级 别,低 于 条 件 运 算 符,高于逗号运 算 符。如 对 于 表 达 式x%=y +3完 全 等 价 于x%=(y +3)。例14:若 有 以 下 定 义,则 能 使 值 为3的 表 达 式 是 _ _ _ _ _ _ _。I n t k =7,x=1 2;(A)x%=(k%5)(B)x%=(k-k%5)(C)x%=k-k%5(D)(x%=k)-(k%=5)答 案:D详 解:表 达 式(x%=k)-(k%=5)完 全 等 价 于(x=x%k)-(k=k%5)等 价 于5-2,此 表 达 式 的 结 果 为3。4、运 算 量:双 元 运 算 量,赋 值 运 算 符 与 自 反 算 术 赋 值 运 算 的 第 一 个 量 必 须 为 变 量,且=前后必 须 为 整 型 数 据。如 对 于 表 达 式a*3+=2是 错 误 的。因 为 此 表 达 式 完 全 等 价 于(a*3)=(a*3)+2。5、左 右 结 合 性:自 右 至 左 参 预 运 算。例15:若a是i n i型 变 量,且a的 初 值 为6,则 计 算 表 达 式 后a的 值 为 _ _ _ _ _ _ _。a+=a-=a*a答 案:-6 0详 解:表 达 式 从 左 向 右 运 算,先 计 算 表 达 式a=a-36后a为-30,再 计 算 表 达 式a=a+a后a的值变为-6 0 o(十 二)条 件 运 算:1、条 件 运 算 符 的 基 本 形 式 及 功 能:条 件 运 算 是 一 种 在 两 个 表 达 式 的 值 中 选 择 一 个 的 操 作。它 的 一 般 形 式 为:e 1?e 2:e 3它 的 操 作 过 程 为,若e l为 真,则 表 达 式 的 值 为e 2,若 为 假 表 达 式 的 值 为e 3。2、优 先 级 别:低 于 逻 辑 运 算,高 于 赋 值 运 算。3、运 算 量:三 元 运 算 量,e l 般 为 算 术 表 达 式,e 2、e3可 以 是 任 意 类 型 的 表 达 式,条 件表达式 的 值 的 类 型 为e 2与e 3二 者 中 类 型 较 高 的。例16:若 有 条 件 表 达 式(e x p)?a+:b-,则 以 卜表达 式 中 能 完 全 等 价 于 表 达 式(e x p)的 是 _ _ _ _ _ _ _。答 案:e x p!=0详 解:对 于 表 达 式e l?e 2:e 3,e l 一 般 为 算 术 表 达 式、逻 辑 表 达 式、关 系 表 达 式,结 果 为1 (真)或0(假)。也 可 以 为 数 值e x p,结 果 为 结 果 为 非0(真)或0(假)在 本 例 中 与e x p完 全 等价的表达式是 e x p!=0。4、左 右 结 合 性:自 右 至 左 运 算。例 17:以下 程 序 的 运 行 结 果 是 _ _ _ _ _ _ _。m a i n()(i n t k=4ta=3,b =2,c=1 ;p r i n t f(44%d,k a?k:c b?c:a);答 案:1详 解:条 件 表 达 式 是 从 右 向 左 运 算,所 以 在 本 例 中 先 计 算 表 达 式 c b?c:a 的 值,把各 数 值 代 入 此表 达 式 的 值 为 1。再 计 算 表 达 式 k a?k:I 的 值,因 为 k m,则自 动 取 n值,即 保 证 n个 字 符 正 常 输 出。f 格 式:用 来 输 出 实 数(包 括 单、双 精 度),以 小 数 形 式 输 出。有 以 下 几 种 用 法:%f:不 指 定 宽 度,整 数 部 分 全 部 输 出 并 输 出 6位 小 数。%m.n f:输 出 共 占 m 列,其 中 有 n位 小 数,如 数 值 宽 度 小 于 m 左 端 补 空 格。%-m.n f:输 出 共 占 n列,其 中 有 n位 小 数,如 数 值 宽 度 小 于 m 右 端 补 空 格。e格 式:以指 数 形 式 输 出 实 数。可 用 以 下 形 式:%e:数 字 部 分(又 称 尾 数)输 出 6位 小 数,指 数 部 分 占 5位 或 4位。%m.n e 和%-0 1.伏:m、n和“-“字 符 含 义 与 前 相 同。此 处 n指 数 据 的 数 字 部 分 的 小 数 位 数,m表 示 整 个 输 出 数 据 所 占 的 宽 度。g 格 式:白 动 选 f格 式 或 e格 式 中 较 短 的 一 种 输 出,且 不 输 出 无 意 义 的 零。4、关 J -p r in t f 函 数 的 进 一 步 说 明:如 果 想 输 出 字 符“”,则 应 该 在“格 式 控 制”字 符 串 中 用 连 续 两 个 表 示,如:p r in t f(%f%”,1.0/3);输出 0.3 3 3 3 3 3%。(十 六)s can f 函数s can f 函 数 可 以 用 来 输 入 任 何 类 型 的 多 个 数 据。1、s can f 函 数 的 一 般 格 式s can f(格 式 控 制,地 址 表 列)“格 式 控 制”的 含 义 同 p r in t f 函 数。普 通 字 符 即 需 要 原 样 输 入 的 字 符。地 址 表 列 是 指 由 若 干 个 地 址 组 成 的 表 列,它 们 之 间 用 隔 开。2、格 式 控 制 的 完 整 格 式:%*m 1 或 h 格式字符 格 式 字 符 与 p r in t f 函 数 中 的 使 用 方 式 相 同,以%d、o、x、c、s、f、%e,无 u 格 式、g格 式。可 以 指 定 输 入 数 据 所 占 列 宽,系 统 自 动 按 它 截 取 所 需 数 据。如:scanf(“%3d%3d”,&a,&b);输 入:123456系 统 白 动 将123赋 给a,456赋 给b0 后 的“*”附 加 说 明 符,用 来 表 示 跳 过 它 相 应 的 数 据。例 如:scanf(*t%2d%*3d%2d,&a,&b);如 果 输 入 如 下 信 息:1234567。将12赋 给a,6 7赋 给b。第 二 个 数 据“345“被 跳 过 不 赋 给 任 何 变 量。输 入 数 据 时 不 能 规 定 精 度,例 如:scanf(t4%7.2r,&a);是 不 合 法 的,不 能 企 图 输 入:12345.67而 使a的 值 为12345.67。3、输 入 数 据流分隔 根 据 格 式 字 符 的 含 义 从 输 入 流 中 取 得 数 据,当 输 入 流 中 数 据 类 型 与 格 式 字 符 要 求 不 符 时,就认为 这 一 项 结 束。如:scanf(%d%c%f”.&a,&b,&c);如 果 输 入 如 下 信 息:1234rl234.567则scanf函 数 在 接 收 数 据 时 发 现“r“类 型 不 匹 配,于 是 把”1 234“转 换 成 整 型 赋 值 给a,把“r”赋给变 量b,最 后 把“1234.567”转 换 成 实 型 数 据 赋 给c。根 据 格 式 项 中 指 定 的 域 宽 分 隔 出 数 据 项。如 语 句:scanf(“2d%3f%4f”,&a,&b,&c);如 果 输 入 如 下 信 息:123456789012345则scanf函 数 在 接 收 数 据 时 根 据 域 宽 把12赋 值 给a,345赋 值 给b,6789赋 值 给c。隐 示 分 隔 符。空 格、跳 格 符(”)、换 行 符(n D都 是C语 言 认 定 的 数 据 分 隔 符。显 示 分 隔 符。在scanf函 数 的 两 个 格 式 说 明 项 间 有 一 个 或 多 个 普 通 字 符,那 么 在 输 入 数 据 时,在 两 个 数 据 之 间 也 必 须 以 这 一 个 或 多 个 字 符 分 隔。如 语 句:scanf(*a=%d,b=%f,c=%f,&a.&b,&c);则 输 入 数 据 应 该 为:a=1234,b=67.8,c=98.1234、关 于scanf函 数 的 进 一 步 说 明:s can f函 数 中 的“格 式 控 制”后 面 应 当 是 变 量 地 址,而 不 应 是 变 量 名。例 如,如 果a、b为整型变 量,则s can f(%d,%d”,a,b);是 不 对 的,应 将“a,b”改 为“如 果 在“格 式 控 制”字 符 串 中 除 了 格 式 说 明 以 外 还 有 其 它 字 符,则 在 输 入 数 据 时 应 输 入 与 这 些字 符 相 同 的 字 符。例 如:s can f(d,%d”,&a,&b);输 入 时 应 输 入:3,4。3与4之 间 的 逗 号 应 与s can f函 数 中 的“格 式 控 制”中 的 逗 号 相 对 应,输入其它 符 号 是 不 对 的。在 用“c”格 式 输 入 字 符 时,空 格 字 符 和 转 义 字 符 都 作 为 有 效 字 符 输 入。s can f (%c%c%c”,&c 1 ,&c2.&c3);如输 入:a b c.字 符 公 赋 给cl,字 符(空 格)赋 给c2,字 符,b 赋 给c3。5、s can f的停止与返回 格 式 参 数 中 的 格 式 项 用 法 一 正 常 结 束。发 生 格 式 项 与 输 入 域 不 匹 配 时-不 正 常 退 出:(十 七)getchar、putchar 函数1、getch ar 函数getch ar函 数 是 从 终 端 输 入 一 个 字 符。getch ar函 数 没 有 参 数,其 般 形 式 为:getch ar()。2、p utch ar 函 数p utch ar函 数 的 作 用 是 向 终 端 输 出 一 个 字 符。二、练习(一)选 择 题1、下 面 四 个 选 项 中,均 是 不 合 法 的 用 户 标 识 符 的 选 项 是 _。(A)A P_0 do (B)f l o at l aO _a(C)b-a go to i n t(D)_ 123 tem p I N T2、若x,i,j和k都 是i n t型 变 量,则 计 算 卜 面 表 达 式 后,x的 值 为_。x=(i=4,j=1 6,k =3 2)(A)4(B)1 6 (C)3 2 (D)5 23、下 列 四 个 选 项 中,均 是 不 合 法 的 整 型 常 量 的 选 项 是 _。(A)-Of l -Oxf f f f 0 0 1 1(B)-Oxcdf0 1 71 2,3 45 6(C)-0 1 89995 e2(D)-0 x48eg-0 6 80 3 f,、下 面 四 个 选 项 中,均 是 合 法 浮 点 数 的 选 项 是(A)l ei5 e-9.40 3 e2(B )-.6 01 2 e-4-8e5(C)1 2 3 e1.2 e-.42 e-l(D)-e3,8e-45.e-05、下 面 四 个 选 项 中,均 是 合 法 字 符 的 选 项 是 _。(A)4xf (B)、1 0 1 7,(C)0 1 8 f xab (D)0 1 1 0 1 xl f 6、以 下 不 正 确 的 叙 述 是 _。(A)在 C程 序 中,逗 号 运 算 符 的 优 先 级 最 低。(B)在 C程 序 中,AP H和 a p h 是 两 个 不 同 的 变 量(C)若 a 和 b类 型 相 同,在 计 算 机 了 赋 值 表 达 式 a=b 后,b的 值 不 变。(D )当 从 键 盘 输 入 数 据 时,对 于 整 型 变 量 只 能 输 入 整 型 数 值,对 于 实 型 变 量 只 能 输 入 实 型 数 据。第 三 章C程 序 的 流 程 设 计一、算法1、算法的概念为 解 决 某 一 个 问 题 而 采 取 的 方 法 和 步 骤,就 称 为 算 法。2、算法的性质 有 穷 性:一 个 算 法 应 包 含 有 限 的 操 作 步 骤 一 个 初 始:此 动 作 序 列 只 有 一 个 初 始 动 作 确 定 性:算 法 中 的 每 一 个 步 骤 都 应 当 是 确 定 性 的,仅 有 一 个 后 继 动 作。有 一 个 或 多 个 输;1 :序列终i h 表 示 问 题 得 到 解 答 或 问 题 没 有 解 答,没 有 输 出 的 算 法 是 没 有 意 义的。二、选 择 型 程 序 设 计1、i f语句的形式if(条 件 表 达 式)语句if(条 件 表 达 式)语 句1 else 语句 2注 意:i f语 句 中 的 条 件 表 达 式 一 般 为 逻 辑 表 达 式 或 关 系 表 达 式,但 也 可 以 是 任 意 的 数 值 类 型(包 括 整型、实 型、字 符 型、指 针 类 型),例 如 下 列 语 句 也 是 合 法 的。if(a)p rin tf(“%d,a);在i f语 句 中,分 号 是 语 句 的 结 束 标 志。在i f和e ls e后 面 可 以 只 含 一 个 内 嵌 的 操 作 语 句,也 可 以 有 多 个 操 作 语 句,此 时 用 花 括 号 将 几个 语 句 括 起 来 成 为 一 个 复 合 语 句。例1:以 下 不 正 确 的i f语 句 形 式 是()A)if(x y&x!=y);B)if(x=y)x+=y;C)if(x!=y)scanf(d”,&x)else scanf(%d”,&y);D)if(x y)z=x;x=y;y=z;答 案:x,y,z的 值 分 别 是:20 30 30详 解:在 此 语 句 中,条 件x y为 假,所 以 只 执 行x=y;y=z;两 条 语 句。例3、以 下 不 正 确 的 语 句 是()A)if(x y);B)if(x=y)&(x!=0)x+=y;C)if(x!=y)scanf(%d”,&x);D)if(x o k 2 赋 值,执 行 条 件 语 句 后 a值 没 有 改 变,所 以 a值 仍 是 原 值 1 00。3、s w i t c h 结构s w i t c h 语 句 是 多 分 支 选 择 语 句,其形式如卜.:s w i t c h(表达式)(c a s e 常 量 表 达 式 1:语 句 1c a s e 常 量 表 达 式 2:语 句 2defa ul t:语句 n+1)注 意:1、s w i t c h 后 面 括 弧 内 的“表 达 式”,可 以 是 整 型 表 达 式 或 字 符 型 表 达 式,也 可 以 枚 举 型 数 据。2、当 表 达 式 的 值 与 某 一 个 c a s e后 面 的 常 量 表 达 式 的 值 相 等 时,就 执 行 此 c a s e后 面 的 语 句,若所有 的 c a s e中 的 常 量 表 达 式 的 值 都 没 有 与 表 达 式 的 值 匹 配 的,就 执 行 defa ul t 后 面 的 语 句。3、每 一 个 c a se 的 常 量 表 达 式 的 值 必 须 互 不 相 同,否 则 就 会 出 现 互 相 矛 盾 的 现 象。4、执 行 完 一 个 c a se 后 面 的 语 句 后,流 程 控 制 转 移 到 卜.一 个 c a se 继 续 执 行,直 到 遇 到 b re a k 语句或 执 行 完 为 止。5、d e fa u li可 以 放 在 c a s e 语 句 的 后 面,也 可 以 放 在 c a se 语 句 的 前 面。例 5:运 输 公 司 对 用 户 计 算 运 费,距 离 越 远,每 公 里 运 费 越 低。设 每 公 里 每 吨 货 物 的 基 本 运 费 为P,货物 重 为 w,距 离 为 s,折 扣 为 d,则 总 运 费 f 计 算 公 式 为 f=p*w*s(l-d),编 写 程 序。公 里 数 s 与折扣 率 d 的 标 准 如 下:(此 程 序 可 用 i f.e l s e 来 完 成,也 可 以 用 s w itc h 来 完 成)。sv250kmd=0250W s500d=0.05500W s1000d=0.0751000W s2000d=0.12000W s3000d=0.153000C sd=0.2main()int s;float p,w,d,f;printf(“请 输 入 每 公 里 每 吨 货 物 的 基 本 运 费”);scanf(4i%r,&p);printf(“请 输 入 货 物 重”);scanf(*%f*&w);printf(“请 输 入 公 里 数)scanf(f”,&s);switch(i nt)(s/250)case 0:d=0;break;case 1:d=0.05;breakcase 2:case 3:d=0.075;break:case 4:case 5:case 6:case 7:d=0.1;breakcase 8:case 9:case 10:case I 1:d=0.15;break;default:d=0.2;f=p*w*s(1-d);printf(“基 本 运 费 是:f,f);)详 解:1、多 个 case可 共 用 一 组 执 行 语 句,必 须 写 成 如 下 的 形 式:case 4:case 5:case 6:case 7:d=0.1;break;case后 而 只 能 有 一 个 常 量,把 上 式 改 写 成 case 4,5,6,7:d=0.1;break;的 形 式 是 错 误 的。2、switch后 面 括 弧 内 的“表 达 式”必 须 是 整 型 表 达 式 或 字 符 型 表 达 式,也 可 以 是 枚 举 型 数 据,对 于 swith来 说,关 键 是 把 原 始 数 据 转 换 为 易 表 达 的 形 式。例 6:请 读 以 程 序 写 出 程 序 的 输 出 结 果。#includemain()(int x=1 ,y=O,a=O,b=O;switch(x)(case 1:s witch(y)(case 0:a+;break;case 1 :b+;break;case 2:a+;b+;break;)prinlf(a=%d,b=%d”,a,b);答 案:a=2,b=1详 解:此 程 序 是 switch的 嵌 套 结 构,在 此 程 序 中 break跳 出 内 层 switch结 构,接 着 执 行 外 层 switch的 case 2 后 的 语 句。例 7:写 出 下 面 程 序 的 运 行 结 果 是()mai n()int i;for(i=1 ;i=5;i+)s witch(i%5)c a s e 0:p r i n t f(*);b r ea k;c a s e I:p r i n t f(*#n);b r ea k;defa ul t:p r i n t f(“n );c a s e 2:p r i n t f(&”);)答 案:#&*详 解:defa ul t可 放 在c a s e语 句 的 前 面,也 可 以 放 在c a s e语 句 的 后 面,当i%5不 等 于0.1,2时,将 执 行defa ul i后 的 语 句p r i n l f(“n”);执 行 完 成 后 没 有b r ea k,将 继 续 执 行c a s e 2后 的 语 句p r i n t f(*i&M);三、循 环 型 程 序 设 计1、w h i l e 语句w h i l e语 句 用 来 实 现 当 型”循 环 结 构,其 一 般 形 式 如 下:w h i l e(条 件 表 达 式)循 环 体 语 句例11:设 有 程 序 段:i n t k=1 0;w h i l e(k=0)k=k-l;循 环 体 执 行()次。答 案:0答 案 解 析:在 此 程 序 的w h i l e结 构 中,条 件 表 达 式k=0的 结 果 永 远 为0即 为 假,所以循环执行的 次 数 为0。例12:下 面 程 序 段 的 运 行 结 果 是()x=y=0;w h i l e(x 3)b r ea k;循 环 执 行()次答 案:4答 案 解 析:w h i l e结 构 中 的 条 件 表 达 式p r i n t f,*)的 值 为 输 出 数 据 的 个 数,在 此 例 中,p r i n i f(*”)的 结 果 为I,即 为 真。2、do-w h i l e 语句do-w h i l e语 句 的 特 点 是 先 执 行 循 环 体,然 后 判 断 循 环 条 件 是 否 成 立,其 一 般 形 式 为:d o 循环体语句 w h i l e(条 件 表 达 式);例 14、若有如下语句i n t x=3;d o p r i n t f(*%d n,x-=2);w h i l e(-x);则 上 面 程 序 段 输 出 结 果 是()o答 案:1例 15、以 下 程 序 段 循 环 执 行 几 次。x=-1 ;d o x=x*x;w h i l e(!x);答 案:1例 16、下 面 程 序 的 运 行 结 果 是()m a i n()(i n i y=1 0;d o y-;w h i l e(-y);p r i n t f(u%d n,y-);)答 案:03、f o r语句C语 言 中 的f o r语 句 使 用 最 为 灵 活,不 仅 可 以 用 于 循 环 次 数 已 经 确 定 的 情 况,而 且 可 以 用 于 循 环次 数 不 确 定 而 只 给 出 循 环 结 束 条 件 的 情 况,它 完 全 可 以 代 替w h i l e语 句,其 一 般 形 式 为:f o r(表 达 式1;表 达 式2;表 达 式2)语句说 明:f o r语 句 一 般 形 式 中 的“表 达 式I”可 以 省 略,此 时 应f o i语 句 之 前 给 循 环 变 量 赋 初 值。注意省略表 达 式1时,其 后 的 分 号 不 能 省 略。如 果 表 达 式 2 省 略,即 不 判 断 循 环 条 件,循环无终止地进行卜.去。表 达 式 3 也 可 以 省 略,但 此 时 程 序 设 计 者 应 另 外 设 法 保 证 循 环 正 常 结 束。可 以 省 略 表 达 式 1 和 表 达 式 3,只 有 表 达 式 2,即 只 给 循 环 条 件,在 这 种 情 况 下,完 全 等 同 于 while语 句。3 个 表 达 式 都 可 省 略,如:fo r(;)语 句,相 当 于 w h ile(l)语 句,即 不 设 初 值,不 判 断 条 件(认为 表 达 式 2 为 真 值),循 环 变 量 不 增 值。无 终 止 地 执 行 循 环 体。表 达 式 1 可 以 是 设 置 循 环 变 量 初 值 的 赋 值 表 达 式,也 可 以 是 与 循 环 变 量 无 关 的 其 他 表 达 式。for(sum=0;i=1 00;i+)sum=sum+i;表 达 式 一 般 是 关 系 表 达 式(如 i=1 0 0)或 逻 辑 表 达 式(如 ab&x 4-+y;x=i+)i=x;B)for(;x+=i)C)w hile(l)x+;D)for(i=1 0;i-)sum+=i;答 案:A例19、执 行 语 句 for(i=l;i+v4;);后 变 量 i 的 值 是()答 案:4例20、下 面 程 序 段 的 功 能 是 计 算 1 0 0 0!的 末 尾 含 有 多 少 个 零。请 填 空。for(k=0,i=5;i=1000;i+=5)m=i;while()k+;m=m/5;I答 案:m%5!=04、break 与 continue在 break语 句 可 以 使 流 程 跳 出 sw itch结 构,继 续 执 行 sw itch语 句 下 面 的 一 个 语 句。实 际 上,break语 句 还 可 以 用 来 从 循 环 体 内 跳 出