1、2016 年计算机二级 c 语言题库及答案一 、 选 择 题 (每 小 题 1 分 , 共 40 小 题 , 共 40 分 )1.设 循 环 队 列 的 存 储 空 间 为 Q(1: 35), 初 始 状 态 为 front=rear=35。 现 经过 一 系 列 入 队 与 退 队 运 算 后 , front=15, rear=15, 则 循 环 队 列 中 的 元 素 个 数 为( )。A.20B.0 或 35C.15D.162.下 列 关 于 栈 的 叙 述 中 , 正 确 的 是 ( )。A.栈 底 元 素 一 定 是 最 后 入 栈 的 元 素B.栈 操 作 遵 循 先 进 后 出
2、的 原 则C.栈 顶 元 素 一 定 是 最 先 入 栈 的 元 素D.以 上 三 种 说 法 都 不 对3.下 列 链 表 中 , 其 逻 辑 结 构 属 于 非 线 性 结 构 的 是 ( )0、A.双 向 链 表B.带 链 的 栈C.二 叉 链 表D.循 环 链 表4.在 关 系 数 据 库 中 , 用 来 表 示 实 体 间 联 系 的 是 ( )。A.网 状 结 构B.树 状 结 构C.属 性D.二 维 表5.公 司 中 有 多 个 部 门 和 多 名 职 员 , 每 个 职 员 只 能 属 于 一 个 部 门 , 一 个 部 门可 以 有 多 名 职 员 。 则 实 体 部 门 和
3、 职 员 间 的 联 系 是 ( )。A.1: m 联 系B.m: n 联 系C.1: 1 联 系D.m: l 联 系6.右 两 个 关 系 R 和 S 如 下 :则 由 关 系 R 得 到 关 系 S 的 操 作 是 ( )。A.自 然 连 接B.并C.选 择D.投 影7.数 据 字 典 (DD)所 定 义 的 对 象 都 包 含 于 ( )。A.软 件 结 构 图B.方 框 图C.数 据 流 图 (DFD 图 )D.程 序 流 程 图8.软 件 需 求 规 格 说 明 书 的 作 用 不 包 括 ( )。A.软 件 设 计 的 依 据B.软 件 可 行 性 研 究 的 依 据C.软 件 验
4、 收 的 依 据D.用 户 与 开 发 人 员 对 软 件 要 做 什 么 的 共 同 理 解9.下 面 属 于 黑 盒 测 试 方 法 的 是 ( )。A.边 界 值 分 析B.路 径 覆 盖C.语 句 覆 盖D.逻 辑 覆 盖10.下 面 不 属 于 软 件 设 计 阶 段 任 务 的 是 ( )。A.制 订 软 件 确 认 测 试 计 划B.数 据 库 设 计C.软 件 总 体 设 计D.算 法 设 计11.以 下 叙 述 中 正 确 的 是 ( )。A.在 C 语 言 程 序 中 , main 函 数 必 须 放 在 其 他 函 数 的 最 前 面B.每 个 后 缀 为 C 的 C 语
5、 言 源 程 序 都 可 以 单 独 进 行 编 译C.在 C 语 言 程 序 中 , 只 有 main 函 数 才 可 单 独 进 行 编 译D.每 个 后 缀 为 .C 的 C 语 言 源 程 序 都 应 该 包 含 一 个 main 函 数12.C 语 言 中 的 标 识 符 分 为 关 键 字 、 预 定 义 标 识 符 和 用 户 标 识 符 , 以 下 叙 述正 确 的 是 ( )。A.预 定 义 标 识 符 (如 库 函 数 中 的 函 数 名 )可 用 做 用 户 标 识 符 , 但 失 去 原 有 含 义B.用 户 标 识 符 可 以 由 字 母 和 数 字 任 意 顺 序
6、组 成C.在 标 识 符 中 大 写 字 母 和 小 写 字 母 被 认 为 是 相 同 的 字 符D.关 键 字 可 用 做 用 户 标 识 符 , 但 失 去 原 有 含 义13.以 下 选 项 中 表 示 一 个 合 法 的 常 量 是 (说 明 : 符 号 口 表 示 空 格 )( )。A.9 口 9 口 9B.0XabC.123E0.2D.2.7e14.C 语 言 主 要 是 借 助 以 下 哪 个 功 能 来 实 现 程 序 模 块 化 ?( )A.定 义 函 数B.定 义 常 量 和 外 部 变 量C.三 种 基 本 结 构 语 句D.丰 富 的 数 据 类 型15.以 下 叙
7、述 中 错 误 的 是 ( )。A.非 零 的 数 值 型 常 量 有 正 值 和 负 值 的 区 分B.常 量 是 在 程 序 运 行 过 程 中 值 不 能 被 改 变 的 量C.定 义 符 号 常 量 必 须 用 类 型 名 来 设 定 常 量 的 类 型D.用 符 号 名 表 示 的 常 量 叫 符 号 常 量16.若 有 定 义 和 语 句 : int a, b;scanf(“%d, %d“, 以 下 选 项 中 的输 人 数 据 , 不 能 把 值 3 赋 给 变 量 a、 5 赋 给 变 量 b 的 是 ( )。A.3, 5,B.3, 5, 4C.3, 5D.3, 517.C 语
8、 言 中 char 类 型 数 据 占 字 节 数 为 ( )。A.3B.4C.1D.218.下 列 关 系 表 达 式 中 , 结 果 为 “假 ”的 是 ( )。A.(3+4)6B.(3!=4)2C.3=AaiO=ajO;ajO=t;)puts(a1);程 序 运 行 后 的 输 出 结 果 是 ( )。A.fwoB.fixC.twoD.owo33.有 以 下 程 序 :#includeint a=1, b=2:void funl(int a, int b)printf( “%d%d“, a, b); void fun2() a=3;b=4; main() funl(5, 6);fun2(
9、);printf(“%d%dn“, a, b);程 序 运 行 后 的 输 出 结 果 是 ( )。A.1 2 5 6B.5 6 3 4C.5 6 1 2D.3 4 5 634.有 以 下 程 序 :#includevoid func(int n) static int num=1);num=num+n;printf(“%d“, num);main()funo(3);func(4);printf(“n“); 程 序 运 行 后 的 输 出 结 果 是 ( )。A.4 8B.3 4C.3 5D.4 535.有 以 下 程 序 :#include#includevoid fun(int*pl, i
10、nt*p2, int*s) s=(int*)malloc(sizeof(int);*s=*pl+*p2;free(s);main()int a=1, b=40, *q=fun(printf(“%dn“, *q);程 序 运 行 后 的 输 出 结 果 是 ( )。A.42B.0C.1D.4136.有 以 下 程 序 :#includestruct STUchar name9;char sex;int score2;void f(struct STU a) struct STU b=“Zhao“, m, 85, 90);a1=b;main()struct STU c2=“Qian“, f, 95
11、, 92, “Sun“, m 98, 99;f(c);printf(”%s, %c, %d, %d, , co.name,co.sex, co.scoreo, co.score1);printf(“%s, %c, %d, %dn“, c1.name, c1.sex, c1.scoreo, c1.score1);程 序 运 行 后 的 输 出 结 果 是 ( )。A.Zhao, m, 85, 90, Sun, m, 98, 99B.Zhao, m, 85, 90, Qian, f, 95, 92C.Qian, f, 95, 92, Sun, m, 98, 99D.Qian, f, 95, 92,
12、 Zhao, m, 85, 9037.以 下 叙 述 中 错 误 的 是 ( )。A.可 以 用 typedef 说 明 的 新 类 型 名 来 定 义 变 量B.typedef 说 明 的 新 类 型 名 必 须 使 用 大 写 字 母 , 否 则 会 出 编 译 错 误C.用 typedef 可 以 为 基 本 数 据 类 型 说 明 一 个 新 名 称D.用 typedef 说 明 新 类 型 的 作 用 是 用 一 个 新 的 标 识 符 来 代 表 已 存 在 的 类 型名38.以 下 叙 述 中 错 误 的 是 ( )。A.函 数 的 返 回 值 类 型 不 能 是 结 构 体 类
13、 型 , 只 能 是 简 单 类 型B.函 数 可 以 返 回 指 向 结 构 体 变 量 的 指 针C.可 以 通 过 指 向 结 构 体 变 量 的 指 针 访 问 所 指 结 构 体 变 量 的 任 何 成 员D.只 要 类 型 相 同 , 结 构 体 变 量 之 间 可 以 整 体 赋 值39.若 有 定 义 语 句 int b=2;, 则 表 达 式 (b#include%stdlib.h#include#include/*found*int proc(char str)char C;unsigned i, j;for(i=0;ic=strj:/*found*strj=stri+;s
14、tri=C;void main()char st/81;system(“CLS“);printf(“nPlease enter a characterstring: “);gets(str);printf(“nknBefore sorting: n %s“, str);proc(str);printf(“nAfter sorting decendingly: n%S“, str);四 、 程 序 设 计 题 (共 18 分 )请 编 写 函 数 proc(), 它 的 功 能 是 计 算 : s=(In(1)4+ln(2)4+ln(3)+In(m)0.5在 C 语 言 中 可 调 用 log(
15、n)函 数 求 ln(n)。例 如 , 若 m 的 值 为 30, 则 proc()函 数 值 为 8.640500。注 意 : 部 分 源 程 序 给 出 如 下 。请 勿 改 动 main()函 数 和 其 他 函 数 中 的 任 何 内 容 , 仅 在 函 数 proc()的 花 括 号中 填 人 所 编 写 的 若 干 语 句 。试 题 程 序 :#include#include#inclllde#includedouble proc(int m)void main()system(“CLS“);printf(“%fn“, proc(30);【 参 考 答 案 及 专 家 详 解 】一
16、 、 选 择 题1.B。 【 解 析 】 Q(1: 35)则 队 列 的 存 储 空 间 为 35;对 空 条 件 : front=rear(初始 化 时 : front=rear), 队 满 时 : (rear+1)%n= =front, n 为 队 列 长 度 (所 用 数 组大 小 ), 因 此 当 执 行 一 系 列 的 出 队 与 入 队 操 作 , front=rear.则 队 列 要 么 为 空 , 要么 为 满 。2.B。 【 解 析 】 栈 是 先 进 后 出 , 因 此 , 栈 底 元 素 是 先 入 栈 的 元 素 , 栈 顶 元 素是 后 入 栈 的 元 素 。3.C。
17、 【 解 析 】 数 据 的 逻 辑 结 构 是 描 述 数 据 之 间 的 关 系 , 分 两 大 类 : 线 性 结构 和 非 线 性 结 构 。 线 性 结 构 是 n 个 数 据 元 素 的 有 序 (次 序 )集 合 , 指 的 是 数 据 元素 之 间 存 在 着 “一 对 一 ”的 线 性 关 系 的 数 据 结 构 。 常 用 的 线 性 结 构 有 : 线 性 表 ,栈 , 队 列 , 双 队 列 , 数 组 , 串 。 非 线 性 结 构 的 逻 辑 特 征 是 一 个 结 点 元 素 可 能 对应 多 个 直 接 前 驱 和 多 个 后 驱 。 常 见 的 非 线 性 结
18、 构 有 : 树 (二 叉 树 等 ), 图 (网 等 ),广 义 表 。4.D。 【 解 析 】 单 一 的 数 据 结 构 关 系 , 现 实 世 界 的 实 体 以 及 实 体 间 的 各种 联 系 均 用 关 系 来 表 示 。 数 据 的 逻 辑 结 构 二 维 表 , 从 用 户 角 度 , 关 系 模 型中 数 据 的 逻 辑 结 构 是 一 张 二 维 表 。 但 是 关 系 模 型 的 这 种 简 单 的 数 据 结 构 能 够 表达 丰 富 的 语 义 , 描 述 出 现 实 世 界 的 实 体 以 及 实 体 间 的 各 种 关 系 。5.A。 【 解 析 】 部 门 到
19、 职 员 是 一 对 多 的 , 职 员 到 部 门 是 多 对 一 的 , 因 此 , 实体 部 门 和 职 员 间 的 联 系 是 l: m 联 系 。6.C。 【 解 析 】 选 择 : 是 在 数 据 表 中 给 予 一 定 的 条 件 进 行 筛 选 数 据 。 投 影 :是 把 表 中 的 某 几 个 属 性 的 数 据 选 择 出 来 。 连 接 : 有 自 然 连 接 、 外 连 接 , 内 连 接等 , 连 接 主 要 用 于 多 表 之 间 的 数 据 查 询 。 并 : 与 数 学 中 的 并 是 一 样 的 。 两 张 表进 行 并 操 作 , 要 求 它 们 的 属
20、性 个 数 相 同 并 且 需 要 相 容 。7.C。 【 解 析 】 数 据 字 典 (DD)是 指 对 数 据 的 数 据 项 、 数 据 结 构 、 数 据 流 、 数据 存 储 、 处 理 逻 辑 、 外 部 实 体 等 进 行 定 义 和 描 述 , 其 目 的 是 对 数 据 流 程 图 中 的各 个 元 素 做 出 详 细 的 说 明 。8.B。 【 解 析 】 软 件 可 行 性 分 析 报 告 是 软 件 可 行 性 研 究 的 依 据 。9.A。 【 解 析 】 黑 盒 测 试 方 法 主 要 有 等 价 类 划 分 、 边 界 值 分 析 、 因 果 图 、 错误 推 测
21、 等 。 白 盒 测 试 的 主 要 方 法 有 逻 辑 驱 动 、 路 径 测 试 等 , 主 要 用 于 软 件 验 证 。10.A。 【 解 析 】 软 件 设 计 阶 段 的 主 要 任 务 包 括 丙 个 : 一 是 进 行 软 件 系 统 的可 行 性 分 析 , 确 定 软 件 系 统 的 建 设 是 否 值 得 , 能 否 建 成 。 二 是 进 行 软 件 的 系 统分 析 , 了 解 用 户 的 需 求 , 定 义 应 用 功 能 , 详 细 估 算 开 发 成 本 和 开 发 周 期 。11.B。 【 解 析 】 C 语 言 是 一 种 成 功 的 系 统 描 述 语 言
22、 , 具 有 良 好 的 移 植 性 , 每个 后 缀 为 .C 的 C 语 言 源 程 序 都 可 以 单 独 进 行 编 译 。12.A。 【 解 析 】 用 户 标 识 符 不 能 以 数 字 开 头 , C 语 言 中 标 识 符 是 区 分 大 小 写的 , 关 键 字 不 能 用 做 用 户 标 识 符 。13.B。 【 解 析 】 当 用 指 数 形 式 表 示 浮 点 数 据 时 , E 的 前 后 都 要 有 数 据 , 并且 E 的 后 面 数 要 为 整 数 。14.A。 【 解 析 】 C 语 言 是 由 函 数 组 成 的 , 函 数 是 C 语 言 的 基 本 单
23、位 。 所 以可 以 说 C 语 言 主 要 是 借 助 定 义 函 数 来 实 现 程 序 模 块 化 。15.C。 【 解 析 】 在 C 语 言 中 , 可 以 用 一 个 标 识 符 来 表 示 一 个 常 量 , 称 之 为符 号 常 量 。 符 号 常 量 在 使 用 之 前 必 须 先 定 义 , 其 一 般 形 式 为 : #define 标 识 符常 量 。16.C。 【 解 析 】 在 输 入 3 和 5 之 间 除 逗 号 外 不 能 有 其 他 字 符 。17.C。 【 解 析 】 Char 类 型 数 据 占 1 个 字 节 。18.B。 【 解 析 】 在 一 个
24、表 达 式 中 , 括 号 的 优 先 级 高 , 先 计 算 3 !=4, 为 真 即是 l, 12 为 假 。19.D。 【 解 析 】 选 项 A, 当 cl 和 c2 相 等 时 , 不 成 立 ;选 项 B, a*b 要 用 括 号括 起 来 ;选 项 C, case 与 后 面 的 数 字 用 空 格 隔 开 。20.D。 【 解 析 】 输 出 的 结 果 是 : -1, 1 0, 2 1, 221.C。 【 解 析 】 如 果 没 有 把 P 指 向 一 个 指 定 的 值 , *P 是 不 能 被 赋 值 的 。 定义 指 针 变 量 不 赋 初 始 值 时 默 认 为 nu
25、ll。22.D。 【 解 析 】 比 较 两 个 字 符 串 大 小 用 函 数 strcomp(S, t), 空 字 符 串 有 结束 符 , 所 以 也 要 占 用 字 节 , 两 个 双 引 号 表 示 的 是 空 字 符 串 。23.D。 【 解 析 】 多 元 运 算 符 问 号 前 面 表 达 式 为 真 , 所 以 (a-A+a)赋 值 给a, 括 号 里 的 运 算 是 把 大 写 字 母 变 成 小 写 字 母 , 所 以 答 案 应 为 选 项 D。24.B。 【 解 析 】 第 一 次 循 环 时 , b=1, 输 出 结 果 为 B;第 二 次 循 环 时 , b=3,
26、 输 出 结 果 为 D;第 三 次 循 环 时 , b=8, 输 出 结 果 为 I。25.D。 【 解 析 】 x0是 不 能 赋 值 的 。26.C。 【 解 析 】 在 C 语 言 中 null 等 价 于 数 字 0。27.A。 【 解 析 】 For 循 环 结 束 后 , 数 组 a 的 值 并 没 有 变 化 , 由 于 数 组 是 由 0开 始 , 所 以 a2的 值 是 30。28.B。 【 解 析 】 Fun 函 数 功 能 是 把 数 组 a 的 每 一 行 的 最 大 值 赋 给 b, a 的 第一 行 的 最 大 值 是 3, 第 二 行 的 最 大 值 是 6,
27、第 三 行 的 最 大 值 是 9, 所 以 答 案 是3, 6, 9。29.C。 【 解 析 】 第 一 次 执 行 字 符 串 的 复 制 函 数 a 的 值 是 a2, 第 二 次 执 行 的是 字 符 串 的 连 接 函 数 , 所 以 运 行 结 果 为 a2yz。30.A。 【 解 析 】 选 项 B 不 能 把 一 个 字 符 串 赋 值 给 一 个 字 符 变 量 , 选 项 c 和D 犯 了 同 样 的 错 误 是 把 字 符 串 赋 给 了 数 组 名 。31.C。 【 解 析 】 输 出 结 果 : k=1 a=2k=2 a=4k=3 a=7k=4 a=1232.A。 【
28、 解 析 】 For 循 环 完 成 的 功 能 是 把 二 维 数 组 a 的 第 一 列 的 字 母 按 从 小到 大 排 序 , 其 他 列 的 字 母 不 变 。33.B。 【 解 析 】 Funl 是 输 出 局 部 变 量 的 值 , fun2 是 把 全 局 变 量 的 值 改 成 3和 4, 所 以 输 出 的 结 果 是 5634。34.A。 【 解 析 】 第 一 调 用 func 函 数 时 输 出 4, 第 二 次 调 用 func 函 数 时 num的 值 并 不 会 释 放 , 仍 然 是 上 次 修 改 后 的 值 4, 第 二 次 调 用 结 果 为 8, 所
29、以 输 出 结果 是 4 8。35.C。 【 解 析 】 Fun 函 数 功 能 是 新 开 辟 内 存 空 间 存 放 a 和 b 的 地 址 , q 的 地址 并 没 有 变 化 , 所 以 应 该 还 是 指 向 地 址 a。36.D。 【 解 析 】 F 函 数 是 为 结 构 体 数 组 的 第 二 个 数 赋 值 , 数 组 的 第 一 个 数 没有 变 化 , 所 以 正 确 答 案 应 选 D。37.B。 【 解 析 】 用 typedef 说 明 的 类 型 不 是 必 须 用 大 写 , 而 是 习 惯 上 用 大 写 。38.A。 【 解 析 】 函 数 返 回 值 类
30、型 可 以 是 简 单 类 型 和 结 构 体 类 型 。39.B。 【 解 析 】 2 的 二 进 制 数 为 010, 移 两 位 后 的 二 进 制 数 为 01000, 转 成十 制 数 为 8, (3|2)为 真 即 1, 8/ 1=8, 所 以 结 果 为 8。40.D。 【 解 析 】 这 个 是 对 文 件 的 操 作 , 把 数 组 的 数 写 到 文 件 里 , 然 后 再 从文 件 里 倒 序 读 出 。 所 以 输 出 结 果 为 6, 5, 4, 3, 2, 1。二 、 基 本 操 作 题 程 序 填 空 题【 1】 stri=0由 函 数 proc()可 知 , 变
31、 量 n 中 存 放 整 型 数 组 bb中 的 元 素 个 数 , 最 后 要 返 回 到 主 函 数 当 中 , 因 此 , 【 3】 处 填 n。三 、 程 序 改 错 题(1)错 误 : int proc(char str)正 确 : void proc(char str)(2)错 误 : strj=stri+;正 确 : strj=stri;【 解 析 】 由 主 函 数 中 的 函 数 调 用 可 知 , 函 数 proc()没 有 返 回 值 。 因 此 , “int proc(char str)”应 改 为 “void proc(char str)”;由 函 数 proc()可
32、 知 , if 语 句 块 完成 将 字 符 串 str 中 的 第 i 个 元 素 与 第 j 个 元 素 相 交 换 。 因 此 , “strj=stri+;”应 改 为 “strj=stri;”。四 、 程 序 设 计 题double proc(int m)int i;double s=0.0; /s 是 表 示 其 和for(i=1;i=m;i+)s=s+log(i); /计 算 s=ln(1)+ln(2)+ln(3)+ln(m)return sqrt(s); /最 后 将 其 开 平 方 的 值 返 回 到 主 函 数 中【 解 析 】 由 题 目 中 所 给 表 达 式 可 知 , 表 达 式 的 值 为 m 项 表 达 式 的 和 然 后 开平 方 。 可 以 首 先 通 过 m 次 循 环 求 得 m 项 表 达 式 的 和 , 然 后 将 其 和 开 平 方 并 返 回到 主 函 数 当 中 。