2012 年 3 月 全 国 计 算 机 等 级 考 试 二 级 笔 试 试 卷 C 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ((1) (10) (21) (40) 每 题 2 分,(11) (20) 每 题 1 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上, 答 在 试 卷 上 不 得 分 (1) 下 列 叙 述 中 正 确 的 是 A) 循 环 队 列 是 队 列 的 一 种 链 式 存 储 结 构 B) 循 环 队 列 是 队 列 的 一 种 顺 序 存 储 结 构 C) 循 环 队 列 是 非 线 性 结 构 D) 循 环 队 列 是 一 种 逻 辑 结 构 (2) 下 列 叙 述 中 正 确 的 是 A) 栈 是 一 种 先 进 先 出 的 线 性 表 B) 队 列 是 一 种 后 进 先 出 的 线 性 表 C) 栈 与 队 列 都 是 非 线 性 结 构 D) 以 上 三 种 说 法 都 不 对 (3) 一 棵 二 叉 树 共 有 25 个 结 点, 其 中 5 个 是 叶 子 结 点, 则 度 为 1 的 结 点 数 为 A)16 B)10 C)6 D)4 (4) 在 下 列 模 式 中, 能 够 给 出 数 据 库 物 理 存 储 结 构 与 物 理 存 取 方 法 的 是 A) 外 模 式 B) 内 模 式 C) 概 念 模 式 D) 逻 辑 模 式 (5) 在 满 足 实 体 完 整 性 约 束 的 条 件 下 A) 一 个 关 系 中 应 该 有 一 个 或 多 个 候 选 关 键 字 B) 一 个 关 系 中 只 能 有 一 个 候 选 关 键 字 C) 一 个 关 系 中 必 须 有 多 个 候 选 关 键 字 D) 一 个 关 系 中 可 以 没 有 候 选 关 键 字 (6) 有 三 个 关 系 R S 和 T 如 下 : R S T A B C a 1 2 b 2 1 c 3 1 A B C a 1 2 d 2 1 A B C b 2 1 c 3 1 则 由 关 系 R 和 S 得 到 关 系 T 的 操 作 是 A) 自 然 连 接 B) 并 C) 交 D) 差 (7) 软 件 生 命 周 期 中 的 活 动 不 包 括 A) 市 场 调 研 B) 需 求 分 析 C) 软 件 测 试 D) 软 件 维 护 (8) 下 面 不 属 于 需 求 分 析 阶 段 任 务 的 是 A) 确 定 软 件 系 统 的 功 能 需 求 B) 确 定 软 件 系 统 的 性 能 需 求 C) 需 求 规 格 说 明 书 评 审 D) 制 定 软 件 集 成 测 试 计 划 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 1 页 ( 共 12 页 )
(9) 在 黑 盒 测 试 方 法 中, 设 计 测 试 用 例 的 主 要 根 据 是 A) 程 序 内 部 逻 辑 B) 程 序 外 部 功 能 C) 程 序 数 据 结 构 D) 程 序 流 程 图 (10) 在 软 件 设 计 中 不 适 用 的 工 具 是 A) 系 统 结 构 图 B)PAD 图 C) 数 据 流 图 (DFD 图 ) D) 程 序 流 程 图 (11) 针 对 简 单 程 序 设 计, 以 下 叙 述 的 实 施 步 骤 顺 序 正 确 的 是 A) 编 码 确 定 算 法 和 数 据 结 构 调 试 整 理 文 档 B) 确 定 算 法 和 数 据 结 构 编 码 调 试 整 理 文 档 C) 整 理 文 档 确 定 算 法 和 数 据 结 构 编 码 调 试 D) 确 定 算 法 和 数 据 结 构 调 试 编 码 整 理 文 档 (12) 关 于 C 语 言 中 数 的 表 示, 以 下 叙 述 中 正 确 的 是 A) 只 要 在 允 许 范 围 内 整 型 数 和 实 型 数 都 能 精 确 的 表 示 B) 只 有 整 型 数 在 允 许 范 围 内 能 精 确 无 误 的 表 示, 实 型 数 会 有 误 差 C) 只 有 实 型 数 在 允 许 范 围 内 能 精 确 无 误 的 表 示, 整 型 数 会 有 误 差 D) 只 有 用 八 进 制 表 示 的 数 才 不 会 有 误 差 (13) 以 下 关 于 算 法 的 叙 述 中 错 误 的 是 A) 算 法 可 以 用 伪 代 码 流 程 图 等 多 种 形 式 来 描 述 B) 用 流 程 图 描 述 的 算 法 可 以 用 任 何 一 种 计 算 机 高 级 语 言 编 写 成 程 序 代 码 C) 一 个 正 确 的 算 法 必 须 有 输 入 D) 一 个 正 确 的 算 法 必 须 有 输 出 (14) 以 下 叙 述 中 错 误 的 是 A) 一 个 C 程 序 中 可 以 包 含 多 个 不 同 名 的 函 数 B) 一 个 C 程 序 只 能 有 一 个 主 函 数 C)C 程 序 的 主 函 数 必 须 用 main 作 为 函 数 名 D)C 程 序 在 书 写 时, 有 严 格 的 缩 进 要 求, 否 则 不 能 编 译 通 过 (15) 设 有 以 下 语 句 char ch1, ch2; scanf("%c%c", &ch1, &ch2); 若 要 为 变 量 ch1 和 ch2 分 别 输 入 字 符 A 和 B, 正 确 的 输 入 形 式 应 该 是 A)A 和 B 之 间 不 能 有 任 何 间 隔 符 B)A 和 B 之 间 用 空 格 间 隔 C)A 和 B 之 间 可 以 用 回 车 间 隔 D)A 和 B 之 间 用 逗 号 间 隔 (16) 以 下 选 项 中 非 法 的 字 符 常 量 是 A)'\019' B)'\65' C)'\xff' D)'\101' (17) 有 以 下 程 序 # include <stdio.h> { int a=0,b=0,c=0; c=(a-=a-5);(a=b,b+=4); printf("%d,%d,%d\n",a,b,c); A)4,4,5 B)4,4,4 C)0,4,5 D)0,0,0 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 2 页 ( 共 12 页 )
(18) 设 变 量 均 已 正 确 定 义 并 赋 值, 以 下 与 其 他 三 组 输 出 结 果 不 同 的 一 组 语 句 是 A)x++; printf("%d\n",x); B)++x; printf("%d\n",x); C)n=x++; printf("%d\n",n); D)n=++x; printf("%d\n",n); (19) 以 下 选 项 中, 能 表 示 逻 辑 值 假 的 是 A)1 B)0.000001 C)100.0 D)0 (20) 有 以 下 程 序 { int a; scanf("%d",&a); if (a++<9) printf("%d\n",a); else printf("%d\n",a--); 程 序 运 行 时 从 键 盘 输 入 9< 回 车 >, 则 输 出 结 果 是 A)11 B)10 C)9 D)8 (21) 有 以 下 程 序 # include <stdio.h> { int s=0, n; for (n=0;n<3;n++) { switch(s) { case 0: case 1: s+=1; case 2: s+=2;break; case 3: s+=3; default: s+=4; printf("%d, ",s); A)1,2,4 B)1,3,6 C)3,6,10 D)3,10,14 (22) 若 k 是 int 类 型 变 量, 且 有 以 下 for 语 句 for(k=-1;k<0;k++) printf("****\n"); 下 面 关 于 语 句 执 行 情 况 的 叙 述 中 正 确 的 是 A) 循 环 体 执 行 两 次 B) 循 环 体 执 行 一 次 C) 循 环 体 一 次 也 不 执 行 D) 构 成 无 限 循 环 (23) 有 以 下 程 序 # include <stdio.h> { char a,b,c; b='1'; c='a'; for(a=0;a<6;a++) { if (a%2) putchar(b+a); else putchar(c+a); 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 3 页 ( 共 12 页 )
A)ABCDEF B)A2C4E6 C)1B3D5F D)123456 (24) 设 有 如 下 定 义 语 句 int m[]={2,4,6,8,10,*k=m; 以 下 选 项 中, 表 达 式 的 值 为 6 的 是 A)k+2 B)*(k+2) C)*k+2 D)*k+=2 (25)fun 函 数 的 功 能 是 : 通 过 键 盘 输 入 给 x 所 指 的 整 型 数 组 所 有 元 素 赋 值 在 下 划 线 处 应 填 写 的 是 #define N 5 void fun(int x[n]) { int m; for(m=n-1;m>=0;m--) scanf("%d", ); A)x+m B)& x[m+1] C)x+(m++) D)& x[++m] (26) 若 有 函 数 void fun(double a[], int *n) { 以 下 叙 述 中 正 确 的 是 A) 形 参 a 和 n 都 是 指 针 变 量 B) 形 参 a 是 一 个 数 组 名,n 是 指 针 变 量 C) 调 用 fun 函 数 时 将 把 double 型 实 参 数 组 元 素 一 一 对 应 地 传 送 给 形 参 a 数 组 D) 调 用 fun 函 数 时 只 有 数 组 执 行 按 值 传 送, 其 他 实 参 和 形 参 之 间 执 行 按 地 址 传 送 (27) 有 以 下 程 序 { int a,b,k,m,*p1,*p2; k=1, m=8; p1=&k, p2=&m; a=/*p1-m; b=*p1+*p2+6; printf("%d ",a); printf("%d\n",b); 编 译 时 编 译 器 提 示 错 误 信 息, 你 认 为 出 错 的 语 句 是 A)b=*p1+*p2+6; B)a=/*p1-m; C)k=1,m=8; D)p1=&k,p2=&m; (28) 以 下 选 项 中 有 语 法 错 误 的 是 A)char str[3][10];str[1]= "guest"; B)char str[][10]={ "guest"; C)char *str[3];str[1]= "guest"; D)char *str[]={"guest"; (29)avg 函 数 的 功 能 是 求 整 型 数 组 中 的 前 若 干 个 元 素 的 平 均 值, 设 数 组 元 素 个 数 最 多 不 超 过 10, 则 下 列 函 数 说 明 语 句 错 误 的 是 A)int avg(int *a, int n); B)int avg(int a[10],int n); C)int avg(int a[], int n); D)int avg(int a, int n); (30) 有 以 下 程 序 #include <string.h> 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 4 页 ( 共 12 页 )
{ printf("%d\n",strlen("ats\n012\1")); A)3 B)4 C)8 D)9 (31) 有 以 下 程 序 { char a[20],b[20],c[20]; scanf("%s%s",a,b); gets(c); printf("%s%s%s\n",a,b,c); 程 序 运 行 时 从 第 一 列 开 始 输 入 :This is a cat!< 回 车 > 则 输 出 结 果 是 A)Thisisacat! B)Thisis a C)Thisisa cat D)Thisis a cat! (32) 有 以 下 程 序 # include <stdio.h> void fun(char c) { if(c>'x') fun(c-1); printf("%c",c); { fun('z'); A)wxyz B)xyz C)zyxw D)zyx (33) 有 以 下 程 序 void func(int n) { int i; for(i=0;i<=n;i++) printf("*"); printf("#"); { func(3); printf("???? "); func(4); printf("\n"); A)****#????***# B)**#????*****# C)****#????*****# D)***#????****# (34) 有 以 下 程 序 void fun(int *s) { static int j=0; do { s[j]=s[j]+s[j+1]; while(++j<2); { int k,a[10]={1,2,3,4,5; 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 5 页 ( 共 12 页 )
for(k=1;k<3;k++) fun(a); for (k=0 ; k<5;k++) printf("%d",a[k]); printf("\n"); A)34756 B)23445 C)35745 D)12345 (35) 有 以 下 程 序 #define S(x) (x)*x*2 { int k=5, j=2; printf("%d, ", S(k+j)); printf("%d\n",s((k-j) ); A)98,18 B)39,11 C)98,11 D)39,18 (36) 有 以 下 程 序 void exch(int t[]) { t[0]=t[5]; { int x[10]={1,2,3,4,5,6,7,8,9,10, i=0; while(i<=4){ exch(&x[i]);i++; for(i=0;i<5;i++) printf("%d",x[i]); printf("\n"); 程 序 运 行 后 输 出 的 结 果 是 A)6 7 8 9 10 B)1 3 5 7 9 C)1 2 3 4 5 D)2 4 6 8 10 (37) 设 有 以 下 程 序 段 struct MP3 { char name[20]; char color; float price; std, *ptr; ptr=&std; 若 要 引 用 结 构 体 变 量 std 中 的 color 成 员, 写 法 错 误 的 是 A)std.color B)ptr->color C)(*ptr).color D)std->color (38) 有 以 下 程 序 struct stu { int num; char name[10]; int age;; void fun(struct stu *p) { printf("%s\n",p->name); { struct stu x[3]={{01, "Zhang",20,{02, "Wang",19,{03, "Zhao",18; fun(x+2); A)Zhang B)Wang C)Zhao D)19 (39) 有 以 下 程 序 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 6 页 ( 共 12 页 )
{ int a=12,c; c=(a<<2)<<1; printf("%d\n",c); A)96 B)50 C)2 D)3 (40) 以 下 函 数 不 能 用 于 向 文 件 中 写 入 数 据 的 是 A)fwrite B)fputc C)ftell D)fprintf 二 填 空 题 ( 每 空 2 分, 共 30 分 ) 请 将 每 空 的 正 确 答 案 写 在 答 题 卡 1 至 15 序 号 的 横 线 上, 答 在 试 卷 上 不 得 分 (1) 在 长 度 为 n 的 顺 序 存 储 的 线 性 表 中 删 除 一 个 元 素, 最 坏 情 况 下 需 要 移 动 表 中 的 元 素 个 数 为 1 (2) 设 循 环 队 列 的 存 储 空 间 为 Q(1:30), 初 始 状 态 为 front=rear=30 现 经 过 一 系 列 入 队 与 退 队 运 算 后,front=16, rear=15, 则 循 环 队 列 中 有 2 个 元 素 (3) 数 据 库 管 理 系 统 提 供 的 数 据 语 言 中, 负 责 数 据 的 增 删 改 和 查 询 的 是 3 (4) 在 将 E-R 图 转 换 到 关 系 模 式 时, 实 体 和 联 系 都 可 以 表 示 成 4 (5) 常 见 的 软 件 工 程 方 法 有 结 构 化 方 法 和 面 向 对 象 方 法, 类 继 承 以 及 多 态 性 等 概 念 属 于 5 (6) 设 变 量 a 和 b 已 定 义 为 int 类 型, 若 要 通 过 scanf("a=%d,b=%d",&a, &b); 语 句 分 别 给 a 和 b 输 入 1 和 2, 则 正 确 的 数 据 输 入 内 容 是 6 (7) 以 下 程 序 的 输 出 结 果 是 7 #intclude <stdio.h> { int a=37; a+=a%=9; printf("%d\n",a); (8) 设 a b c 都 是 整 型 变 量, 如 果 a 的 值 为 1,b 的 值 为 2, 则 执 行 c=a++ b++; 语 句 后 变 量 b 的 值 是 8 (9) 有 以 下 程 序 段 s=1.0; for(k=1;k<=n;k++) s=s+1.0/(k*(k+1)); printf("%f\n",s); 请 填 空, 使 以 下 程 序 段 的 功 能 与 上 面 的 程 序 段 完 全 相 同 s=1.0 ;k=1; while( 9 ) { s=s+1.0/(k*(k+1)); k=k+1; printf("%f\n",s); (10) 以 下 程 序 的 输 出 结 果 是 10 { char a, b; for(a=0;a<20;a+=7) { b=a%10;putchar(b+'0'); (11) 以 下 程 序 的 输 出 结 果 是 11 #include <stido.h> { char *ch[4]={ "red", "green","blue"; int i=0; 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 7 页 ( 共 12 页 )
while(ch[i]) { putchar(ch[i][0]); i++; (12) 有 以 下 程 序 { int arr[]={1,3,5,7,2,4,6,8,i, start; scanf("%d",&start); for(i=0;i<3;i++) printf("%d",arr[(start+i)%8]); 若 在 程 序 运 行 时 输 入 整 数 10< 回 车 >, 则 输 出 结 果 为 12 (13) 以 下 程 序 的 功 能 是 输 出 a 数 组 中 所 有 字 符 串, 请 填 空 { char *a[]={"abc", "DEFGH", "IJ", "KLMNOP"; int i=0; for(;i<4;i++) printf("%s\n", 13 ); (14) 以 下 程 序 的 输 出 结 果 是 14 #inculde <stdio.h> #inculde <stdib.h> #inculde <string.h> { char *p, *q, *r; p=q=r=(char *)malloc(sizeof(char)*20); strcpy(p, "attaboy,welcome! "); printf("%c%c%c\n",p[11],q[3],r[4]); free(p); (15) 设 文 件 test.txt 中 原 已 写 入 字 符 串 Begin, 执 行 以 下 程 序 后, 文 件 中 的 内 容 为 15 { FILE *fp; fp=fopen("test.txt", "w+"); fputs("test",fp); fclose(fp); 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 8 页 ( 共 12 页 )
2012 年 3 月 全 国 计 算 机 等 级 考 试 二 级 C 语 言 程 序 设 计 答 案 及 详 解 一 选 择 题 (1)B) 解 析 本 题 主 要 考 查 循 环 队 列 的 概 念, 循 环 队 列 作 为 队 列 的 一 种 也 应 该 是 线 性 结 构 队 列 是 一 种 逻 辑 结 构, 而 循 环 队 列 是 一 种 顺 序 存 储 结 构 的 队 列 (2)D) 解 析 栈 是 先 进 后 出 的 线 性 表, 队 列 是 先 进 先 出 的 线 性 表, 二 者 均 为 线 性 结 构 (3)A) 解 析 根 据 二 叉 树 的 性 质, 在 任 意 二 叉 树 中, 度 为 0 的 结 点 ( 即 叶 子 结 点 ) 总 是 比 度 为 2 的 结 点 多 一 个, 故 此 度 为 1 的 结 点 个 数 = 总 结 点 数 - 叶 子 节 点 数 - 度 为 2 的 节 点 数 (4)B) 解 析 数 据 库 有 三 层 模 式 结 构, 逻 辑 模 式 是 数 据 的 全 局 逻 辑 结 构 的 描 述, 外 模 式 也 称 为 子 模 式, 是 局 部 数 据 的 逻 辑 结 构 描 述, 而 内 模 式 也 称 为 存 储 模 式, 是 数 据 库 物 理 存 储 结 构 和 存 取 方 法 的 描 述 (5)A) 解 析 在 关 系 数 据 库 中, 实 体 完 整 性 的 概 念 是 主 属 性 不 能 为 空 在 满 足 实 体 完 整 性 的 前 提 下, 必 须 在 关 系 中 存 在 主 属 性, 也 就 是 在 关 系 中 应 该 有 候 选 关 键 字 一 个 关 系 中 可 以 有 一 个 或 者 多 个 候 选 关 键 字 (6)D) 解 析 由 关 系 T 中 的 数 据 可 以 看 出, 其 数 据 由 属 于 关 系 R 但 是 不 属 于 关 系 S 的 数 据 组 成 所 以 关 系 T 是 由 关 系 R 和 S 通 过 差 运 算 得 到 的 (7)A) 解 析 软 件 的 生 命 周 期 描 述 了 软 件 从 产 生 到 最 终 消 亡 的 全 过 程, 生 命 周 期 中 的 活 动 包 括 需 求 分 析 软 件 设 计 ( 分 为 概 要 设 计 和 详 细 设 计 ) 软 件 实 现 软 件 测 试 和 软 件 维 护, 不 包 括 市 场 调 研 (8)D) 解 析 在 软 件 开 发 的 过 程 中, 应 该 尽 早 的 制 定 测 试 计 划, 其 中 在 需 求 分 析 阶 段 制 定 系 统 测 试 计 划, 在 概 要 设 计 阶 段 制 定 集 成 测 试 计 划, 在 详 细 设 计 阶 段 制 定 单 元 测 试 计 划 (9)B) 解 析 黑 盒 测 试 法 指 的 是 根 据 程 序 的 外 部 功 能, 把 程 序 本 身 看 成 一 个 黑 盒 子, 设 计 测 试 用 例 来 验 证 程 序 外 部 功 能 的 正 确 性 (10)C) 解 析 在 软 件 开 发 的 各 个 阶 段 经 常 会 使 用 到 一 些 图 形 工 具, 如 在 需 求 分 析 阶 段 使 用 数 据 流 图, 在 概 要 设 计 阶 段 使 用 系 统 结 构 图, 在 详 细 设 计 阶 段 使 用 程 序 流 程 图 N-S 图 或 者 PAD 图 等 (11)B) 解 析 根 据 软 件 工 程 方 法 将 软 件 生 存 周 期 分 为 软 件 定 义 软 件 开 发 运 行 维 护 三 个 时 期 针 对 简 单 的 程 序, 可 以 直 接 进 入 软 件 开 发 时 期, 即 对 软 件 进 行 结 构 设 计, 定 义 接 口, 定 义 数 据 结 构 ; 接 着 对 每 个 模 块 进 行 设 计 编 码 测 试 ; 最 后 检 查 软 件 文 档 和 代 码 是 否 齐 全, 整 理 维 护 职 责, 整 理 文 档 等 (12)B) 解 析 在 C 语 言 中, 整 型 数 值 是 以 补 码 表 示 的 正 整 数 的 补 码 与 原 码 相 同, 负 数 的 补 码 是 将 该 数 的 绝 对 值 的 二 进 制 形 式 按 位 取 反 再 加 1 这 样, 在 整 型 数 的 允 许 范 围 内 能 够 精 确 的 表 示 整 数 与 整 型 数 据 的 存 储 方 式 不 同, 浮 点 型 数 据 是 按 照 指 数 形 式 存 放 的 系 统 把 一 个 浮 点 型 数 据 分 成 小 数 部 分 和 指 数 部 分, 分 别 存 放 由 于 浮 点 型 数 据 是 由 有 限 的 存 储 单 元 组 成 的, 因 此 能 提 供 的 有 效 数 字 总 是 有 限 的, 在 有 效 数 字 以 外 的 数 字 将 被 舍 去, 由 此 可 能 会 产 生 一 些 误 差 (13)C) 解 析 算 法 即 计 算 机 解 决 问 题 的 方 法 和 步 骤 可 以 使 用 不 同 的 方 法 表 示 : 自 然 语 言 传 统 流 程 图 结 构 化 流 程 图 伪 代 码 PAD 图 等 每 一 种 方 法 表 示 的 算 法 都 可 以 使 用 计 算 机 语 言 来 描 述, 如 使 用 流 程 图 描 述 的 算 法 可 以 使 用 C 语 言 java 语 言 等 各 种 语 言 编 写 成 程 序 代 码 一 个 算 法 有 其 特 性 : 有 穷 性 确 定 性 有 零 个 或 多 个 输 入 有 一 个 或 多 个 输 出 有 效 性 (14)D) 解 析 本 题 考 查 的 是 C 语 言 程 序 的 组 成 C 语 言 程 序 是 由 一 个 或 多 个 函 数 组 成 的, 其 中 有 且 只 有 一 个 主 函 数 函 数 故 选 项 A) B) C) 正 确 遵 守 严 格 的 编 程 规 范, 注 意 缩 进 的 C 语 言 程 序 具 有 更 好 的 可 维 护 性, 但 如 果 不 遵 守 编 程 规 范, 也 不 会 影 响 C 语 言 程 序 的 编 译 (15)A) 解 析 本 题 考 查 的 是 字 符 型 变 量 的 输 入, 两 个 字 符 型 变 量 的 连 续 输 入 不 应 该 用 其 他 字 符 间 隔 选 项 B) 给 字 符 变 量 ch1 和 ch2 分 别 赋 值 A 和 空 格 ; 选 项 C) 给 字 符 变 量 ch1 和 ch2 分 别 赋 值 A 和 回 车 ; 选 项 D) 给 字 符 变 量 ch1 和 ch2 分 别 赋 值 A 和 逗 号 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 9 页 ( 共 12 页 )
(16)A) 解 析 本 题 考 查 的 是 转 义 字 符 '\ddd' 指 1 到 3 位 八 进 制 数 所 代 表 的 字 符,'\xhh' 指 1 到 2 位 十 六 进 制 数 所 代 表 的 字 符 选 项 A) 中 9 不 是 正 确 的 八 进 制 数 字 (17)C) 解 析 本 题 考 查 的 是 运 算 符 及 其 优 先 级 括 号 的 优 先 级 最 高, 先 计 算 (a-=a-5), 赋 值 运 算 符 的 优 先 级 低 于 算 术 运 算 符 的 优 先 级, 故 本 算 式 相 当 于 a=a-(a-5),a 为 5; 因 此,c 为 5 (a=b,b+=4); 是 一 个 逗 号 运 算, 先 计 算 第 一 个 表 达 式 的 值 a 为 0, 再 计 算 第 二 个 表 达 式 的 值 b=b+4,b 为 4 (18)C) 解 析 x++ 表 示 先 执 行 程 序, 再 令 x 的 值 加 1; 而 ++x 表 示 令 x 的 值 加 1, 再 执 行 程 序 假 设 x 的 初 值 为 9 选 项 A) 中 x 的 计 算 结 果 为 10; 选 项 B) 中 x 的 计 算 结 果 为 10; 选 项 D) 中,n=++x, 是 执 行 ++x, 后 给 变 量 n 赋 值,n 的 计 算 结 果 为 10; 选 项 C) 中,n=x++, 是 先 引 用 x 的 值 给 变 量 n 赋 值, 然 后 再 执 行 x++ 运 算, 因 此,n 的 计 算 结 果 为 9,x 的 计 算 结 果 为 10, 程 序 输 出 结 果 与 其 他 选 项 不 同 (19)D) 解 析 在 C 语 言 中, 使 用 0 表 示 逻 辑 值 假, 使 用 非 零 数 字 表 示 逻 辑 值 为 真 (20)B) 解 析 本 题 考 查 的 是 if else 选 择 结 构 和 变 量 自 加 自 减 运 算 从 键 盘 输 入 9 回 车 后,a 的 值 为 9,if 语 句 中, 先 判 断 a<9, 再 执 行 a 自 加 1(a 为 10) 运 算, 此 时 if 语 句 值 为 假, 执 行 else 语 句 ; 在 else 语 句 中, 同 样 先 执 行 输 入 a 的 值, 再 执 行 a 自 减 运 算, 故 输 出 结 果 为 10 (21)D) 解 析 本 题 考 查 的 是 for 循 环 和 switch 语 句 当 n=0 时, 首 先 进 入 第 一 个 switch(s) 判 断, 进 入 case 0, 顺 序 执 行 case 1,s=1, 顺 序 执 行 case 2,s=3, 遇 到 break, 退 出 switch; 当 n=1 时, 进 入 switch(s),case 3,s=6, 顺 序 执 行 default,s=10; 当 n=2 时,switch(s) 执 行 default 语 句,s=14; 当 n=3 时,for 循 环 结 束 (22)B) 解 析 本 题 考 查 for 循 环 当 k=-1 时, 符 合 循 环 条 件 k<0, 执 行 循 环 体 ; 当 k=0 时, 不 符 合 循 环 条 件, 循 环 结 束 (23)B) 解 析 本 题 考 查 for 循 环 当 a=0 时,a 的 ASCII 码 为 48,a%2 的 计 算 结 果 为 0, 执 行 putchar(c+a); 输 出 结 果 为 'A'; 当 a=1 时, 执 行 putchar(b+a); 输 出 结 果 为 2; 当 a=2 时, 执 行 putchar(c+a); 输 出 结 果 为 'C'; 依 次 类 推, 选 项 B) 符 合 要 求 (24)B) 解 析 本 题 考 查 指 向 数 组 的 指 针 指 针 k 指 向 数 组 的 第 0 个 元 素,k+2 指 向 数 组 的 第 2 个 元 素, 符 号 * 取 出 指 针 所 指 向 单 元 中 的 值 (25)A) 解 析 数 组 的 元 素 个 数 为 N, 数 组 元 素 的 下 标 为 0 到 N-1 程 序 中 从 数 组 x 的 最 后 一 个 元 素 x[n-1] 开 始 赋 值, 直 到 x[0] 结 束 所 以 下 划 线 处 应 该 填 写 &x[m], 选 项 中 都 使 用 指 针 的 表 示 形 式, 只 有 选 项 A) 的 写 法 符 合 &x[m] 的 要 求 (26)B) 解 析 形 参 a 是 一 个 double 类 型 的 数 组, 形 参 n 是 一 个 指 向 整 型 变 量 的 指 针 变 量, 故 选 项 B) 正 确 选 项 A) 中, 形 参 a 作 为 数 组 名, 它 保 存 数 组 的 首 地 址, 可 以 视 为 一 个 指 针, 但 是 指 针 常 量 不 是 指 针 变 量, 所 以 错 误 C 语 言 中 将 实 参 数 组 的 首 元 素 的 地 址 传 递 给 形 参 数 组, 并 不 对 形 参 数 组 大 小 做 检 查, 所 以 选 项 C) 中 的 说 法 是 错 误 的 无 论 是 数 组 名 做 形 参 还 是 指 针 变 量 做 形 参, 实 参 和 行 参 之 间 都 是 按 照 地 址 传 送 的, 所 以 选 项 D) 是 错 误 的 (27)B) 解 析 a=/*p1-m; 语 句 中 /* 不 是 一 个 合 法 的 运 算 符, 被 C 语 言 编 译 器 误 认 为 是 注 释 符 号 /* */ 的 一 部 分, 而 出 现 语 法 错 误 (28)A) 解 析 二 维 数 组 的 初 始 化 有 4 种 方 法, 可 以 按 行 对 数 组 初 始 化 ; 也 可 以 将 所 有 元 素 写 在 一 个 大 括 号 中, 按 照 数 组 排 列 的 顺 序 对 各 元 素 赋 初 值 ; 还 可 以 对 部 分 元 素 赋 初 值 ; 第 四 种 方 法 是 省 略 第 一 维 长 度, 但 是 第 二 维 的 长 度 不 能 省 略, 这 时 可 以 分 行 赋 初 值, 如 选 项 B) 就 是 省 略 第 一 维 长 度, 同 时 只 对 部 分 元 素 赋 初 值 ; 而 选 项 A) 是 不 允 许 的 赋 值 方 式 如 果 使 用 指 针 数 组, 可 以 方 便 的 处 理 若 干 个 字 符 串, 如 选 项 C) 中 定 义 指 针 数 组 str, 它 有 三 个 元 素, 每 个 元 素 是 一 个 指 向 字 符 串 的 指 针, 可 以 给 str[1] 赋 值 为 一 个 guest 字 符 串 选 项 D) 省 略 了 指 针 数 组 str 的 一 维 数 组 的 长 度 是 允 许 的, 它 根 据 赋 值 自 动 判 断 指 针 数 组 的 长 度 为 1 (29)D) 解 析 根 据 题 意, 函 数 的 形 参 是 整 型 数 组 和 实 参 数 组 的 元 素 个 数, 选 项 A) 的 形 参 是 指 向 一 维 数 组 的 指 针 和 整 型 变 量, 符 合 要 求 ; 选 项 B) 的 形 参 是 整 型 数 组 和 整 型 变 量, 符 合 要 求 ; 选 项 C) 的 形 参 整 型 数 组 省 略 了 长 度, 也 是 允 许 的, 实 际 上 C 语 言 编 译 器 在 参 数 传 递 时 并 不 会 检 查 行 参 数 组 的 长 度, 只 是 将 实 参 数 组 的 首 元 素 地 址 传 递 给 形 参 数 组 名 ; 选 项 D) 的 形 参 没 有 数 组, 是 错 误 的 (30)C) 解 析 本 题 考 查 的 是 strlen() 函 数 和 字 符 常 量 strlen() 函 数 的 功 能 是 统 计 参 数 字 符 串 中 的 字 符 个 数, 不 包 括 字 符 串 结 束 字 符 '\0' 该 题 中 共 有 8 个 字 符, 其 中 '\n' 和 '\1' 分 别 是 两 个 转 义 字 符 : 换 行 符 和 八 进 制 数 1 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 10 页 ( 共 12 页 )
(31)D) 解 析 scanf("%s%s",a,b); 语 句 连 续 输 入 两 个 字 符 串, 用 空 格 隔 开, 所 以 字 符 数 组 a 为 This, 数 组 b 为 is gets() 函 数 接 收 字 符 串 的 输 入, 以 回 车 表 示 输 入 的 结 束, 所 以 字 符 数 组 c 为 [ 空 格 ]a[ 空 格 ]cat! (32)B) 解 析 本 题 考 查 的 是 函 数 的 递 归 调 用 函 数 的 调 用 过 程 如 图 1 所 示 main fun('z') 输 出 fun('z') fun c='z' fun('y') y 输 出 fun('y') y fun c='y' fun('x') 输 出 fun('x') 图 1 从 图 1 可 以 看 到,fun 函 数 共 被 调 用 3 次, 即 fun('z') fun('y') fun('x') main 函 数 调 用 fun('z'),fun 函 数 调 用 fun('y') 和 fun('x'), 每 次 调 用 又 进 一 步 进 行 递 归 调 用 fun 函 数, 到 fun('x') 时 输 出 x, 然 后 递 推 输 出 y 的 值, 输 出 z 的 值 (33)C) 解 析 本 题 考 查 函 数 调 用, 其 中 重 点 是 for 语 句 的 循 环 次 数 for 语 句 中, 循 环 变 量 i 从 0 到 小 于 等 于 n, 共 循 环 n+1 次, 所 以 func(3) 输 出 四 个 *,func(4) 输 出 5 个 * (34)C) 解 析 本 题 考 查 的 是 静 态 局 部 变 量 (static), 编 译 系 统 为 其 分 配 固 定 的 存 储 空 间, 它 的 值 在 函 数 调 用 结 束 后 不 消 失, 在 下 一 次 函 数 调 研 时 仍 然 保 留 上 一 次 函 数 调 用 结 束 时 的 值 第 一 个 for 循 环 语 句 中,fun 函 数 执 行 2 次, 第 一 次 fun(a) 执 行 过 程 : 当 j=0 时,do 循 环 后 数 组 a 的 元 素 值 变 为 {3,2,3,4,5; 当 j=1 时,do 循 环 后 数 组 a 的 元 素 值 变 为 {3,5,3,4,5; 当 j=2 时, 退 出 do while 循 环 第 二 次 执 行 fun(a) 函 数,j 的 值 为 2, 执 行 do 循 环, 数 组 a 的 元 素 值 变 为 {3,5,7,4,5; 然 后 执 行 ++j, 不 符 合 do while 循 环 语 句 的 循 环 条 件, 循 环 终 止, 此 时 输 入 数 组 a 的 值 (35)D) 解 析 本 题 考 查 带 参 数 的 宏 定 义, 按 照 #define 命 令 行 中 指 定 的 字 符 串 从 左 到 右 将 实 参 代 替 形 参, 如 果 宏 定 义 中 的 字 符 串 不 是 参 数 字 符, 则 保 留 S(k+j) 宏 展 开 为 : (k+j)*k+j*2=7*5+2*2=39;s((k-j))=((k-j))*(k-j)*2=3*3*2=18 (36)A) 解 析 本 题 考 查 数 组 名 作 函 数 参 数, 传 递 数 组 的 首 地 址 当 i=0 时,exch(&x[0]) 执 行 x[0]=x[5]; 当 i=1 时,exch(&x[1]) 执 行 x[1]=x[6]; 当 i=2 时,exch(&x[2]) 执 行 x[2]=x[7]; 当 i=3 时, 执 行 x[3]=x[8]; 当 i=4, 执 行 x[4]=x[9]; 执 行 完 后 使 用 for 循 环 语 句 将 x 数 组 的 前 5 个 元 素 值 输 出 (37)D) 解 析 结 构 体 变 量 的 成 员 有 3 种 引 用 形 式, 分 别 为 :1 结 构 体 变 量. 成 员 名 ;2(* 结 构 体 指 针 变 量 ). 成 员 名 ;3 结 构 体 指 针 变 量 -> 成 员 名 (38)C) 解 析 本 题 考 查 结 构 体 变 量 成 员 的 引 用,x+2 指 向 结 构 体 数 组 x[2], 在 fun 函 数 中 输 出 其 name 成 员, 即 Zhao (39)A) 解 析 本 题 考 查 位 元 算 中 的 左 移 运 算 <<, 将 一 个 数 的 各 二 进 制 位 全 部 左 移 若 干 位 A 的 二 进 制 数 为 00001100, 小 括 号 的 优 先 级 最 高,a<<2 为 二 进 制 数 00110000, 然 后 在 左 移 1 位, 为 二 进 制 数 01100000, 其 十 进 制 数 为 96 (40)C) 解 析 fwrite 函 数 的 功 能 是 将 一 组 数 据 写 到 磁 盘 文 件 上 ;fputc 函 数 的 功 能 是 把 一 个 字 符 写 到 磁 盘 文 件 上 ;fprintf 函 数 的 功 能 是 格 式 化 向 磁 盘 文 件 写 数 据 ;ftell 函 数 的 作 用 是 得 到 流 式 文 件 中 的 当 前 位 置 二 填 空 题 (1) 1 n-1 解 析 在 长 度 为 n 的 顺 序 线 性 表 中 删 除 一 个 元 素, 后 面 的 元 素 要 依 次 前 移, 最 坏 情 况 下 也 就 是 删 除 第 一 个 元 素, 后 面 的 n-1 个 元 素 都 需 要 移 动 (2) 2 29 解 析 循 环 队 列 的 元 素 个 数 计 算 公 式 为 (rear-front+30) Mod 30 (3) 3 数 据 操 纵 语 言 或 DML 解 析 数 据 库 管 理 系 统 是 数 据 库 的 结 构, 它 需 要 提 供 数 据 定 义 语 言 DDL 用 于 实 现 数 据 的 定 义 ; 数 据 操 纵 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 11 页 ( 共 12 页 )
语 言 DML 用 于 实 现 对 数 据 的 增 加 删 除 修 改 和 查 询 ; 数 据 控 制 语 言 DCL 用 于 实 现 访 问 权 限 的 控 制 等 (4) 4 关 系 解 析 将 E-R 图 转 换 为 关 系 模 式 时, 实 体 和 联 系 都 可 以 表 示 为 关 系 (5) 5 面 向 对 象 方 法 解 析 数 据 流 图 系 统 结 构 图 等 概 念 属 于 结 构 化 方 法, 而 类 对 象 继 承 封 装 多 态 等 概 念 属 于 面 向 对 象 方 法 (6) 6 a=1,b=2 解 析 本 题 考 查 scanf 函 数 格 式 化 输 入 方 法, 如 果 在 格 式 控 制 字 符 串 中 除 了 格 式 说 明 以 外 还 有 其 他 字 符, 则 在 输 入 数 据 时 在 对 应 位 置 应 输 入 与 这 些 字 符 相 同 的 字 符, 所 以 本 题 应 该 写 a=1,b=2 (7) 7 2 解 析 本 题 考 查 运 算 符 的 优 先 级, 其 中 % 的 优 先 级 最 高, = 的 优 先 级 最 低, 根 据 赋 值 运 算 的 右 结 合 性, 运 算 表 达 式 可 以 整 理 为 :a=a+(a=a%9);, 计 算 结 果 a 为 2 (8) 8 2 解 析 本 题 考 查 运 算 符 的 优 先 级, 其 中 赋 值 运 算 符 的 优 先 级 低 于 逻 辑 或 ( ) 的 优 先 级, 先 执 行 a++ b++, 逻 辑 或 ( ) 运 算 先 判 断 第 一 个 表 达 式 a++ 为 1( 即 逻 辑 真 ), 则 不 再 执 行 第 二 个 表 达 式 b++, 所 以 b 的 值 没 有 改 变, 仍 为 2 (9) 9 k<=n 解 析 该 题 考 核 for 循 环 和 while 循 环 的 循 环 条 件,for 的 三 个 条 件 表 达 式 分 别 为 循 环 变 量 k 赋 初 值, 循 环 条 件 中 循 环 变 量 自 增 1; 对 应 到 while 循 环 中, 循 环 变 量 k 赋 初 值 在 while 循 环 之 前, 循 环 条 件 k<=n 应 该 写 在 while 之 后 的 括 号 中, 在 while 循 环 体 中 实 现 循 环 变 量 k 自 增 1 (10) 11 3 5 解 析 本 题 考 查 for 循 环 语 句 和 字 符 变 量, 当 a=0 时, 字 符 变 量 参 与 运 算, 先 转 换 为 其 ASCII 整 型 数 据, 然 后 再 与 整 数 进 行 运 算,b=a%10=48, 即 字 符 0, 所 以 输 出 字 符 0 ; 依 次 类 推, 当 a=7 时, 输 出 字 符 7 ; 当 a=14 时, 输 出 字 符 4 ; 当 a=21 时, 循 环 终 止 (11) 11 rgb 解 析 本 题 考 查 指 向 数 组 的 指 针,ch 是 一 个 指 针 数 组, 每 个 元 素 都 是 一 个 指 向 字 符 串 的 指 针, 其 中 ch[0] 指 向 字 符 串 red,ch[1] 指 向 字 符 串 green,ch[2] 指 向 字 符 串 blue ; 在 while 循 环 中, 输 出 每 个 元 素 中 字 符 串 的 第 0 个 元 素, 所 以 运 算 结 果 为 rgb (12) 12 572 解 析 此 题 考 查 的 是 一 维 数 组 元 素 的 引 用,start=10, 当 i=0 时,arr[(10+0)%8]=arr[2]=5; 当 i=1 时, arr[(10+1)%8]=arr[3]=7; 当 i=2 时,arr[(10+2)%8]=arr[4]=2; 当 i=3 时, 循 环 终 止 (13) 13 a[i] 或 者 a+i 解 析 本 题 考 查 的 是 指 针 数 组, 指 针 数 组 的 每 一 个 元 素 都 是 一 个 指 向 字 符 串 的 指 针, 要 输 出 所 有 的 字 符 串, 只 需 要 找 到 指 向 字 符 串 的 指 针 即 可, 即 为 a[i] 或 者 a+i (14) 14 cab 解 析 本 题 考 查 指 向 字 符 串 的 指 针,p q r 三 个 指 向 字 符 串 的 指 针, 通 过 malloc 分 配 空 间 函 数 指 向 同 一 个 20 个 长 度 的 字 符 串, 通 过 strcpy 函 数 为 p 字 符 串 赋 值, 则 q 和 r 也 指 向 该 字 符 串, 所 以 p[11] q[3] r[4] 分 别 为 c a b (15) 15 test 解 析 本 题 考 查 的 是 C 语 言 中 的 文 件 操 作, 其 中 文 件 使 用 方 式 w+ ( 读 写 ) 指 的 是 为 读 写 建 立 一 个 新 的 文 本 文 件, 所 以 在 本 题 中, 新 建 立 的 test 文 本 文 件 会 覆 盖 原 先 的 test 文 件 成 为 一 个 新 文 件, 并 写 入 test 2012 年 3 月 笔 试 真 卷 及 答 案 详 解 第 12 页 ( 共 12 页 )