收藏 分享(赏)

全国计算机等级考试二级c语言试题分析.doc

上传人:精品资料 文档编号:8773212 上传时间:2019-07-11 格式:DOC 页数:19 大小:42.02KB
下载 相关 举报
全国计算机等级考试二级c语言试题分析.doc_第1页
第1页 / 共19页
全国计算机等级考试二级c语言试题分析.doc_第2页
第2页 / 共19页
全国计算机等级考试二级c语言试题分析.doc_第3页
第3页 / 共19页
全国计算机等级考试二级c语言试题分析.doc_第4页
第4页 / 共19页
全国计算机等级考试二级c语言试题分析.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、全国计算机等级考试(二级 c语言)试卷分析一 、 选 择 题 (每 小 题 1 分 , 共 40 小 题 , 共 40 分 )前 面 的 10 道 题 涉 及 计 算 机 基 础 知 识 ( 数 据 结 构 、 数 据 库 、 软 件 工 程等 方 面 知 识 ) , 在 这 里 就 不 针 对 计 算 机 基 础 知 识 部 分 进 行 分 析 。11.以 下 叙 述 中 正 确 的 是 ( )。A.在 C 语 言 程 序 中 , main 函 数 必 须 放 在 其 他 函 数 的 最 前 面B.每 个 后 缀 为 C 的 C 语 言 源 程 序 都 可 以 单 独 进 行 编 译C.在

2、C 语 言 程 序 中 , 只 有 main 函 数 才 可 单 独 进 行 编 译D.每 个 后 缀 为 .C 的 C 语 言 源 程 序 都 应 该 包 含 一 个 main 函 数【 解 析 】 B。 C 语 言 是 一 种 成 功 的 系 统 描 述 语 言 , 具 有 良 好 的 移 植 性 ,每 个 后 缀 为 .C 的 C 语 言 源 程 序 都 可 以 单 独 进 行 编 译 ; C 语 言 程 序 中 , 不管 包 含 多 少 个 后 缀 为 .C 的 程 序 文 件 , 但 是 一 定 有 且 仅 有 一 个 main 函 数 ,而 且 main 函 数 在 程 序 中 可

3、 以 放 在 任 何 其 他 函 数 之 前 或 之 后 。12.C 语 言 中 的 标 识 符 分 为 关 键 字 、 预 定 义 标 识 符 和 用 户 标 识 符 , 以 下叙 述 正 确 的 是 ( )。A.预 定 义 标 识 符 (如 库 函 数 中 的 函 数 名 )可 用 做 用 户 标 识 符 , 但 失 去原 有 含 义B.用 户 标 识 符 可 以 由 字 母 和 数 字 任 意 顺 序 组 成C.在 标 识 符 中 大 写 字 母 和 小 写 字 母 被 认 为 是 相 同 的 字 符D.关 键 字 可 用 做 用 户 标 识 符 , 但 失 去 原 有 含 义【 解 析

4、 】 A。 用 户 标 识 符 不 能 以 数 字 开 头 , C 语 言 中 标 识 符 是 区 分 大小 写 的 , 关 键 字 不 能 用 做 用 户 标 识 符 。13.以 下 选 项 中 表 示 一 个 合 法 的 常 量 是 (说 明 : 符 号 口 表 示 空 格 )( )。A.9 口 9 口 9 B.0XabC.123E0.2 D.2.7e【 解 析 】 B。 当 用 指 数 形 式 表 示 浮 点 数 据 时 , E 的 前 后 都 要 有 数 据 ,并 且 E 的 后 面 数 要 为 整 数 ; 整 型 常 量 : 0123 表 示 八 进 制 整 型 常 量 ,0xab

5、表 示 十 六 进 制 整 型 常 量 , 123 为 十 进 制 整 型 常 量 , 123L 表 示 长 整型 常 量 , 123U 表 示 无 符 号 整 型 常 量 , 123UL 表 示 无 符 号 长 整 型 常 量 。答 案 A 没 有 这 种 常 量 , 如 果 加 上 双 引 号 是 可 以 表 示 字 符 串 常 量 。14.C 语 言 主 要 是 借 助 以 下 哪 个 功 能 来 实 现 程 序 模 块 化 ?( )A.定 义 函 数 B.定 义 常 量 和 外 部 变 量C.三 种 基 本 结 构 语 句 D.丰 富 的 数 据 类 型【 解 析 】 A。 C 语 言

6、 是 由 函 数 组 成 的 , 函 数 是 C 语 言 的 基 本 单 位 。 所以 可 以 说 C 语 言 主 要 是 借 助 定 义 函 数 来 实 现 程 序 模 块 化 。15.以 下 叙 述 中 错 误 的 是 ( )。A.非 零 的 数 值 型 常 量 有 正 值 和 负 值 的 区 分B.常 量 是 在 程 序 运 行 过 程 中 值 不 能 被 改 变 的 量C.定 义 符 号 常 量 必 须 用 类 型 名 来 设 定 常 量 的 类 型D.用 符 号 名 表 示 的 常 量 叫 符 号 常 量【 解 析 】 C。 在 C 语 言 中 , 可 以 用 一 个 标 识 符 来

7、 表 示 一 个 常 量 , 称 之为 符 号 常 量 。 符 号 常 量 在 使 用 之 前 必 须 先 定 义 , 其 一 般 形 式 为 :#define 标 识 符 常 量 。16.若 有 定 义 和 语 句 : int a, b;scanf(“%d, %d“, 以 下 选项 中 的 输 人 数 据 , 不 能 把 值 3 赋 给 变 量 a、 5 赋 给 变 量 b 的 是 ( )。A.3, 5, B.3, 5, 4C.3 5 D.3, 5【 解 析 】 C。 在 输 入 3 和 5 之 间 除 逗 号 外 不 能 有 其 他 字 符 。 答 案 B和 A 是 可 以 的 , 原 因

8、 是 用 scanf 函 数 输 入 时 , 从 左 往 右 对 应 给 值 , 右 边多 余 的 值 不 输 入 进 去 。 17.C 语 言 中 char 类 型 数 据 占 字 节 数 为 ( )。A.3 B.4 C.1 D.2【 解 析 】 C。 在 标 准 C( ANSI-C) 中 , char 类 型 数 据 占 1 个 字 节 。18.下 列 关 系 表 达 式 中 , 结 果 为 “假 ”的 是 ( )。A.(3+4)6 B.(3!=4)2C.32 为 假 。19.若 以 下 选 项 中 的 变 量 全 部 为 整 型 变 量 , 且 已 正 确 定 义 并 赋 值 , 则 语

9、法 正 确 的 switch 语 句 是 ( )。A.switch(a+9)case cl: y=a-b;case c2: y=a+b;B.switch a*bcase l0: x=a+b;default: y=a-b;C.switch(a+b)casel: case3: y=a+b;break;case0: case4: y=a-b;D.switch(a*a+b*b)default: break;case 3: y=a+b;break;case 2: y=a-b;break;【 解 析 】 D。 选 项 A, switch 语 句 中 要 求 case 后 面 必 须 是 常 量 , 不能

10、是 变 量 ; 选 项 B, a*b 要 用 括 号 括 起 来 ; 选 项 C, case 与 后 面 的 数 字用 空 格 隔 开 。 注 意 switch 语 句 语 句 结 束 的 方 式 : 一 是 见 到 break; 二是 执 行 到 自 然 结 束 。20.有 以 下 程 序 :#includemain() int a=-2, b=0;while(a+printf(“%d, %dn“, a, b);程 序 运 行 后 的 输 出 结 果 是 ( )。A.1, 3 B.0, 2 C.0, 3 D.1, 2【 解 析 】 D。 while 循 环 第 一 次 结 束 后 a, b

11、取 值 为 : -1, 1; 第 二 次结 束 后 a, b 的 值 为 : 0, 2; 第 三 次 没 有 执 行 循 环 体 ( 空 语 句 ) , 只 是 判断 了 一 下 a+是 否 为 真 , 因 a 为 0, 所 以 a+为 假 , 但 a 的 值 加 1, 所以 a 的 值 变 成 1, 但 , 立 刻 执 行 以 下 语 句 , 正 确 的 语 句 是( )。A.p=x; B.*p=x; C.p=NULL; D.*p=NULL;【 解 析 】 C。 对 于 指 针 变 量 p, 如 果 没 有 把 p 指 向 一 个 指 定 的 值 ,则 说 明 指 针 变 量 p 内 的 值

12、 是 NULL, 即 空 值 , 也 就 是 说 没 有 存 放 任 何 存 储空 间 的 地 址 , 所 以 *p 是 不 能 被 赋 值 的 。 定 义 指 针 变 量 不 赋 初 始 值 时 默 认为 NULL。22.下 列 叙 述 中 正 确 的 是 ( )。A.可 以 用 关 系 运 算 符 比 较 字 符 串 的 大 小B.空 字 符 串 不 占 用 内 存 , 其 内 存 空 间 大 小 是 0C.两 个 连 续 的 单 引 号 是 合 法 的 字 符 常 量D.两 个 连 续 的 双 引 号 是 合 法 的 字 符 串 常 量【 解 析 】 D。 比 较 两 个 字 符 串 大

13、 小 用 函 数 strcomp(s, t), 不 能 用 关系 运 算 符 比 较 字 符 串 的 大 小 ; 空 字 符 串 有 结 束 符 ( 0) , 所 以 也 要 占 用1 字 节 ; 两 个 连 续 的 单 引 号 是 不 合 法 , 单 引 号 中 间 必 须 有 一 个 字 符 ( 普 通字 符 或 转 义 字 符 ) ; 两 个 连 续 的 双 引 号 表 示 的 是 空 字 符 串 。23.有 以 下 程 序 :#includemain() rhar a=H;a=(a=Afor(i=0;i#define N 3void fun(int aN, int b) int i,

14、j;for(i=0;ibi) bi=aij;main()int xNN=1, 2, 3, 4, 5, 6, 7, 8, 9, yN, i;fun(x, y);for(i=0;i#include main()char a10=“abc“, b10=“012“, c10=“xyz“;strcpy(a+1, b+2);puts(strcat(a, c+1);程 序 运 行 后 的 输 出 结 果 是 ( )。A.al2xyz B.12yz C.a2yz D.bc2yz【 解 析 】 C。 第 一 次 执 行 字 符 串 的 复 制 函 数 后 , 字 符 串 a 中 的 值 是a2, 第 二 次 执

15、 行 的 是 字 符 串 的 连 接 函 数 , 连 接 后 , a 字 符 串 变 成 了a2yz, 再 输 出 , 所 以 运 行 结 果 为 a2yz。 本 题 最 主 要 的 是 了 解 字 符 串 名 加一 个 整 型 常 量 所 代 表 的 字 符 串 是 什 么 , 比 如 : 有 char a10=“abc“;定义 , 则 字 符 串 a 的 值 是 abc; 而 字 符 串 a+1 的 值 是 bc; 字 符 串 a+2 的值 是 c; 字 符 串 b+3 的 值 是 0, 即 不 空 串 。30.以 下 选 项 中 , 合 法 的 是 ( )。A.char str3=d,

16、e, b, u, g, 0;B.char str4;str4=“hello world“;C.char name10;name=“china“;D.char strl5=“pass“, str26;str2=strl;【 解 析 】 A。 选 项 B 不 能 把 一 个 字 符 串 赋 值 给 一 个 字 符 变 量 str4;选 项 C 和 D 犯 了 同 样 的 错 误 是 把 字 符 串 赋 给 了 数 组 名 , 数 组 名 是 一 个 指针 常 量 , 常 量 是 不 能 被 赋 值 的 。31.有 以 下 程 序 :#includemain() char *s=“234“;int

17、k=0, a=0;while(sk+1!=0) k+;if(k%2=0)a=a+(sk-0+1);continue; a=a+(sk-0);printf(“k=%d a=%dn“, k, a);程 序 运 行 后 的 输 出 结 果 是 ( )。A.k=6 a=11 B.k=3 a=14C.k=4 a=12 D.k=5 a=15【 解 析 】 C。 输 出 结 果 : k=1 a=2k=2 a=4k=3 a=7k=4 a=1232.有 以 下 程 序 :#includemain()char a510=“one“, “two“, “three“, “four“, “five“;int i, j;

18、char t:for(i=0;iaj0)t=ai0;ai0=aj0;aj0=t;puts(a1);程 序 运 行 后 的 输 出 结 果 是 ( )。A.fwo B.fix C.two D.owo【 解 析 】 A。 for 循 环 完 成 的 功 能 是 把 二 维 数 组 a 的 第 一 列 的 字 母 按从 小 到 大 排 序 , 其 他 列 的 字 母 不 变 。 排 序 方 法 是 类 冒 泡 排 序 。33.有 以 下 程 序 :#includeint a=1, b=2;void funl(int a, int b)printf( “%d %d“, a, b); void fun2

19、() a=3;b=4; main() funl(5, 6);fun2();printf(“%d %dn“, a, b);程 序 运 行 后 的 输 出 结 果 是 ( )。A.1 2 5 6 B.5 6 3 4C.5 6 1 2 D.3 4 5 6【 解 析 】 B。 funl 是 输 出 局 部 变 量 的 值 , fun2 是 把 全 局 变 量 的 值 改成 3 和 4, 所 以 输 出 的 结 果 是 5634。 当 全 局 变 量 与 局 部 变 量 同 名 时 , 在重 叠 的 作 用 域 中 , 局 部 变 量 起 作 用 ( 可 怜 原 则 , 即 谁 的 作 用 域 小 谁

20、就 在 重叠 的 作 用 域 中 起 作 用 ) 。34.有 以 下 程 序 :#includevoid func(int n) static int num=1;num=num+n;printf(“%d“, num);main()func(3);func(4);printf(“n“); 程 序 运 行 后 的 输 出 结 果 是 ( )。A.4 8 B.3 4 C.3 5 D.4 5【 解 析 】 A。 第 一 调 用 func 函 数 时 输 出 4, 第 二 次 调 用 func 函 数 时num 的 值 并 不 会 释 放 , 仍 然 是 上 次 ( 第 一 次 调 用 func 函

21、数 时 ) 修 改 后的 值 4, 第 二 次 调 用 结 果 为 8, 所 以 输 出 结 果 是 4 8。 本 题 考 的 是 静 态局 部 变 量 的 作 用 域 与 生 存 期 ( 存 放 在 静 态 存 储 区 ) 不 一 致 的 情 况 , 第 一 次调 用 完 后 , 静 态 局 部 变 量 num 的 值 为 4, 存 放 到 静 态 存 储 区 , 函 数func 执 行 结 束 , 其 作 用 域 消 失 , 但 存 放 在 静 态 存 储 区 的 num 变 量 的 值4 还 在 , 但 仍 然 不 能 拿 出 来 用 , 只 能 等 下 次 再 进 入 作 用 域 时

22、, 即 第 二 次 调用 函 数 func 时 , 又 进 入 静 态 局 部 变 量 num 的 作 用 域 , 此 时 , 变 量 num又 可 以 拿 出 来 使 用 , 由 于 已 经 存 在 静 态 存 储 区 , 所 以 不 用 重 新 定 义 该 变 量 ,可 以 直 接 从 静 态 存 储 区 取 出 变 量 num 的 值 ( 4) 来 使 用 , 所 以 第 二 次 调用 后 , num 的 值 变 成 了 8。35.有 以 下 程 序 :#include#includevoid fun(int *pl, int *p2, int *s) s=(int *)malloc(s

23、izeof(int);*s=*pl+*p2;free(s);main()int a=1, b=40, *q=fun(printf(“%dn“, *q);程 序 运 行 后 的 输 出 结 果 是 ( )。A.42 B.0 C.1 D.41【 解 析 】 C。 fun 函 数 功 能 是 新 开 辟 内 存 空 间 ( 地 址 s) 存 放 a 和 b的 值 ( 通 过 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, 9

24、2, “Sun“, m 98, 99;f(c);printf(”%s, %c, %d, %d, , c0.name,c0.sex, c0.score0, 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, Zh

25、ao, m, 85, 90【 解 析 】 D。 f 函 数 是 为 结 构 体 数 组 的 第 二 个 元 素 ( 结 构 体 类 型 的 元素 ) 赋 值 , 数 组 的 第 一 个 元 素 没 有 变 化 , 所 以 正 确 答 案 应 选 D。37.以 下 叙 述 中 错 误 的 是 ( )。A.可 以 用 typedef 说 明 的 新 类 型 名 来 定 义 变 量B.typedef 说 明 的 新 类 型 名 必 须 使 用 大 写 字 母 , 否 则 会 出 编 译 错 误C.用 typedef 可 以 为 基 本 数 据 类 型 说 明 一 个 新 名 称D.用 typedef

26、 说 明 新 类 型 的 作 用 是 用 一 个 新 的 标 识 符 来 代 表 已 存 在 的类 型 名【 解 析 】 B。 typedef 是 用 来 定 义 新 类 型 , 或 定 义 原 有 类 型 的 别 名 ( 新名 称 ) 。 用 typedef 说 明 的 类 型 不 是 必 须 用 大 写 , 而 是 习 惯 上 用 大 写 。38.以 下 叙 述 中 错 误 的 是 ( )。A.函 数 的 返 回 值 类 型 不 能 是 结 构 体 类 型 , 只 能 是 简 单 类 型B.函 数 可 以 返 回 指 向 结 构 体 变 量 的 指 针C.可 以 通 过 指 向 结 构 体

27、 变 量 的 指 针 访 问 所 指 结 构 体 变 量 的 任 何 成 员D.只 要 类 型 相 同 , 结 构 体 变 量 之 间 可 以 整 体 赋 值【 解 析 】 A。 函 数 返 回 值 类 型 可 以 是 简 单 类 型 和 结 构 体 类 型 。39.若 有 定 义 语 句 int b=2;, 则 表 达 式 (bmain() FILE *fp; int i, a6=1, 2, 3, 4, 5, 6;fp=fopen(“d2.dat“, “w+“);for=(i=0;i#define M 80int bbM;int proc(char str, int bb, int num)

28、int i, n=0;for(i=0; i=0unsigned i, j;for(i=0;istrj)c=strj:/*found*strj=stri+;stri=c;void main()char str81;system(“CLS“);printf(“nPlease enter a character string: “);gets(str);printf(“nknBefore sorting: n %s“, str);proc(str);printf(“nAfter sorting decendingly: n %s“, str);(1)错 误 : int proc(char str)正

29、 确 : void proc(char str)(2)错 误 : strj=stri+;正 确 : strj=stri;【 解 析 】 由 主 函 数 中 的 函 数 调 用 可 知 , 函 数 proc()没 有 返 回 值 。 因此 , “int proc(char str)”应 改 为 “void proc(char str)”;由函 数 proc()可 知 , if 语 句 块 完 成 将 字 符 串 str 中 的 第 i 个 元 素 与 第 j个 元 素 相 交 换 。 因 此 , “strj=stri+;”应 改 为 “strj=stri;”。四 、 程 序 设 计 题 (共 1

30、8 分 )请 编 写 函 数 proc(), 它 的 功 能 是 计 算 : s=(ln(1)+ln(2)+ln(3)+ln(m)的 平 方 根 。在 C 语 言 中 可 调 用 log(n)函 数 求 ln(n)。例 如 , 若 m 的 值 为 30, 则 proc()函 数 值 为 8.640500。注 意 : 部 分 源 程 序 给 出 如 下 。请 勿 改 动 main()函 数 和 其 他 函 数 中 的 任 何 内 容 , 仅 在 函 数 proc()的 花 括 号 中 填 人 所 编 写 的 若 干 语 句 。试 题 程 序 :#include #include #include

31、 double proc(int m)void main()system(“CLS“);printf(“%fn“, proc(30);答 案 :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 项 表 达 式 的 和 , 然 后 将 其 和开 平 方 并 返 回 到 主 函 数 当 中 。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报