2010 年 9 月 全 国 计 算 机 二 级 C 语 言 笔 试 试 题 一 选 择 题 ( 每 小 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上, 答 在 试 卷 上 不 得 分 (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) 面 向 对 象 方 法 中, 继 承 是 指 A) 一 组 对 象 所 具 有 的 相 似 性 质 B) 一 个 对 象 具 有 另 一 个 对 象 的 性 质
C) 各 对 象 之 间 的 共 同 性 质 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) 交 C) 投 影 D) 并 (11) 以 下 关 于 结 构 化 程 序 设 计 的 叙 述 中 正 确 的 是 A) 一 个 结 构 化 程 序 必 须 同 时 由 顺 序 分 支 循 环 三 种 结 构 组 成 B) 结 构 化 程 序 使 用 goto 语 句 会 很 便 捷 C) 在 C 语 言 中, 程 序 的 模 块 化 是 利 用 函 数 实 现 的 D) 由 三 种 基 本 结 构 构 成 的 程 序 只 能 解 决 小 规 模 的 问 题
(12) 以 下 关 于 简 单 程 序 设 计 的 步 骤 和 顺 序 的 说 法 中 正 确 的 是 A) 确 定 算 法 后, 整 理 并 写 出 文 档, 最 后 进 行 编 码 和 上 机 调 试 B) 首 先 确 定 数 据 结 构, 然 后 确 定 算 法, 再 编 码, 并 上 机 调 试, 最 后 整 理 文 档 C) 先 编 码 和 上 机 调 试, 在 编 码 过 程 中 确 定 算 法 和 数 据 结 构, 最 后 整 理 文 档 D) 先 写 好 文 档, 再 根 据 文 档 进 行 编 码 和 上 机 调 试, 最 后 确 定 算 法 和 数 据 结 构 (13) 以 下 叙 述 中 错 误 的 是 A) C 程 序 在 运 行 过 程 中 所 有 计 算 都 以 二 进 制 方 式 进 行 B)C 程 序 在 运 行 过 程 中 所 有 计 算 都 以 十 进 制 方 式 进 行 C) 所 有 C 程 序 都 需 要 编 译 链 接 无 误 后 才 能 运 行 D)C 程 序 中 整 型 变 量 只 能 存 放 整 数, 实 型 变 量 只 能 存 放 浮 点 数 是 (14) 有 以 下 定 义 :int a; long b; double x,y; 则 以 下 选 项 中 正 确 的 表 达 式 A)a%(int)(x-y) B)a=x!=y; C)(a*y)%b D)y=x+y=x (15) 以 下 选 项 中 能 表 示 合 法 常 量 的 是 A) 整 数 :1,200 B) 实 数 :1.5E2.0 C ) 字 符 斜 杠 : \ D) 字 符 串 :"\007" (16) 表 达 式 a+=a-=a=9 的 值 是 A)9 B)_9 C)18 D)0 (17) 若 变 量 已 正 确 定 义, 在 if (W)printf( %d\n,k ); 中, 以 下 不 可 替 代 W 的 是 A)a<>b+c B)ch=getchar() C)a==b+c D)a++ (18) 有 以 下 程 序
{int a=1,b=0; if(!a) b++; else if(a==0)if(a)b+=2; else b+=3; printf( %d\n,b); A)0 B)1 C)2 D)3 (19) 若 有 定 义 语 句 int a, b;double x; 则 下 列 选 项 中 没 有 错 误 的 是 A)switch(x%2) B)switch((int)x/2.0 {case 0: a++; break; {case 0: a++; break; case 1: b++; break; case 1: b++; break; default : a++; b++; default : a++; b++; C)switch((int)x%2) D)switch((int)(x)%2) {case 0: a++; break; {case 0.0: a++; break; case 1: b++; break; case 1.0: b++; break; default : a++; b++; default : a++; b++; (20) 有 以 下 程 序 #include <stdio.h> {int a=1,b=2; while(a<6){b+=a;a+=2;b% 二 10; printf( %d,%d\n,a,b); A)5,11 B)7,1 C)7,11 D)6,1
(21) 有 以 下 程 序 {int y=10; while(y--); printf( Y=%d\n,Y); 程 序 执 行 后 的 输 出 结 果 是 A)y=0 B)y= -1 C)y=1 D)while 构 成 无 限 循 环 (22) 有 以 下 程 序 #include<stdio.h> {char s[ = rstuv"; printf( %c\n,*s+2); A)tuv B) 字 符 t 的 ASCII 码 值 C)t D) 出 错 (23) 有 以 下 程 序 #include<string.h> {char x[]= STRING ; x[0 =0;x[1]= \0 ;x[2 = 0 ; printf( %d %d\n,sizeof(x),strlen(x)); A)6 1 B)7 0 C)6 3 D)7 1
(24) 有 以 下 程 序 Int f(int x); {int n=1,m; m=f(f(f(n)));printf( %d\n,m); int f(int x) {return x*2; A)1 B)2 C)4 D)8 (25) 以 下 程 序 段 完 全 正 确 的 是 A)int *p; scanf("%d",&p); B)int *p; scanf( %d,p); C)int k, *p=&k; scanf("%d",p); D)int k, *p:; *p= &k; scanf( %d,p); (26) 有 定 义 语 句 :int *p[4]; 以 下 选 项 中 与 此 语 句 等 价 的 是 A)int p[4]; B)int **p; C)int *(p 4 ); D)int (*p) 4 ; (27) 下 列 定 义 数 组 的 语 句 中, 正 确 的 是 A)int N=10; B)#define N 10 int x[n]; int x[n]; C)int x[0..10]; D)int x[]; (28) 若 要 定 义 一 个 具 有 5 个 元 素 的 整 型 数 组, 以 下 错 误 的 定 义 语 句 是 A)int a[5]={0; B)int b[]={0,0,0,0,0; C)int c[2+3]; D)int i=5,d[i];
(29) 有 以 下 程 序 void f(int *p); {int a[5]={1,2,3,4,5,*r=a; f(r);printf( %d\n ;*r); void f(int *p) {p=p+3;printf( %d,,*p); A)1,4 B)4,4 C)3,1 D)4,1 (30) 有 以 下 程 序 ( 函 数 fun 只 对 下 标 为 偶 数 的 元 素 进 行 操 作 ) # include<stdio.h> void fun(int*a;int n) {int i j k t; for (i=0;i<n 一 1;1+=2) {k=i; for(j=i;j<n;j+=2)if(a[j]>a k])k=j; t=a i];a i]=a[k];a k]=t; {int aa 10 ={1 2 3 4 5 6 7,i; fun(aa 7); for(i=0,i<7; i++)printf( %d,,aa[i])); printf( \n ); A)7,2,5,4,3,6,1 B)1,6,3,4,5,2,7 C)7,6,5,4,3,2,1 D)1,7,3,5,6;2,1
(31) 下 列 选 项 中, 能 够 满 足 若 字 符 串 s1 等 于 字 符 串 s2, 则 执 行 ST" 要 求 的 是 A)if(strcmp(s2,s1)==0)ST; B)if(sl==s2)ST; C)if(strcpy(s l,s2)==1)st; D)if(sl-s2==0)ST; (32) 以 下 不 能 将 s 所 指 字 符 串 正 确 复 制 到 t 所 指 存 储 空 间 的 是 A)while(*t=*s){t++;s++; B)for(i=0;t[i]=s[i];i++); C)do{*t++=*s++;while(*s); D)for(i=0,j=0;t[i++]=s[j++];); (33) 有 以 下 程 序 ( strcat 函 数 用 以 连 接 两 个 字 符 串 ) #include<string.h> {char a[20]= ABCD\OEFG\0,b[]= IJK ; strcat(a,b);printf( %s\n,a); A)ABCDE\OFG\OIJK B)ABCDIJK C)IJK D)EFGIJK 母 (34) 有 以 下 程 序, 程 序 中 库 函 数 islower (ch) 用 以 判 断 ch 中 的 字 母 是 否 为 小 写 字 #include<ctype.h> void fun(char*p) {int i=0; while (p[i]) {if(p[i]== && islower(p i-1 ))p[i-1]=p[i-1]- a + A ; i++; {char s1[100]= ab cd EFG! ;
fun(s1); printf( %s\n,s1); A)ab cd EFG! B)Ab Cd EFg! C)aB cd EFG! D)ab cd EFg! (35) 有 以 下 程 序 void fun(int x) {if(x/2>1)fun(x/2); printf( %d,x); {fun(7);printf( \n ); A)1 3 7 B)7 3 1 C)7 3 D)3 7 (36) 有 以 下 程 序 int fun() {static int x=1; x+=1;return x; {int i;s=1; for(i=1;i<=5;i++)s+=fun(); printf( %d\n,s); A)11 B)21 C)6 D)120
(37) 有 以 下 程 序 #inctude<stdio.h> #include<stdlib.h> Main() {int *a,*b,*c; a=b=c=(int*)malloc(sizeof(int)); *a=1;*b=2,*c=3; a=b; printf( %d,%d,%d\n,*a,*b,*c); A)3,3,3 B)2,2,3 C)1,2,3 D)1,1,3 (38) 有 以 下 程 序 {int s,t,a=10;double B=6; s=sizeof(a);t=sizeof(b); printf( %d,%d\n,s,t); 在 VC6 平 台 上 编 译 运 行, A)2,4 B)4,4 C)4,8 D)10,6 (39) 若 有 以 下 语 句 Typedef struct S {int g; char h;t; 以 下 叙 述 中 正 确 的 是 A) 可 用 S 定 义 结 构 体 变 量 B) 可 用 T 定 义 结 构 体 变 量 C)S 是 struct 类 型 的 变 量 D)T 是 struct S 类 型 的 变 量 (40) 有 以 下 程 序 {short c=124; c=c ;
printf( %d\n C); 若 要 使 程 序 的 运 行 结 果 为 248, 应 在 下 划 线 处 填 入 的 是 A)>>2 B) 248 C)&0248 D)<<I 二 填 空 题 ( 每 空 2 分, 共 30 分 ) 请 将 每 空 的 正 确 答 案 写 在 答 题 卡 1 至 15 序 号 的 横 线 上, 答 在 试 卷 上 不 得 分 (1) 一 个 栈 的 初 始 状 态 为 空 首 先 将 元 素 5,4,3,2,1 依 次 入 栈, 然 后 退 栈 一 次, 再 将 元 素 A,B,C,D 依 次 入 栈, 之 后 将 所 有 元 素 全 部 退 栈, 则 所 有 元 素 退 栈 ( 包 括 中 间 退 栈 的 元 素 ) 的 顺 序 为 1 (2) 在 长 度 为 n 的 线 性 表 中, 寻 找 最 大 项 至 少 需 要 比 较 2 次 结 点 (3) 一 棵 二 叉 树 有 10 个 度 为 1 的 结 点,7 个 度 为 2 的 结 点, 则 该 二 叉 树 共 有 3 个 (4) 仅 由 顺 序 选 择 ( 分 支 ) 和 重 复 ( 循 环 ) 结 构 构 成 的 程 序 是 4 程 序 (5) 数 据 库 设 计 的 四 个 阶 段 是 : 需 求 分 析, 概 念 设 计, 逻 辑 设 计 5 (6) 以 下 6 {int a=200,b=010; printf( %d%d\n,a,b); (7) 有 以 下 程 序 {int x,y; scanf( %2d%ld,&x,&y);printf( %d\n,x+y); 程 序 运 行 时 输 入 :1234567 程 序 的 运 行 结 果 是 7 (8) 在 C 语 言 中, 当 表 达 式 值 为 0 时 表 示 逻 辑 值 假, 当 表 达 式 值 为 8 时 表 示 逻 辑 值 真 (9) 有 以 下 程 序
{int i,n[]={0,0,0,0,0; for (i=1;i<=4;i++) {n[i]=n[i-1]*3+1; printf( %d ",n[i]); 9 (10) 以 下 fun 函 数 的 功 能 是 : 找 出 具 有 N 个 元 素 的 一 维 数 组 中 的 最 小 值, 并 作 为 函 数 值 返 回 请 填 空 ( 设 N 已 定 义 ) int fun(int x[n]) {int i,k=0; for(i=0;i<n;i++) if(x[i] return x[k]; (11) 有 以 下 程 序 int*f(int *p,int*q); {int m=1,n=2,*r=&m; r=f(r,&n);printf( %d\n,*r); int*f(int *p,int*q) {return(*p>*q)?p:q; 11 (12) 以 下 fun 函 数 的 功 能 是 在 N 行 M 列 的 整 形 二 维 数 组 中, 选 出 一 个 最 大 值 作 为 函 数 值 返 回, 请 填 空 ( 设 M,. N 已 定 义 ) int fun(int a[n][m)) {int i,j,row=0,col=0; for(i=0;i<n;i++) for(j=0;j if(a[i][j]>a[row][col]){row=i;col=j; return( 12 ):
(13) 有 以 下 程 序 {int n[2],i,j; for(i=0;i<2;i++)n[i]=0; for(i=0;i<2;i++) for(j=0;j<2;j++)n[j]=n i +1; printf( %d\n,n[1]); 13 (14) 以 下 程 序 的 功 能 是 : 借 助 指 针 变 量 找 出 数 组 元 素 中 最 大 值 所 在 的 位 置 并 输 出 该 最 大 值 请 在 输 出 语 句 中 填 写 代 表 最 大 值 的 输 出 项 {int a 10],*p,*s; for(p=a;p-a<10;p++)scanf( %d,p); for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p; printf("max=%d\n, 14 ); (15) 以 下 程 序 打 开 新 文 件 f.txt, 并 调 用 字 符 输 出 函 数 将 a 数 组 中 的 字 符 写 入 其 中, 请 填 空 { 15 *fp; char a[5]={ 1, 2, 3, 4, 5,i; fp=fopen( f.txt, w ); for(i=0;i<5;i++)fputc(a[i],fp); fclose(fp);