机 密 启 用 前 2008 年 4 月 全 国 计 算 机 等 级 考 试 二 级 笔 试 试 卷 C 语 言 程 序 设 计 24 注 意 事 项 一 考 生 应 严 格 遵 守 考 场 规 则, 得 到 监 考 人 员 指 令 后 方 可 作 答 二 考 生 拿 到 试 卷 后 应 首 先 将 自 己 的 姓 名 准 考 证 号 等 内 容 涂 写 在 答 题 卡 的 相 应 位 置 上 三 选 择 题 答 案 必 须 用 铅 笔 填 涂 在 答 题 卡 的 相 应 位 置 上, 填 空 题 的 答 案 必 须 用 蓝 黑 色 钢 笔 或 圆 珠 笔 写 在 答 题 卡 的 相 应 位 置 上, 答 案 写 在 试 卷 上 无 效 四 注 意 字 迹 清 楚, 保 持 卷 面 整 洁 五 考 试 结 束 将 试 卷 和 答 题 卡 放 在 桌 上, 不 得 带 走 待 监 考 人 员 收 毕 清 点 后, 方 可 离 场 * * * 版 权 所 有, 任 何 单 位 或 个 人 不 得 保 留 复 制 和 出 版, 违 者 必 究 * * * 教 育 部 考 试 中 心 二 00 八 年 二 月 制
2008 年 4 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 公 共 基 础 知 识 和 C 语 言 程 序 设 计 ( 考 试 时 间 120 分 钟, 满 分 100 分 ) 一 选 择 题 ((1)-(10) 每 小 题 2 分,(11)-(50) 每 小 题 1 分, 共 60 分 ) (1) 程 序 流 程 图 中 带 有 箭 头 的 线 段 表 示 的 是 ( ) A) 图 元 关 系 B) 数 据 流 C) 控 制 流 D) 调 用 关 系 (2) 结 构 化 程 序 设 计 的 基 本 原 则 不 包 括 ( ) A) 多 元 性 B) 自 顶 向 下 C) 模 块 化 D) 逐 步 求 精 (3) 软 件 设 计 中 模 块 划 分 应 遵 循 的 准 则 是 ( ) A) 低 内 聚 低 耦 合 B) 高 内 聚 低 耦 合 C) 低 内 聚 高 耦 合 D) 高 内 聚 高 耦 合 (4) 在 软 件 开 发 中, 需 求 分 析 阶 段 产 生 的 主 要 文 档 是 ( ) A) 可 行 性 分 析 报 告 B) 软 件 需 求 规 格 说 明 书 C) 概 要 设 计 说 明 书 D) 集 成 测 试 计 划 (5) 算 法 的 有 穷 性 是 指 ( ) A) 算 法 程 序 的 运 行 时 间 是 有 限 的 B) 算 法 程 序 所 处 理 的 数 据 量 是 有 限 的 C) 算 法 程 序 的 长 度 是 有 限 的 D) 算 法 只 能 被 有 限 的 用 户 使 用 (6) 对 长 度 为 n 的 线 性 表 排 序, 在 最 坏 情 况 下, 比 较 次 数 不 是 n(n-1)/2 的 排 序 方 法 是 ( ) A) 快 速 排 序 B) 冒 泡 排 序 C) 简 单 插 入 排 序 D) 堆 排 序 (7) 下 列 关 于 栈 的 叙 述 正 确 的 是 ( ) A) 栈 按 先 进 先 出 组 织 数 据 B) 栈 按 先 进 后 出 组 织 数 据 C) 只 能 在 栈 底 插 入 数 据 D) 不 能 删 除 数 据 (8) 在 数 据 库 设 计 中, 将 E-R 图 转 换 成 关 系 数 据 模 型 的 过 程 属 于 ( ) A) 需 求 分 析 阶 段 B) 概 念 设 计 阶 段 C) 逻 辑 设 计 阶 段 D) 物 理 设 计 阶 段 (9) 有 三 个 关 系 R S 和 T 如 下 : R S T B C D B C D B C D a 0 k1 f 3 h2 a 0 k1 b 1 n1 a 0 k1 n 2 x1 由 关 系 R 和 S 通 过 运 算 得 到 关 系 T, 则 所 使 用 的 运 算 为 ( ) A) 并 B) 自 然 连 接 二 级 C 语 言 程 序 设 计 试 卷 第 1 页 ( 共 9 页 )
C) 笛 卡 尔 积 D) 交 (10) 设 有 表 示 学 生 选 课 的 三 张 表, 学 生 S( 学 号, 姓 名, 性 别, 年 龄, 身 份 证 号 ), 课 程 C( 课 号, 课 名 ), 选 课 SC( 学 号, 课 号, 成 绩 ), 则 表 SC 的 关 键 字 ( 键 或 码 ) 为 ( ) A) 课 号, 成 绩 B) 学 号, 成 绩 C) 学 号, 课 号 D) 学 号, 姓 名, 成 绩 (11) 以 下 叙 述 中 正 确 的 是 A)C 程 序 中 的 注 释 只 能 出 现 在 程 序 的 开 始 位 置 和 语 句 的 后 面 ( ) B)C 程 序 书 写 格 式 严 格, 要 求 一 行 内 只 能 写 一 个 语 句 C)C 程 序 书 写 格 式 自 由, 一 个 语 句 可 以 写 在 多 行 上 D) 用 C 语 言 编 写 的 程 序 只 能 放 在 一 个 程 序 文 件 中 (12) 以 下 选 项 中 不 合 法 的 标 识 符 是 ( ) A)print B)For C)&a D)-00 (13) 以 下 选 项 中 不 属 于 字 符 常 量 的 是 ( ) A)'C' B)"C" C)'\xCC' D)'\072' (14) 设 变 量 已 正 确 定 义 并 赋 值, 以 下 正 确 的 表 达 式 是 ( ) A)x=y*5=x+z B)int(15.8%5) C)x=y+z+5,++y D)x=25%5.0 (15) 以 下 定 义 语 句 中 正 确 的 是 ( ) A)int a=b=0; B)char A=65+1,b='b'; C)float a=1,"b=&a,"c=&b; D)double a=0.0;b=1.1; (16) 有 以 下 程 序 段 ( ) char ch;int k; ch='a'; k=12; printf("%c,%d,",ch,ch,k); printf("k=%d\n",k); 已 知 字 符 a 的 ASCII 十 进 制 代 码 为 97, 则 执 行 上 述 程 序 段 后 输 出 结 果 是 A) 因 变 量 类 型 与 格 式 描 述 符 的 类 型 不 匹 配 输 出 无 定 值 B) 输 出 项 与 格 式 描 述 符 个 数 不 符, 输 出 为 零 值 或 不 定 值 C)a,97,12k=12 D)a,97,k=12 (17) 已 知 字 母 A 的 ASCII 代 码 值 为 65, 若 变 量 kk 为 char 型, 以 下 不 能 正 确 判 断 出 kk 中 的 值 为 大 写 字 母 的 表 达 式 是 ( ) A)kk>='A'&& kk<='z' B)!(kk>='A' kk<='z') C)(kk+32)>= 'a' && (kk+32)<= 'z' D)isalpha(kk)&&(kk<91) (18) 当 变 量 c 的 值 不 为 2 4 6 时, 值 也 为 真 的 表 达 式 是 ( ) A)(c==2) (c==4) (c==6) B)(c>=2&&c<=6) (c!=3) (c!=5) C)(c>=2&&c<-6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) (19) 若 变 量 已 正 确 定 义, 有 以 下 程 序 段 int a=3,b=5,c=7; if(a>b)a=b;c=a; if(c!=a)c=b; printf("%d,%d,%d\n",a,b,c); 二 级 C 语 言 程 序 设 计 试 卷 第 2 页 ( 共 9 页 )
其 输 出 结 果 是 ( ) A) 程 序 段 有 语 法 错 B)3,5,3 C)3,5,5 D)3,5,7 (20) 有 以 下 程 序 int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a++;break; case 1: b++;break; case 2: a++;b++;break; case 3: a++;b++; printf("a=%d,b=%d\n",a,b); A)a=1, b=0 B)a=2, b=2 C)a=1, b=1 D)a=2, b=1 (21) 有 以 下 程 序 int x=8; for( ;x>0;x--) if(x%3)printf("%d,",x--);continue; printf("%d,",--x); A)7,4,2, B)8,7,5,2, C)9,7,6,4, D)8,5,4,2, (22) 以 下 不 构 成 无 限 循 环 的 语 句 或 语 句 组 是 ( ) A)n=0; B)n=0; do ++n; while (n<=o); while (1) n++; C)n=10; D)for(n=0, i=1; ;i++)n+=i wile (n); n--; (23) 有 以 下 程 序 二 级 C 语 言 程 序 设 计 试 卷 第 3 页 ( 共 9 页 )
int a[]=1,2,3,4,y,*p=&a[3]; --p; y=*p; printf("y=%d\n",y); A)y=0 B)y=1 C)y=2 D)y=3 (24) 以 下 错 误 的 定 义 语 句 是 ( ) A)int x[ ][3]=0,1,1,2,3; B)int x[4 ][3]=1,2,3,1,2,3,1,2,3,1,2,3; C)int x[4 ][ ]=1,2,3,1,2,3,1,2,3,1,2,3; D)int x[ ][3]=1,2,3,4; (25) 设 有 如 下 程 序 段 char s[20]=" Beijing", *p; p=s; 则 执 行 p=s; 语 句 后, 以 下 叙 述 正 确 的 是 ( ) A) 可 以 用 *p 表 示 s[0] B)s 数 组 中 元 素 的 个 数 和 p 所 指 字 符 串 长 度 相 等 C)s 和 p 都 是 指 针 变 量 D) 数 组 s 中 的 内 容 和 指 针 变 量 p 中 的 内 容 相 同 (26) 若 有 定 义 :int a[2][3];, 以 下 选 项 中 对 a 数 组 元 素 正 确 引 用 的 是 ( ) A)a[2][!1] B)a[2][3] C)a [0][3] D)a[1>2][!1] (27) 有 定 义 语 句 :char s[10];, 若 要 从 终 端 给 s 输 入 5 个 字 符, 错 误 的 输 入 语 句 是 ( ) A)gets(&s[0]); B)scanf("%s",s+1); C)gets(s); D)scanf("%s",s[1]); (28) 以 下 叙 述 中 错 误 的 是 ( ) A) 在 程 序 中 凡 是 以 # 开 始 的 语 句 行 都 是 预 处 理 命 令 行 B) 预 处 理 命 令 行 的 最 后 不 能 以 分 号 表 示 结 束 C)#define MAX 是 合 法 的 宏 定 义 命 令 行 D)C 程 序 对 预 处 理 命 令 行 的 处 理 是 在 程 序 执 行 的 过 程 中 进 行 的 (29) 以 下 结 构 体 类 型 说 明 和 变 量 定 义 中 正 确 的 是 ( ) A)typedef struct B)struct REC; int n; char c; REC; int n; char c;; REC t1,t2; REC t1,t2; C)typedef struct REC ; D)struct int n=0; char c='a'; t1, t2; int n; char c; REC; REC t1, t2; (30) 以 下 叙 述 中 错 误 的 是 ( ) A)gets 函 数 用 于 从 终 端 读 入 字 符 串 B)getchar 函 数 用 于 从 磁 盘 文 件 读 入 字 符 C)fputs 函 数 用 于 把 字 符 串 输 出 到 文 件 D)fwrite 函 数 用 于 以 二 进 制 形 式 输 出 数 据 到 文 件 (31) 有 以 下 程 序 二 级 C 语 言 程 序 设 计 试 卷 第 4 页 ( 共 9 页 )
int s[12]=1,2,3,4,4,3,2,1,1,1,2,3,c[5]=0,i; for(i=0;i<12;i++)c[s[i]]++; for(i=1;i<5;i++)printf("%d",c[i]); printf("\n"); A)1 2 3 4 B)2 3 4 4 C)4 3 3 2 D)1 1 2 3 (32) 有 以 下 程 序 void fun(int *s,int n1,int n2) int i,j,t; i=n1;j=n2; while(i<j)t=s[i];s[i]=s[j];s[j]=t;i++;j--; int a[10]=1,2,3,4,5,6,7,8,9,0,k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]);printf("\n"); A)0987654321 B)4321098765 C)5678901234 D)0987651234 (33) 有 以 下 程 序 #include "string.h" void fun(char *s[],int n) char *t;int i,j; for(i=0;i<n-1;i++) for(j=i+1;j<n;j++) if(strlen(s[i])>strlen(s[j])) t=s[i];s[i]=s[j];s[j]=t; char *ss[]="bcc","bbcc","xy","aaaacc","aabcc"; fun(ss,5);printf("%s,%s\n",ss[0],ss[4]); 二 级 C 语 言 程 序 设 计 试 卷 第 5 页 ( 共 9 页 )
A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc (34) 有 以 下 程 序 int f(int x) int y; if(x==0 x==1) return (3); y=x*x-f(x-2); return y; int z; z=f(3);printf("%d\n",z); A)0 B)9 C)6 D)8 (35) 有 以 下 程 序 void fun(char *a,char *b) while(*a=='*')a++; while(*b=*a)b++;a++; char *s="*****a*b****",t[80]; fun(s,t);puts(t); A)*****a*b B)a*b C)a*b**** D)ab (36) 有 以 下 程 序 #include "string.h" typedef structchar name[9]; char sex;float score[2];stu; void f(stu a) STU b="zhao",'m',85.0,90.0; int i; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++) a.score[i]=b.score[i]; 二 级 C 语 言 程 序 设 计 试 卷 第 6 页 ( 共 9 页 )
STU c="qian",'f',95.0,92.0; f(c); printf("%s,%c,%2.0f,%2.0f\n",c.name,c.sex,c.score[0],c.score[1]); A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90 (37) 有 以 下 程 序 FILE *fp; int a[10]=1,2,3,i,n; fp=fopen("d1.dat","w"); for(i=0;i<3;i++) fprintf(fp,"%d",a[i]); fprintf(fp,"\n"); fclose(fp); fp=open("d1.dat","r"); fscanf(fp,"%d",&n); fclose(fp); printf("%d\n",n); A)12300 B)123 C)1 D)321 (38) 变 量 a 中 的 数 据 用 二 进 制 进 表 示 的 形 式 是 01011101, 变 量 b 中 的 数 据 用 二 进 制 表 示 的 形 式 是 11110000, 若 要 求 将 a 的 高 4 位 取 反, 低 4 位 不 变, 所 要 执 行 的 运 算 是 ( ) A)a*b B)ab C)a&b D)a<<4 (39) 在 C 语 言 中, 只 有 在 使 用 时 才 占 用 内 存 单 元 的 变 量, 其 存 储 类 型 是 ( ) A)anto 和 register B)extern 和 register C)auto 和 static D)static 和 register (40) 设 有 定 义 语 句 int (*f)(int);, 则 以 下 叙 述 正 确 的 是 ( ) A)f 是 基 类 型 为 int 的 指 针 变 量 B)f 是 指 向 函 数 的 指 针 变 量, 该 函 数 具 有 一 个 int 类 型 的 形 态 C)f 是 指 向 int 类 型 一 维 数 组 的 指 针 变 量 D)f 是 函 数 名, 该 函 数 的 返 回 值 是 其 类 型 为 int 类 型 的 地 址 二 填 空 题 ( 每 空 2 分, 共 40 分 ) (1) 测 试 用 例 包 括 输 入 值 集 和 1 值 集 (2) 深 度 为 5 的 满 二 叉 树 有 2 个 叶 子 结 点 (3) 设 某 循 环 队 列 的 容 量 为 50, 头 指 针 front=5( 指 向 队 头 元 素 的 前 一 位 置 ), 尾 指 针 rear=29 二 级 C 语 言 程 序 设 计 试 卷 第 7 页 ( 共 9 页 )
( 指 向 队 尾 元 素 ), 则 该 循 环 队 列 中 共 有 3 个 元 素 (4) 在 关 系 数 据 库 中, 用 来 表 示 实 体 之 间 联 系 的 是 4 (5) 在 数 据 库 管 理 系 统 提 供 的 数 据 定 义 语 言 数 据 操 纵 语 言 和 数 据 控 制 语 言 中, 5 负 责 数 据 的 模 式 定 义 与 数 据 的 物 理 存 取 构 建 (6) 已 有 定 义 :char c=' ';int a=1, b;( 此 处 c 的 初 值 为 空 格 字 符 ), 执 行 b=!c &&a; 后 b 的 值 为 6 (7) 改 变 量 已 正 确 定 义 为 整 型, 则 表 达 式 n=i=2,++i,i++ 的 值 为 7 (8) 若 有 定 义 :int k;, 以 下 程 序 段 的 输 出 结 果 是 8 for(k=2;k<6;k++,k++) printf("##%d",k); (9) 以 下 程 序 的 定 义 语 句 中,x[1] 的 初 值 是 9, 程 序 运 行 后 输 出 的 内 容 是 10 int x[]=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,*p[4],i; for(i=0;i<4;i++) p[i]=&x[2*i+1]; printf("%d",p[i][0]); printf("\n"); (10) 以 下 程 序 的 输 出 结 果 是 11 void swap(int *a,int *b) int *t; t=a;a=b;b=t; int i=3,j=5,*p=&i,*q=&j; swap(p,q);printf("%d %d\n",*p,*q); (11) 以 下 程 序 的 输 出 结 果 是 12 int a[5]=2,4,6,8,10,*p; p=a;p++; printf("%d",*p); (12) 以 下 程 序 的 输 出 结 果 是 13 void fun(int x) 二 级 C 语 言 程 序 设 计 试 卷 第 8 页 ( 共 9 页 )
if(x/2>0) fun(x/2); printf("%d",x); fun(3);printf("\n"); (13) 以 下 程 序 中 函 数 fun 的 功 能 是 : 统 计 person 所 指 结 构 体 数 组 中 所 有 性 别 (sex) 为 M 的 记 录 的 个 数, 存 入 变 量 n 中, 并 作 为 函 数 值 返 回 请 填 空 #define N 3 typedef struct int num; char nam[10]; char sex; SS; int fun(ss person[]) int i,n=0; for(i=0; i<n; i++) if( 14 =='M') n++; return n; SS W[N]=1, "AA", F,2, "BB",'M',3, "CC",'M'; int n; n=fun(w); printf("n=%d\n", n); (14) 以 下 程 序 从 名 为 filea.dat 的 文 本 文 件 中 逐 个 读 入 字 符 并 显 示 在 屏 幕 上 请 填 空 FILE *fp; char ch; fp = fopen( 15 ); ch = fgetc(fp); while (!feof(fp)) putchar(ch); ch=fgetc(fp); putchar("\n"); fclose(fp); 二 级 C 语 言 程 序 设 计 试 卷 第 9 页 ( 共 9 页 )