资源描述
19:35:42教 材 、 参 考 书 与 课 时 安 排 教 材C高 级 实 用 程 序 设 计 王 士 元 清 华 大 学 出 版 社C程 序 设 计 谭 浩 强 编 著 清 华 大 学 出 版 社 参 考 书C语 言 程 序 设 计 教 程 谭 浩 强 高 等 教 育 出 版 社 课 时 安 排授 课 : 58学 时C综 合 编 程 训 练 : 18学 时 19:35:42课程要求 课 前 请 做 好 预 习保 持 课 堂 安 静 , 头 脑 清 醒 , 思 维 活 跃认 真 、 独 立 、 按 时 完 成 并 提 交 作 业重 视 上 机 实 践 , 有 效 利 用 宝 贵 的 上 机 时 间 19:35:42第一章 C 语 言概述 C语 言 出 现 的 历 史 背 景 C语 言 的 特 点 简 单 的 C程 序 介 绍 C程 序 的 上 机 步 骤 习 题 19:35:42 以 前 的 操 作 系 统 等 系 统 软 件 主 要 是 用 汇 编 语 言编 写 的 。 由 于 汇 编 语 言 依 赖 于 计 算 机 硬 件 , 程 序的 可 读 性 和 可 移 植 性 都 比 较 差 。 为 了 提 高 可 读 性和 可 移 植 性 , 最 好 改 用 高 级 语 言 , 但 是 一 般 高 级语 言 难 以 实 现 汇 编 语 言 的 某 些 功 能 。 人 们 设 想 能否 找 到 一 种 既 具 有 一 般 高 级 语 言 特 性 , 又 具 有 低级 语 言 特 性 的 语 言 。 于 是 , 介 于 高 级 语 言 和 低 级语 言 之 间 的 c程 序 设 计 语 言 ( 简 称 c语 言 ) 就 在 迅速 发 展 起 来 。 它 适 合 于 作 为 系 统 描 述 语 言 , 既 可 以 用 来 写 系 统软 件 , 也 可 用 来 写 应 用 软 件 。 1.汇 编 语 言 的 可 读 性 和 可 移 植 性 都 比 较 差 。2.高 级 语 言 无 法 对 硬 件 进 行 直 接 操 作 。C 语言出现的历史背景 19:35:42 C不 仅 仅 是 系 统 描 述 语 言 , 而 且 是 一 种 通 用 的 程序 设 计 语 言 , C出 现 于 1972年 至 1973年 间 , 是 BCPL语 言 和B语 言 的 后 继 , 故 命 名 为 C。 ALGOL 60( 1960年 ) | CPL( 1963年 )( 剑 桥 和 伦 敦 大 学 ) |BCPL( 1967年 )( Martine Richards, 剑 桥 ) | B语 言 ( 1970年 )( Ken Thompson,贝 尔 实 验 室 ) | C语 言( Dennis Ritchie,贝 尔 实 验 室 ) ( 与 UNIX在 发 展 过 程 中 相 辅 相 成 )C 语言的发展历程 19:35:42 程 序 设 计 语 言 有 许 多 种 类 , 每 一 种 类 都有 其 特 殊 功 能 和 其 应 用 范 围 。 C语 言 之 所 以成 为 当 今 世 界 上 最 流 行 的 几 种 语 言 之 一 ,其特 点 如 下 :1、 语 言 简 洁 、 紧 凑 , 使 用 方 便 、 灵 活 , 32种 关 键字 ( 附 录 II) , 9 种 控 制 语 句 。2、 运 算 符 丰 富 , 有 34 种 运 算 符 ( 附 录 III) 。3、 数 据 类 型 丰 富 , 具 有 现 代 化 语 言 的 各 种 数 据 类型 。4、 具 有 结 构 化 的 控 制 语 句 ( 见 目 录 ) , 用 函 数 实现 程 序 的 模 块 化 , 标 准 函 数 ( 附 录 V) 。 C 语 言 的 特 点( 一 ) 19:35:425、 语 法 限 制 不 太 严 格 。6、 允 许 直 接 访 问 物 理 地 址 , 能 进 行 位 操 作 , 能 实现 汇 编 语 言 的 大 部 分 功 能 , 可 以 直 接 对 硬 件 进 行操 作 。7、 生 成 目 标 代 码 的 质 量 高 , 程 序 执 行 效 率 高 。8、 与 汇 编 语 言 相 比 , 用 编 写 的 程 序 可 移 植 性 好 。C 语 言 的 特 点( 二 ) 19:35:42C 程序 的上 机步 骤 1.分 析 问 题2.解 题 步 骤3.选 择 语 言 工 具 编码4.目 测 正 确 性5.上 机 输 入 与 编 辑6.编 译7.调 试8.与 库 函 数 等 连 接9.运 行*本 课 程 以 Turbo C 为 语 言 环 境 源 程 序exp1.c目 标 程 序exp1.obj库 函 数和 其 他 目标 程 序 开 始编 辑编 译连 接执 行有 错结 果 正 确 结 束可 执 行目 标 程 序exp1.exeY Y NN 19:35:42/*sample 1_1*/main() /*输 出 字 符 串 */printf(“H ello!n”); /*输 出 字 符 串 */ 简 单的 C程 序介 绍(一 ) 其 中 :1. main()表 示 “ 主 函 数 ” , 每 一 个 c程 序 都 必 须 有main函 数 函 数 体 由 括 起 来 。2. printf是 c语 言 中 的 输 出 函 数 , 双 引 号 中 的 字 符 串原 样 输 出 。3. “ n”是 换 行 符 。4. 每 个 语 句 最 后 要 有 一 个 分 号 ; 。 19:35:42/* Sample 1_2 */main() /*求 和 程 序 1*/int a,b,sum; /*定 义 变 量 2*/a=123;b=456; /*给 a, b分 别 赋 值 3*/sum=a+b; /*求 出 a和 b的 和 , 把 和 放 在 变 sum中 4*/printf(“sum is %dn”,sum); /*输 出 结 果 5*/ /*6*/简 单的 C程 序介 绍(二 )1. 本 程 序 的 作 用 是 求 两 个 整 数 a和 b之 和 sum。/*/表 示 注 释 部 分 , 起 说 明 的 作 用 , 不 影 响 编译 和 运 行 。 注 释 可 以 加 在 程 序 的 任 何 位 置 。2. 第 2行 是 声 明 部 分 , 定 义 变 量 a和 b;3. 第 3行 是 两 个 赋 值 语 句 ;4. 第 4行 是 求 和 ,并 保 存 值5. 第 5行 中 %d是 输 入 输 出 的 “ 格 式 字 符 串 ” , 用 来指 定 输 入 输 出 时 的 数 据 类 型 和 格 式 。 ( 见 第 4章 ) 19:35:43简 单的 C程 序介 绍(三 ) /* Sample 1_3*/int max(int x,int y) /*max子 函 数 */int z; if (xy) z=x; else z=y; return(z); /*返 回 值 放 在 z中 */main()int a,b,c; scanf(%d,%d, /*分 别 输 入 数 到 a和 b中 */ c=max(a,b); /*调 用 子 函 数 求 出 最 大 数 */ printf(max=%d,c); 19:35:431. 本 程 序 包 括 两 个 函 数 : 主 函 数 main和 被 调 用的 函 数 max。2. max函 数 的 主 要 功 能 是 将 x和 y中 的 较 大 者 的值 赋 给 变 量 z。3. return语 句 将 z的 值 返 回 给 主 调 函 数 main。 返回 值 是 通 过 max带 回 到 调 用 处 。4. scanf是 “ 输 入 函 数 ” 的 名 字 。 19:35:43小结- C程序的结构 C程 序 的 组 成 和 形 式 简 单 总 结 如 下 :1、 C程 序 由 函 数 构 成 : 一 个 程 序 至 少 包 含 一 个 函数 , 是 函 数 式 的 语 言 , 其 函 数 库 非 常 丰 富 。 容 易实 现 程 序 的 模 块 化 。2、 函 数 由 两 部 分 组 成 : 函 数 的 说 明 部 分 -包 括 函 数 名 、 类 型 、 形参 名 、 形 参 类 型 等 。 函 数 名 后 必 须 跟 一 对 圆 括 函数 参 数 可 以 没 有 。 函 数 体 -即 最 外 层 大 括 号 括 起 的 部 分 。 19:35:43函 数 体 一 般 包 括 : 变 量 定 义 : 定 义 所 要 使 用 的 变 量 的 类 型 等 。 执 行 部 分 : 由 若 干 语 句 组 成 。 *允 许 没 有 变 量 定 义 部 分 , 甚 至 允 许 没 有 执 行 部 分 , 即 一 个 空 函 数 。 如 : kong( ) 19:35:43小 结- C 程序 的结 构 3、 在 一 个 函 数 中 可 以 调 用 其 他 的 函 数 。4、 总 是 从 main函 数 开 始 执 行 。5、 书 写 格 式 自 由 。6、 每 个 语 句 和 数 据 定 义 的 后 面 必 须 有 一 个分 号 。7、 对 输 入 输 出 实 行 函 数 化 。8、 可 以 用 /* */形 式 作 注 释 。 19:35:43注 :1. main表 示 主 函 数2. 每 个 C程 序 都 必 须 有 main函 数3. 大 括 号 表 示 函 数 体 的 开 始 和 结 束4. 分 号 表 示 语 句 的 结 束5. 一 行 可 以 写 一 个 语 句 或 几 个 语 句6. C语 言 本 身 没 有 输 入 输 出 语 句 , 而 是 调 用 库 函数 来 实 现 数 据 的 输 入 输 出7. 可 以 用 /* */形 式 作 注 释 。 19:35:43习题 (1) 一 、 选 择 题 . 一 个 c程 序 的 执 行 是 从 ( )A. 本 程 序 的 main函 数 开 始 到 main函 数 结 束B. 本 程 序 的 第 一 个 函 数 开 始 到 本 程 序 的 最 后 一 个 函 数结 束C. 本 程 序 的 main函 数 开 始 到 本 程 序 的 最 后 一 个 函 数 结束D. 本 程 序 的 第 一 个 函 数 开 始 到 main函 数 结 束 .以 下 叙 述 正 确 的 是 ( )A. 在 c程 序 中 , main函 数 必 须 位 于 程 序 的 最 前 头B. C程 序 的 每 行 中 只 能 写 一 条 语 句C. C语 言 本 身 没 有 输 入 输 出 语 句D. 在 对 一 个 c程 序 进 行 编 译 的 过 程 中 , 可 发 现 注 释 中 的 拼 写 错 误 AC 19:35:433、 以 下 叙 述 不 正 确 的 是 ( )A、 一 个 c源 程 序 可 由 一 个 或 者 多 个 函 数 组 成B、 一 个 c源 程 序 必 须 包 含 一 个 main函 数C、 C程 序 的 基 本 组 成 单 位 是 函 数D、 在 c程 序 中 , 注 释 说 明 只 能 位 于 一 条 语 句 的 后 面4、 c语 言 规 定 : 在 一 个 源 程 序 中 , main函 数 的 位 置 ( )A. 必 须 在 最 开 始B. 必 须 在 系 统 调 用 的 库 函 数 的 后 面C. 可 以 任 意D. 必 须 在 最 后 DC 19:35:43 返 回习 题 ( 2) 5. 一 个 c语 言 程 序 是 由 ( )A. 一 个 主 程 序 和 若 干 子 程 序 组 成B. 函 数 组 成C. 若 干 过 程 组 成D. 若 干 子 程 序 组 成二 、 填 空 题1. C源 程 序 的 基 本 单 位 是 ( )2. 一 个 c程 序 中 至 少 包 含 一 个 ( )3. 在 一 个 c源 程 序 中 , 注 释 部 分 两 侧 的 分 界 符 分 别为 ( ) 和 ( )4. 在 c语 言 中 , 输 入 操 作 是 由 库 函 数 ( )完 成 的 , 输 出 操 作 是 由 库 函 数 ( ) 完 成 的B函 数 主 函 数 或 main函 数 /* */ printf scanf
展开阅读全文