1、专升本 C 语言历年考试题及答案(1) 程 序 设 计 语 言 的 发 展1、 机 器 语 言 2、 汇 编 语 言 3、 面 向 过 程 的 语 言 4、 面 向 对 象 的 程 序 设 计 语 言(二 ) C 程 序 设 计 语 言 的 执 行 过 程1、 编 辑 2、 编 译 3、 连 接 4、 执 行(三 ) 用 库 函 数 组 装 C 程 序例 1: 计 算 2.1715 的 正 弦 值 。#include “math.h”main( )float a; /*定 义 a 为 实 型 变 量 */a=sin(2.1715); /*调 用 sin 函 数 */printf(“%fn”,a
2、); /*调 用 printf 函 数 , 输 出 a 的 值 */详 解 :1、 在 本 例 中 用 到 的 sin 函 数 称 为 数 学 函 数 , 它 是 为 了 用 户 使 用 方 便 , 由 一 批 厂 家 开 发 编 写 的 函 数 , 并不 是 C 语 言 的 一 部 分 。 在 使 用 数 学 函 数 时 , 往 往 要 用 到 函 数 执 行 时 所 需 的 一 些 信 息 ( 例 如 宏 定 义 ) ,这 些 信 息 包 含 在 “math.h”中 。 因 此 在 程 序 开 头 用 #include “math.h”将 有 关 的 标 头 文 件 包 括 到 程 序 中
3、 。2、 一 个 C 语 言 源 程 序 文 件 由 一 个 或 多 个 函 数 组 成 , C 语 言 的 基 本 组 成 单 位 是 函 数 。 一 个 完 整 的 C 语言 程 序 有 且 只 有 一 个 称 为 主 函 数 的 main 函 数 , 程 序 总 是 从 main 函 数 开 始 执 行 , 调 用 其 它 函 数 后 再 回到 main 函 数 , 在 main 函 数 中 结 束 整 个 程 序 的 运 行 。3、 main 是 函 数 名 称 , 没 有 参 数 可 以 不 写 , 但 圆 括 号 不 能 省 略 , main( ) 后 面 有 一 对 花 括 号
4、, 花 括号 内 的 部 分 称 为 函 数 体 , main 函 数 可 以 在 程 序 的 任 意 位 置 。4、 C 规 定 每 个 语 句 以 分 号 ( ; ) 结 束 , 分 号 是 语 句 不 可 缺 少 的 组 成 部 分 , 每 行 中 可 以 写 多 条 语 句 。5、 /*与 */之 间 为 注 释 信 息 , 对 程 序 运 行 结 果 不 发 生 影 响 , 也 不 被 编 译 , 注 释 说 明 可 以 放 在 语 句 的 任 意 位置 。6、 float a; 此 语 句 是 把 a 定 义 为 一 个 实 型 变 量 。7、 C 语 言 本 身 没 有 输 入
5、、 输 出 语 句 , 本 例 使 用 prinft 函 数 输 出 数 据 。 prinft 函 数 的 括 号 内 包 括 两部 分 内 容 : 双 引 号 内 的 部 分 、 双 引 号 外 的 部 分 。 双 引 号 内 的 部 分 是 “格 式 字 符 串 ”, 用 于 指 定 输 出 双引 号 外 的 变 量 的 打 印 格 式 。 此 例 中 双 引 号 中 有 一 个 ”%f”, 它 是 输 出 一 个 保 留 小 数 点 后 6 位 数 字 的 格式 字 符 , 小 数 点 前 的 位 数 不 指 定 。专升本 C 语言历年考试题及答案二 、 练 习(一 ) 选 择 题1、
6、以 下 叙 述 正 确 的 是 _C_。( A) 在 C 程 序 中 , main 函 数 必 须 位 于 程 序 的 最 前 面( B) C 程 序 的 每 行 中 只 能 写 一 条 语 句( C) C 语 言 本 身 没 有 输 入 输 出 语 句( D) 在 对 一 个 C 程 序 进 行 编 译 的 过 程 中 , 可 发 现 注 释 中 的 拼 写 错 误2、 C 语 言 规 定 : 在 一 个 源 程 序 中 , main 函 数 的 位 置 _C_。( A) 必 须 在 最 开 始( B) 必 须 在 系 统 调 用 库 函 数 的 后 面( C) 可 以 任 意( D) 必
7、须 在 最 后3、 一 个 C 语 言 程 序 是 由 _B。( A) 一 个 主 程 序 和 若 干 子 程 序 组 成( B) 函 数 组 成( C) 若 干 过 程 组 成( D) 若 干 子 程 序 组 成4、 一 个 C 程 序 的 执 行 是 从 A_。( A) 本 程 序 的 main 函 数 开 始 , 到 main 函 数 结 束( B) 本 程 序 文 件 的 第 一 个 函 数 开 始 , 到 本 程 序 文 件 的 最 后 一 个 函 数 结 束( C) 本 程 序 的 main 函 数 开 始 , 到 本 程 序 文 件 的 最 后 一 个 函 数 结 束( D) 本
8、 程 序 文 件 的 第 一 个 函 数 开 始 , 到 本 程 序 main 函 数 结 束5、 以 下 叙 述 不 正 确 的 是 _D_。( A) 一 个 C 源 程 序 可 由 一 个 或 多 个 函 数 组 成( B) 一 个 C 源 程 序 必 须 包 含 一 个 main 函 数( C) C 程 序 的 基 本 组 成 单 位 是 函 数( D) 在 C 程 序 中 , 注 释 说 明 只 能 位 于 一 条 语 句 后 面(二 ) 填 空 题 : 1、 一 个 C 源 程 序 中 至 少 包 括 一 个 _main 函 数 _。2、 在 一 个 C 源 程 序 中 , 注 释
9、部 分 两 侧 的 分 界 符 分 别 为 _/*_和 _*/_。专升本 C 语言历年考试题及答案第 二 章 数 据 描 述 与 基 本 操 作一 、 主 要 知 识 点(一 ) C 的 基 本 数 据 类 型 节 短 整 型 ( short)整 型 整 型 (int)基 本 类 型 字 符 型 (char) 长 整 型 (long)实 型 ( 浮 点 型 ) 单 精 度 型 (float)枚 举 类 型 双 精 度 型 (double)数 据 类 型 构 造 类 型 数 组 类 型结 构 类 型 (struct)指 针 类 型 共 用 类 型 (union)空 类 型 (void) 文 件
10、类 型 (FILE)(二 ) 常 量 和 符 号 常 量1、 常 量 定 义 : 在 程 序 运 行 过 程 中 , 其 值 不 能 被 改 变 的 量 称 为 常 量 。 常 量 常 区 分 不 同 的 类 型 , 如 12、 0、 -3 为 整 型 常 量 , a、 D为 字 符 常 量 。2、 符 号 常 量 : 用 一 个 标 识 符 代 表 一 个 常 量 的 , 称 为 符 号 常 量 , 即 标 识 符 形 式 的 常 量 。 常 量 不 同 于 变 量 ,它 的 值 在 作 用 域 内 不 能 改 变 , 也 不 能 再 被 赋 值 。例 1: 已 知 商 品 的 单 价 及
11、数 量 求 商 品 的 总 价 值 。#define PRICE 30main( )int num=10,total; total=num*PRICE;printf(“total=%d”,total);输 出 结 果 : total=300详 解 :1、 程 序 中 用 #define 命 令 行 定 义 PRICE 代 表 常 量 30, 此 后 凡 在 此 文 件 中 出 现 的 PRICE 都 代 表专升本 C 语言历年考试题及答案30,可 以 和 常 量 一 样 进 行 运 算 。2、 符 号 常 量 不 同 于 变 量 , 它 的 值 在 其 作 用 域 内 不 能 改 变 , 也
12、不 能 再 被 赋 值 。 如 再 用 以 下 赋 值 语 句 给PRICE 赋 值 : PRICE=40;是 错 误 的 。(三 ) 变 量1、 变 量 定 义 : 其 值 可 以 改 变 的 量 称 为 变 量 。2、 标 识 符 的 命 名 规 范和 其 它 高 级 语 言 一 样 , 用 来 标 识 变 量 名 、 符 号 常 量 名 、 函 数 名 、 数 组 名 、 类 型 名 、 文 件 名 的 有 效 字 符 序 列称 为 标 识 符 , 语 言 中 的 标 识 符 命 名 规 范 为 : 变 量 名 只 能 由 字 母 、 数 字 和 下 划 线 三 种 字 符 组 成 ,
13、且 第 一 个 字 符 必 须 为 字 母 或 下 划 线 。 C 语 言 中 标 识 符 的 长 度 ( 字 符 个 数 ) 无 统 一 规 定 , 随 系 统 而 不 同 。 许 多 系 统 ( 如 IBM PC 的MS C) 取 前 7 个 字 符 , 假 如 程 序 中 出 现 的 变 量 名 长 度 大 于 7 个 字 符 , 则 只 有 前 面 7 个 字 符 有 效 , 后面 的 不 被 识 别 。 语 言 有 32 个 关 键 字 ( 例 如 if、 else、 while) 它 们 已 有 专 门 含 义 , 不 应 用 采 用 与 它 们 同 名 的 变 量名 。 C 语
14、言 将 大 写 字 母 和 小 写 字 母 认 为 是 两 个 不 同 字 。例 2: 在 下 列 符 号 中 , 可 以 选 用 哪 些 作 变 量 名 ? 哪 些 不 可 以 ? a3B 3aB +a -b *x $ _b5_ if next_ day e_2 OK? integer MAXNUMBER i*j答 案 : _b5_ a3B next_ day e_2 MAXNUMBER 可 作 变 量 名 , 其 它 的 作 变 量 名 不 可 以 。详 解 : MAXNUMBER 可 作 变 量 名 。 习 惯 上 符 号 常 量 名 用 大 写 , 变 量 名 用 小 写 以 示 区
15、别 , 但 大 写 字 母 作 变 量 名并 无 错 误 。 if、 integer 属 于 保 留 字 , 保 留 字 不 可 作 变 量 名 。 +a -b *x $ OK? i*j 不 可 作 变 量 名 , 因 为 变 量 名 只 能 由 字 母 、 数 字 和 下 划 线 三 种 字 符组 成 。 3aB 不 可 作 变 量 名 , 因 为 变 量 名 的 第 一 个 字 母 必 须 为 字 母 或 下 划 线 。(四 ) 整 型 数 据1、 整 型 常 量整 型 常 量 即 整 常 数 。 C 语 言 整 常 数 可 用 以 下 三 种 表 示 形 式 。 十 进 制 表 示 。
16、如 231、 -56.478专升本 C 语言历年考试题及答案 八 进 制 表 示 。 以 0 开 头 的 数 是 八 进 制 数 。 如 0123 即 ( 123) 8=1*82+2*81+3*80=64+16+3=83。 十 六 进 制 表 示 。 以 0x 开 头 的 数 是 16 进 制 。 如 0x123 即 ( 123)16=1*162+2*161+3*160=256+32+3=291。2、 整 型 变 量整 型 变 量 分 为 : 基 本 型 、 短 整 型 、 长 整 型 、 和 无 符 号 型 四 种 。 基 本 型 , 以 int 表 示 短 整 型 , 以 short in
17、t 表 示 或 以 short 表 示 长 整 型 , 以 long int 表 示 , 或 以 long 表 示 无 符 号 型 , 存 储 单 元 中 全 部 二 进 制 位 (bit)用 作 存 放 数 本 身 , 而 不 包 括 符 号 。 无 符 号 型 中 又 分 为 无 符号 整 型 、 无 符 号 短 整 型 和 无 符 号 长 整 型 , 分 别 以 unsigned int 、 unsigned short 和 unsigned long 表示 。3、 整 型 数 据 的 取 值 范 围C 标 准 没 有 具 体 规 定 各 类 型 所 占 内 存 字 节 数 , 各 种
18、机 器 处 理 上 有 所 不 同 , 以 IBM PC 为 例 , 数 的范 围 如 表 2.1 所 示 。表 2.1所 占 位 数 数 的 范 围Int 16 -32768 32767 即 -215 ( 215-1)shortint 16 -32768 32767 即 -215 ( 215-1)Longint 32 -2147483648 2147483647 即 -231 ( 231-1)Unsignedint 16 0 65535 即 0 ( 216-1)Unsigned short 16 0 65535 即 0 ( 216-1)Unsigned long 32 0 429496729
19、5 即 0 ( 232-1)4、 整 型 常 量 的 分 类 一 个 整 常 量 , 如 果 其 值 在 -32768 32767 范 围 内 , 认 为 它 是 int 型 , 它 可 以 赋 值 给 int 型 和long int 型 变 量 。 一 个 整 常 量 , 如 果 其 值 超 过 了 上 述 范 围 , 而 在 -2147483648 2147483647 范 围 内 , 则 认 为 它 是long int 型 , 可 以 将 它 赋 值 给 一 个 long int 型 变 量 。 如 果 某 一 计 算 机 系 统 的 C 版 本 确 定 的 short int 与 in
20、t 型 在 内 存 中 占 据 的 长 度 相 同 , 则 一 个 int型 的 常 量 出 同 时 一 个 short int 型 常 量 。 常 量 中 无 unsigned 型 。 但 一 个 非 负 值 的 整 常 量 可 以 赋 值 给 unsigned 型 整 变 量 , 只 要 它 的 范 围 不超 过 变 量 的 取 值 范 围 即 可 。 例 如 : 将 50000 赋 给 一 个 unsigned int 型 变 量 是 可 以 的 , 而 将 70000 赋专升本 C 语言历年考试题及答案给 它 是 不 行 的 ( 溢 出 ) 。 在 一 个 整 常 量 后 面 加 一
21、个 字 母 l 或 L, 则 认 为 是 long int 型 常 量 。(五 ) 实 型 数 据1、 实 型 常 量实 数 在 C 语 言 中 又 称 为 浮 点 数 。 实 数 有 两 种 表 示 形 式 : 十 进 制 形 式 。 它 由 数 字 和 小 数 点 组 成 ( 注 意 必 须 有 小 数 点 ) 。 例 如 : 0.123、 .123、 123.0、 0.0都 是 十 进 制 数 形 式 。 指 数 形 式 。 如 123.56e4 或 123.56E4 都 代 表 123.56*104。 但 字 母 e( 或 E) 之 前 必 须 有 数 字 ,e 后 面 指 数 必 须
22、 为 整 数 。 例 如 : e3、 2.1e3.5、 .e3、 e 等 都 不 是 合 法 的 指 数 形 式 。例 3: 下 面 四 个 选 项 中 , 均 是 不 合 法 的 浮 点 数 的 选 项 是 _。( A) 160. 0.12 e3 ( B) 123 2e4.2 .e5( C) -.18 123e4 0.0 ( D) -.e3 .234 1e3答 案 : B详 解 : 160. 0.12 -.18 123e4 0.0 .234 1e3 是 实 数 的 十 进 制 形 式 或 指 数 形 式 。 e3 2e4.2 .e5 -.e3 不 是 正 确 的 指 数 形 式 。 因 为
23、正 确 的 字 母 e( 或 E) 之 前 必 须 有 数 字 ,e 后 面 指 数 必 须 为 整 数 。 对 于 数 据 表 示 形 式 .e5 以 及 -.e3, e 前 的 .与 -.不 是 有 效 的 数 字 表 示 形 式 。 123 是 整 数 形 式 。2、 实 型 变 量C 实 型 变 量 分 为 单 精 度 ( float 型 ) 和 双 精 度 ( double 型 ) 两 类 。在 一 般 系 统 中 , 一 个 单 精 度 型 数 据 在 内 存 中 占 4 个 字 节 ( 32 位 ) , 一 个 double 型 数 据 占 8 个 字节 。 一 个 单 精 度
24、型 变 量 能 接 收 7 位 有 效 数 字 , 一 个 double 型 变 量 能 接 收 17 位 有 效 数 字 , 数 值 的 范 围随 机 器 系 统 而 异 。 在 IBM PC 中 , 单 精 度 实 数 的 范 围 约 为 ( 3.4E10-38 3.4E1038) , 双 精 度 实 数 的 范围 约 为 (1.7E10-308 1.710308)。例 4:main( ) float a;a=111111.666666;printf(“%f”,a);专升本 C 语言历年考试题及答案输 出 结 果 : 111111.640621详 解 : 一 个 实 型 常 量 不 分 f
25、loat 型 和 double 型 。 一 个 实 型 常 量 可 以 赋 给 一 个 float 型 或 double 型 变 量 。根 据 变 量 的 类 型 截 取 实 型 常 量 中 相 应 的 有 效 位 数 字 。 由 于 float 型 变 量 只 能 接 收 7 位 有 效 数 字 , 因 此 在 把 111111.666666 赋 给 a 时 , a 只 接 收 了111111.6, 由 于 输 出 函 数 printf 中 的 %f 格 式 表 示 输 出 小 数 点 后 的 6 位 小 数 , 所 以 111111.6 后 的40621 属 于 无 意 义 数 字 。 如
26、 果 a 改 为 double 型 , 则 能 全 部 接 收 上 述 12 位 数 字 。(六 ) 字 符 型 数 据1、 字 符 常 量 : 普 通 形 式 的 字 符 常 量 : 用 引 号 ( 即 撇 号 ) 括 起 来 的 一 个 字 符 , 如 a、 D、 $、 ?等 都 是 字 符 常量 。 转 义 符 : 以 “”开 头 的 字 符 序 列 。常 用 的 以 “”开 头 的 特 殊 字 符 见 表 2.2表 2.2字 符 形 式 功 能n 换 行t 横 向 跳 格v 竖 向 跳 格b 退 格r 回 车f 走 纸 换 页 反 斜 杠 字 符 单 引 号 字 符ddd 1 到 3
27、位 8 进 进 制 所 代 表 的 字 符xhh 1 到 2 位 16 进 制 数 所 代 表 的 字 符例 5: 若 有 说 明 语 句 : char c=729;则 变 量 c_。( A) 包 含 1 个 字 符 ( B) 包 含 2 个 字 符( C) 包 含 3 个 字 符 ( D) 说 明 不 合 法答 案 : D详 解 : ”后 可 以 有 1 到 3 位 8 进 制 所 代 表 的 字 符 , 本 题 中 ”后 的 ”72”属 于 8 进 制 所 代 表 的 字 符 ,而 ”9”则 不 属 于 8 进 制 位 所 代 表 的 字 符 , 则 729中 包 含 了 两 个 字 符
28、常 量 72和 9。 而 字 符 常 量 是 用引 号 ( 即 撇 号 ) 括 起 来 的 一 个 字 符 , 所 以 答 案 为 D。专升本 C 语言历年考试题及答案2、 字 符 变 量字 符 变 量 是 用 来 存 放 字 符 常 量 的 存 储 单 元 。3、 字 符 数 据 在 内 存 中 的 存 储 形 式将 一 个 字 符 常 量 存 放 到 一 个 字 符 变 量 中 , 实 际 上 并 不 是 把 该 字 符 本 身 存 放 到 内 存 单 元 中 去 , 而 是 将 该 字 符的 相 应 的 ASCII 码 值 存 放 到 存 储 单 元 中 去 。例 6: 将 小 写 字
29、母 转 换 成 大 写 字 母main( ) char c1=a;c1=c1-32;printf(“%c”,c1);输 出 结 果 : A详 解 : a的 ASCII 码 为 97, 所 以 c1=a;语 句 的 功 能 是 把 97 赋 值 给 了 c1。 c1=c1-32;语 句 的 功 能 是 把 97-32 的 值 65 赋 值 给 c1。 printf 函 数 中 的 %c 格 式 表 示 以 字 符 方 式 输 出 。 ASCII 码 值 为 65 的 字 符 为 A, 所 以 运 行 结 果 为 :A(七 ) 字 符 串 常 量字 符 常 量 是 用 一 对 双 引 号 括 起
30、来 的 零 个 或 多 个 字 符 序 列 。 C 规 定 以 字 符 0作 为 字 符 串 结 束 标 志 。所 以 字 符 串 ”a”实 际 上 包 含 2 个 字 符 : a、 0, 因 此 下 面 的 语 句 :c=”a”;把 一 个 串 赋 值 给 一 个 字 符 变 量 c 是 错 误 的 。例 7: 下 面 不 正 确 的 字 符 串 常 量 是 _。( A) abc ( B) ”1212” ( C) ”0” ( D) ” ”答 案 : A详 解 : abc是 用 单 引 号 引 来 的 , 所 以 abc不 是 正 确 的 字 符 串 常 量 。(八 ) 算 术 运 算 符 和
31、 算 术 表 达 式1、 基 本 算 术 运 算 符 C 语 言 中 有 5 个 基 本 算 术 运 算 符 : ( 加 法 运 算 符 。 如 3+5、 +3)专升本 C 语言历年考试题及答案 ( 减 法 运 算 符 。 如 5-2、 - ) ( 乘 法 运 算 符 , 如 3*5) ( 除 法 运 算 符 , 如 5/3, 5.0/3) ( 求 余 运 算 符 , 要 求 %两 侧 均 为 整 型 数 据 )例 8: 在 C 语 言 中 , 要 求 运 算 数 必 须 是 整 型 的 运 算 符 是 _。( A) / ( B) + ( C) ! = ( D) %答 案 : D详 解 : 对
32、 于 %运 算 符 来 说 , 要 求 两 侧 均 为 整 型 数 据 , 所 以 表 达 式 3.5%2 与 3%2.0 是 错 误 的 。例 9: 写 出 下 列 程 序 的 输 出 结 果main( ) printf(“%d,%dn”,5/3,5%3);printf(“%d,%dn”,-5/-3,-5%-3);printf(“%d,%dn”,-5/3,-5%3);printf(“%d,%dn”,5/-3,5%-3);输 出 结 果 :1, 21, -2-1, -2-1, 2详 解 : 两 个 同 号 整 数 相 除 时 结 果 为 正 整 数 , 如 5/3、 -5/-3 的 结 果 值
33、 为 1。 两 个 异 号 整 数 相 除 时 结 果为 负 整 数 , 多 数 机 器 采 取 “向 零 取 整 ”法 , 即 -5/-3=-1, 5/-3=-1, 但 如 果 参 加 运 算 的 两 个 数 中 有 一 个 数为 实 数 时 结 果 为 实 数 。 对 于 求 余 ( %) 运 算 , 运 算 结 果 与 第 一 个 数 的 符 号 相 同 。 优 先 级 别 : 先 *、 /、 %后 +、 运 算 量 : 双 元 运 算 量 , 前 后 必 须 为 整 数 。 左 右 结 合 性 : 自 左 至 右 参 预 运 算 。2、 自 加 自 减 运 算 符 C 语 言 中 有
34、4 种 形 式 的 自 加 自 减 运 算 符 : i (先 使 i 加 1 后 使 用 )专升本 C 语言历年考试题及答案i (先 使 用 后 使 i 加 1) i (先 使 i 减 1 后 使 用 )i (先 使 用 后 使 i 减 1) 优 先 级 别 : 高 于 算 术 运 算 。例 10: 若 x 和 n 均 是 int 型 变 量 , 且 x 和 n 的 初 值 均 为 5, 则 计 算 表 达 式 后 x 的 值 为 _, n的 值 为 _。x+=n+答 案 : 10 6详 解 : 根 据 优 先 级 别 选 运 算 表 达 式 n+, 因 为 n+是 后 缀 表 示 形 式 ,
35、 所 以 n 先 参 预 运 算 , 再 运 算表 达 式 x+=n, 则 x 为 10, 最 后 n 自 加 为 6。例 11:main( ) int x,y,m,n;x=2;y=2m=x+*5;n=+y*5;printf(“%d,%d,%d,%d”,x,y,m,n);输 出 结 果 : 3,3,10,15详 解 : 对 于 后 缀 来 说 是 先 使 用 后 运 算 , 所 以 m 的 值 为 x 在 自 加 以 前 的 2*5 得 10 赋 值 给 m 后 ,x 自 加 变 为 3。 对 于 前 缀 来 说 是 先 运 算 后 使 用 , 所 以 m 的 值 为 x 在 自 加 以 后
36、的 3*5 得 15 赋 值 给 n。 运 算 量 : 单 元 运 算 量 , 此 运 算 量 必 须 为 变 量 , 所 以 表 达 式 5+、 (x+y)+是 错 误 的 。 左 右 结 合 性 : 自 右 至 左 参 预 运 算 。(九 ) 关 系 运 算1、 C 语 言 提 供 的 关 系 运 算 符 有 :( 大 于 ) =( 大 于 或 等 于 ) ( 小 于 ) =( 小 于 或 等 于 ) =( 等 于 ) 是 !=( 不 等 于 )2、 优 先 级 别 : 关 系 运 算 符 的 优 先 级 别 低 于 纯 算 术 类 , 高 于 赋 值 类 。 后 两 个 的 优 先 级 小 于 前 四 个 。 如 表 达式 a+bc+d 完 全 等 价 于 表 达 式 (a+b)(c+d)。