机 密 启 用 前 2008 年 9 月 全 国 计 算 机 等 级 考 试 二 级 笔 试 试 卷 C 语 言 程 序 设 计 24 注 意 事 项 一 考 生 应 严 格 遵 守 考 场 规 则, 得 到 监 考 人 员 指 令 后 方 可 作 答 二 考 生 拿 到 试 卷 后 应 首 先 将 自 己 的 姓 名 准 考 证 号 等 内 容 涂 写 在 答 题 卡 的 相 应 位 置 上 三 选 择 题 答 案 必 须 用 铅 笔 填 涂 在 答 题 卡 的 相 应 位 置 上, 填 空 题 的 答 案 必 须 用 蓝 黑 色 钢 笔 或 圆 珠 笔 写 在 答 题 卡 的 相 应 位 置 上, 答 案 写 在 试 卷 上 无 效 四 注 意 字 迹 清 楚, 保 持 卷 面 整 洁 五 考 试 结 束 将 试 卷 和 答 题 卡 放 在 桌 上, 不 得 带 走 待 监 考 人 员 收 毕 清 点 后, 方 可 离 场 * * * 版 权 所 有, 任 何 单 位 或 个 人 不 得 保 留 复 制 和 出 版, 违 者 必 究 * * * 教 育 部 考 试 中 心 二 00 八 年 七 月 制
2008 年 9 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 公 共 基 础 知 识 和 C 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ((1)~(10) (21)~(40) 每 题 2 分,(11)~(20) 每 题 1 分,70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的, 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上, 答 在 试 卷 上 不 得 分 (1) 一 个 栈 的 初 始 状 态 为 空 现 将 元 素 1 2 3 4 5 A B C D E 依 次 入 栈, 然 后 再 依 次 出 栈, 则 元 素 出 栈 的 顺 序 是 ( ) A)12345ABCDE B)EDCBA54321 C)ABCDE12345 D)54321EDCBA (2) 下 列 叙 述 中 正 确 的 是 ( ) A) 循 环 队 列 有 队 头 和 队 尾 两 个 指 针, 因 此, 循 环 队 列 是 非 线 性 结 构 B) 在 循 环 队 列 中, 只 需 要 队 头 指 针 就 能 反 映 队 列 中 元 素 的 动 态 变 化 情 况 C) 在 循 环 队 列 中, 只 需 要 队 尾 指 针 就 能 反 映 队 列 中 元 素 的 动 态 变 化 情 况 D) 循 环 队 列 中 元 素 的 个 数 是 由 队 头 指 针 和 队 尾 指 针 共 同 决 定 (3) 在 长 度 为 n 的 有 序 线 性 表 中 进 行 二 分 查 找, 最 坏 情 况 下 需 要 比 较 的 次 数 是 ( ) A)O(n) B)O(n 2 ) C)O(log 2 n) D)O(nlog 2 n) (4) 下 列 叙 述 中 正 确 的 是 ( ) A) 顺 序 存 储 结 构 的 存 储 一 定 是 连 续 的, 链 式 存 储 结 构 的 存 储 空 间 不 一 定 是 连 续 的 B) 顺 序 存 储 结 构 只 针 对 线 性 结 构, 链 式 存 储 结 构 只 针 对 非 线 性 结 构 C) 顺 序 存 储 结 构 能 存 储 有 序 表, 链 式 存 储 结 构 不 能 存 储 有 序 表 D) 链 式 存 储 结 构 比 顺 序 存 储 结 构 节 省 存 储 空 间 (5) 数 据 流 图 中 带 有 箭 头 的 线 段 表 示 的 是 ( ) A) 控 制 流 B) 事 件 驱 动 C) 模 块 调 用 D) 数 据 流 (6) 在 软 件 开 发 中, 需 求 分 析 阶 段 可 以 使 用 的 工 具 是 ( ) A)N-S 图 B)DFD 图 C)PAD 图 D) 程 序 流 程 图 (7) 在 面 向 对 象 方 法 中, 不 属 于 对 象 基 本 特 点 的 是 ( ) A) 一 致 性 B) 分 类 性 C) 多 态 性 D) 标 识 唯 一 性 (8) 一 间 宿 舍 可 住 多 个 学 生, 则 实 体 宿 舍 和 学 生 之 间 的 联 系 是 ( ) A) 一 对 一 B) 一 对 多 C) 多 对 一 D) 多 对 多 (9) 在 数 据 管 理 技 术 发 展 的 三 个 阶 段 中, 数 据 共 享 最 好 的 是 ( ) A) 人 工 管 理 阶 段 B) 文 件 系 统 阶 段 C) 数 据 库 系 统 阶 段 D) 三 个 阶 段 相 同 (10) 有 三 个 关 系 R S 和 T 如 下 : R S T A B B C A B C m 1 1 3 m 1 3 n 2 3 5 由 关 系 R 和 S 通 过 运 算 得 到 关 系 T, 则 所 使 用 的 运 算 为 ( ) A) 笛 卡 尔 积 B) 交 C) 并 D) 自 然 连 接 (11) 以 下 叙 述 中 正 确 的 是 ( ) A)C 程 序 的 基 本 组 成 单 位 是 语 句 B)C 程 序 中 的 每 一 行 只 能 写 一 条 语 句 二 级 C 语 言 程 序 设 计 试 卷 第 1 页 ( 共 9 页 )
C) 简 单 C 语 句 必 须 以 分 号 结 束 D)C 语 句 必 须 在 一 行 内 写 完 (12) 计 算 机 能 直 接 执 行 的 程 序 是 ( ) A) 源 程 序 B) 目 标 程 序 C) 汇 编 程 序 D) 可 执 行 程 序 (13) 以 下 选 项 中 不 能 作 为 C 语 言 合 法 常 量 的 是 ( ) A)'cd' B)0.1e+6 C)"\a" D)'\011' (14) 以 下 选 项 中 正 确 的 定 义 语 句 是 ( ) A)double a; b; B)double a=b=7; C)double a=7, b=7; D)double, a, b; 2ab (15) 以 下 不 能 正 确 表 示 代 数 式 的 C 语 言 表 达 式 是 ( cd ) A)2*a*b/c/d B)a*b/c/d*2 C)a/c/d*b*2 D)2*a*b/c*d (16)C 源 程 序 中 不 能 表 示 的 数 制 是 ( ) A) 二 进 制 B) 八 进 制 C) 十 进 制 D) 十 六 进 制 (17) 若 有 表 达 式 (w)?(--x):(++y), 则 其 中 与 w 等 价 的 表 达 式 是 ( ) A)w==l B)w==0 C)w!=l D)w!=0 (18) 执 行 以 下 程 序 段 后,w 的 值 为 ( ) int w='a', x=14, y=15; w=((x y)&&(w<'a')); A)-1 B)NULL C)l D)0 (19) 若 变 量 已 正 确 定 义 为 int 型, 要 通 过 语 句 scanf("%d, %d, %d", &a, &b, &c); 给 a 赋 值 1 给 b 赋 值 2 给 c 赋 值 3, 以 下 输 入 形 式 中 错 误 的 是 ( ò 代 表 一 个 空 格 符 )( ) A) ò ò ò1,2,3< 回 车 > B)1 ò 2 ò 3< 回 车 > C)1, ò ò ò2, ò ò ò3< 回 车 > D)1,2,3< 回 车 > (20) 有 以 下 程 序 段 int a, b, c; a=10; b=50; c=30; if (a>b) a=b, b=c; c=a; printf("a=%d b=%d c=%d\n, a, b, c); 程 序 的 输 出 结 果 是 ( ) A)a=10 b=50 c=10 B)a=10 b=50 c=30 C)a=10 b=30 c=10 D)a=50 b=30 c=50 (21) 若 有 定 义 语 句 :int m[]={5,4,3,2,1,i=4;, 则 下 面 对 m 数 组 元 素 的 引 用 中 错 误 的 是 ( ) A)m[--i] B)m[2*2] C)m[m[0]] D)m[m[i]] (22) 下 面 的 函 数 调 用 语 句 中 func 函 数 的 实 参 个 数 是 ( ) func (f2(v1, v2), (v3, v4, v5), (v6, max(v7, v8))); A)3 B)4 C)5 D)8 (23) 若 有 定 义 语 句 :double x[5]={1.0,2.0,3.0,4.0,5.0, *p=x; 则 错 误 引 用 x 数 组 元 素 的 是 ( ) A)*p B)x[5] C)*(p+1) D)*x (24) 若 有 定 义 语 句 :char s[10]="1234567\0\0";, 则 strlen(s) 的 值 是 ( ) A)7 B)8 C)9 D)10 (25) 以 下 叙 述 中 错 误 的 是 ( ) A) 用 户 定 义 的 函 数 中 可 以 没 有 return 语 句 B) 用 户 定 义 的 函 数 中 可 以 有 多 个 return 语 句, 以 便 可 以 调 用 一 次 返 回 多 个 函 数 值 C) 用 户 定 义 的 函 数 中 若 没 有 return 语 句, 则 应 当 定 义 函 数 为 void 类 型 二 级 C 语 言 程 序 设 计 试 卷 第 2 页 ( 共 9 页 )
D) 函 数 的 return 语 句 中 可 以 没 有 表 达 式 (26) 以 下 关 于 宏 的 叙 述 中 正 确 的 是 ( ) A) 宏 名 必 须 用 大 写 字 母 表 示 B) 宏 定 义 必 须 位 于 源 程 序 中 所 有 语 句 之 前 C) 宏 替 换 没 有 数 据 类 型 限 制 D) 宏 调 用 比 函 数 调 用 耗 费 时 间 (27) 有 以 下 程 序 #include<stdio.h> { int i, j; for(i=3; i>=l; i--) { for(j=1; j<=2; j++) printf("%d", i+j); A)2 3 4 B)4 3 2 345 543 C)2 3 D)4 5 34 34 45 23 (28) 有 以 下 程 序 { int x=l, y=2, z=3; if(x>y) if(y<z) printf("%d", ++z); else printf("%d", ++y); printf("%d\n", x++); A)331 B)41 C)2 D)1 (29) 有 以 下 程 序 # include <stdio.h> { int i=5; do { if (i%3=1) if (i%5==2) { printf("*%d", i); break; i++; while(i!=0); 二 级 C 语 言 程 序 设 计 试 卷 第 3 页 ( 共 9 页 )
A)*7 B)*3*5 C)*5 D)*2*6 (30) 有 以 下 程 序 int fun(int a,int b) { if(b==0) return a; else return(fun(--a,--b)); { printf("%d\n", fun(4,2)); A)1 B)2 C)3 D)4 (31) 有 以 下 程 序 #include <stdlib.h> int fun(int n) { int *p; p=(int*)malloc(sizeof(int)); *p=n; return *p; { int a; a = fun(10); printf("%d\n", a+fun(10)); A)0 B)10 C)20 D) 出 错 (32) 有 以 下 程 序 void fun(int a, int b) { int t; t=a; a=b; b=t; { int c[10]={1,2,3,4,5,6,7,8,9,0), i; for (i=0; i<10; i+=2) fun(c[i], c[i+l]); for (i=0; i<10; i++) printf("%d,", c[i]); A)l,2,3,4,5,6,7,8,9,0, B)2,l,4,3,6,5,8,7,0,9, C)0,9,8,7,6,5,4,3,2,1, D) 0,1,2,3,4,5,6,7,8,9, (33) 有 以 下 程 序 struct st 二 级 C 语 言 程 序 设 计 试 卷 第 4 页 ( 共 9 页 )
{ int x, y;) data[2]={l,10,2,20; { struct st *p=data; printf("%d,", p->y); printf("%d\n",(++p)->x); A)10,1 B)20,1 C)10,2 D)20,2 (34) 有 以 下 程 序 void fun(int a[], int n) { int i, t; for(i=0; i<n/2; i++) {t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; { int k[10]={1,2,3,4,5,6,7,8,9,10, i; fun(k,5); for(i=2; i<8; i++) printf("%d", k[i]); A)345678 B)876543 C)1098765 D)321678 (35) 有 以 下 程 序 #define N 4 void fun(int a[][n], int b[]) { int i; for(i=0; i<n; i++) b[i]=a[i][i]; { int x[][n]={{1,2,3),{4),{5,6,7,8),{9,10,y[n], i; fun(x,y); for (i=0; i<n; i++) printf("%d,", y[i]); A)l,2,3,4, B)1,0,7,0, C)1,4,5,9, D)3,4,8,10, (36) 有 以 下 程 序 int fun(int (*s)[4],int n, int k) { int m, i; m=s[0][k]; for(i=l; i<n; i++) if(s[i][k]>m) m=s[i][k]; return m; 二 级 C 语 言 程 序 设 计 试 卷 第 5 页 ( 共 9 页 )
{ int a[4][4]={{1,2,3,4),{11,12,13,14,{2l,22,23,24,{31,32,33,34; printf("%d\n", fun(a,4,0)); A)4 B)34 C)31 D)32 (37) 有 以 下 程 序 { struct STU { char name[9]; char sex; double score[2]; ; struct STU a={"zhao",'m',85.0,90.0), b={"qian",'f',95.0,92.0); b=a; printf("%s,%c,%2.0f,%2.0f\n",b.name,b.sex,b.score[0],b.score[1]); A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90 (38) 假 定 已 建 立 以 下 链 表 结 构, 且 指 针 p 和 q 已 指 向 如 图 所 示 的 结 点 : data next head a b c p q 则 以 下 选 项 中 可 将 q 所 指 结 点 从 链 表 中 删 除 并 释 放 该 结 点 的 语 句 组 是 ( ) A)(*p).next=(*q).next; free(p); B)p=q->next; free(q); C)p=q; free(q); D)p->next=q->next; free(q); (39) 有 以 下 程 序 { char a=4; printf("%d\n", a=a<<1); A)40 B)16 C)8 D)4 (40) 有 以 下 程 序 { FILE *pf; char *s1="china",*s2="beijing"; pf=fopen("abc.dat","wb+"); fwrite(s2,7,l,pf); rewind(pf); /* 文 件 位 置 指 针 回 到 文 件 开 头 */ fwrite(s1,5,1,pf); fclose(pf); 以 上 程 序 执 行 后 abc.dat 文 件 的 内 容 是 ( ) B)China B)Chinang C)ChinaBeijing D)BeijingChina 二 级 C 语 言 程 序 设 计 试 卷 第 6 页 ( 共 9 页 )
二 填 空 题 ( 每 空 2 分, 共 30 分 ) 请 将 每 一 个 空 的 正 确 答 案 写 在 答 题 卡 1 至 15 序 号 的 横 线 上, 答 在 试 卷 上 不 得 分 (1) 对 下 列 二 叉 树 进 行 中 序 遍 历 的 结 果 1 A B C D E F X Y Z (2) 按 照 软 件 测 试 的 一 般 步 骤, 集 成 测 试 应 在 2 测 试 之 后 进 行 (3) 软 件 工 程 三 要 素 包 括 方 法 工 具 和 过 程, 其 中, 3 支 持 软 件 开 发 的 各 个 环 节 的 控 制 和 管 理 (4) 数 据 库 设 计 包 括 概 念 设 计 4 和 物 理 设 计 (5) 在 二 维 表 中, 元 组 的 5 不 能 再 分 成 更 小 的 数 据 项 (6) 设 变 量 a 和 b 已 正 确 定 义 并 赋 初 值 请 写 出 与 a-=a+b 等 价 的 赋 值 表 达 式 6 (7) 若 整 型 变 量 a 和 b 中 的 值 分 别 为 7 和 9, 要 求 按 以 下 格 式 输 出 a 和 b 的 值 : a=7 b=9 请 完 成 输 出 语 句 :printf (" 7 ",a,b); (8) 以 下 程 序 的 输 出 结 果 是 8 { int i,j,sum; for(i=3;i>=1;i--) { sum=0; for(j=1;j<=i;j++) sum+=i*j; printf("%d\n",sum); (9) 以 下 程 序 的 输 出 结 果 是 9 { int j, a[]={1,3,5,7,9,11,13,15,*p=a+5; for(j=3; j; j--) { switch(j) { case 1: case 2: printf("%d",*p++); break; case 3: printf("%d",*(--p)); 二 级 C 语 言 程 序 设 计 试 卷 第 7 页 ( 共 9 页 )
(10) 以 下 程 序 的 输 出 结 果 是 10 #define N 5 int fun(int *s, int a, int n) { int j; *s=a; j=n; while(a!=s[j])j--; return j; { int s[n+1]; int k; for(k=l; k<=n; k++) s[k]=k+l; printf("%d\n",fun(s,4,n)); (11) 以 下 程 序 的 输 出 结 果 是 11 int fun(int x) { static int t=0; return(t +=x); { int s,i; for(i=l;i<=5;i++) s=fun(i); printf("%d\n",s); (12) 以 下 程 序 按 下 面 指 定 的 数 据 给 x 数 组 的 下 三 角 置 数, 并 按 如 下 形 式 输 出, 请 填 空 4 3 7 2 6 9 1 5 8 10 { int x[4][4],n=0,i,j; for(j=0;j<4;j++) for(i=3;i>=j; 12 ) {n++;x[i][j]= 13 ; for(i=0;i<4;i++) { for(j=0;j<=i;j++) printf("%3 d",x[i][j]); (13) 以 下 程 序 的 功 能 是 : 通 过 函 数 func 输 入 字 符 并 统 计 输 入 字 符 的 个 数 输 入 时 用 字 符 @ 作 为 输 入 结 束 标 志 请 填 空 long 14 ; /* 函 数 说 明 语 句 */ 二 级 C 语 言 程 序 设 计 试 卷 第 8 页 ( 共 9 页 )
{ long n; n=func(); printf("n=%ld\n",n); long func() { long m; for( m=0; getchar()!='@'; 15 ); retum m; 二 级 C 语 言 程 序 设 计 试 卷 第 9 页 ( 共 9 页 )