




已阅读5页,还剩48页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2020年1月 C语言程序设计 王克刚安康学院电子与信息工程系 2020年1月 联系方式 教师 王克刚联系方式 Tel系E mail kg wang 学习探讨QQ群 91918928 2020年1月 教材及参考资料 教材 C程序设计 第三版 谭浩强著 清华大学出版社 参考资料 TheCProgrammingLanguage BrianW Kernighan DennisM Ritchie PearsonEducation C 程序设计 清华大学出版社 钱能 C程序设计语言 B W Kernighan D M Ritchie 机械工业出版社 徐宝文等译 有关的全国计算机等级考试教程 模拟题 2020年1月 学习C的忠告 掌握C程序设计唯一途径 上机实践 编程 Try 培养自我学习的能力 2020年1月 第1章 语言概述 本章主要介绍C语言程序的结构和书写规则 以及TurboCV2 0的基本操作 1 1C语言的发展简史和特点1 2 语言的特点1 3简单C程序介绍1 4运行C程序的基本操作 TurboC2 0 2020年1月 第2章程序的灵魂 算法 2 1算法的概念2 2算法的表示方法2 3结构化程序设计方法 2020年1月 什么是计算机程序 任何一项工作都需要按一定步骤进行 对一项工作完成过程的描述就称为程序 如会议程序 作业程序等 计算机是一种工具 为计算机安排工作的程序 就是计算机程序 2020年1月 一 程序设计语言 程序设计语言 是计算机能够接受 能够理解的全部指令的集合 分为机器语言 汇编语言 高级语言 专用语言 指非过程化的高级语言 和面向对象程序设计语言等几类 机器语言 是机器指令的集合 用机器语言编写的程序计算机能够直接执行 执行速度快 效率高 它的缺点是可读性差 难于编程 容易出错 程序的检查和调试都很困难 机器指令的操作码和操作数都是由 0 1 二进制代码组成的序列 汇编语言 是一种用助记符表示的程序设计语言 用户编写汇编语言源程序 由汇编程序对源程序进行汇编 翻译成目标程序 机器语言和汇编语言都属于低级语言 都是面向机器的语言 高级语言 是接近于自然语言或数学语言的程序设计语言 它彻底摆脱了依赖于机器硬件的指令系统 使用自然语言中的英语单词和数字符号编写程序 它有专门的词汇规则 语法规则 是面向应用的计算机语言 计算机可以执行的操作 2020年1月 二 程序设计过程 2020年1月 三 算法及算法描述 1 1 算法 是为解决某一特定问题而进行一步一步操作过程的精确描述 是有限步 可执行 有确定结果的操作序列 2 算法的特征 1 有穷性 每一个算法分成有限个操作步骤 每一步在有限的时间内完成 2 确定性 算法的每一步都有明确的含义 不含歧义 每一步命令只能产生唯一的一组动作 3 有效性 算法的每一步都能有效地执行 并输出确定的结果 只要有一个不可执行的操作 该算法无效 4 有零个或多个输入 可以没有输入 有一个输入 也可以有多个输入 5 有一个或多个输出 至少有一个输出 没有输出的算法是没有意义的 2020年1月 例2 1 求1 2 3 4 5 最原始方法 步骤1 先求1 2 得到结果2 步骤2 将步骤1得到的乘积2乘以3 得到结果6 步骤3 将6再乘以4 得24 步骤4 将24再乘以5 得120 这样的算法虽然正确 但太繁 改进的算法 S1 使t 1S2 使i 2S3 使t i 乘积仍然放在在变量t中 可表示为t i tS4 使i的值 1 即i 1 iS5 如果i 5 返回重新执行步骤S3以及其后的S4和S5 否则 算法结束 2020年1月 三 算法及算法描述 2 3 三种基本结构 1 顺序结构 是最基本 最简单的程序结构 在此结构内各语句块是按照它们出现的先后次序依次执行的 2 分支选择结构 首先根据给定的条件判断条件是否为真 条件为真 条件成立 选择满足条件的路径 语句块 执行 条件为假 条件不成立 选择不满足条件的路径 语句块 3 循环结构 是一种重复处理的程序结构 当满足 或不满足 某个指定的条件时反复执行语句块 循环体 否则跳出循环 执行循环体外的下一条语句 2020年1月 三 算法及算法描述 3 4 算法的描述方法 1 自然语言 指人们日常使用的语言加以简化来描述算法 自然语言通俗易懂 人们易于接受 但自然语言描述冗长 不严谨 有时有很大的随意性和歧义性 2 传统流程图 是用不同几何形状的线框 流线和文字说明来描述算法 传统流程图的常用符号及其意义见表1 1所示 3 N S流程图 又称结构化流程图 N S流程图由一系列矩形框顺序排列而成 各个矩形框只能顺序执行 每一个矩形框表示一个基本结构 矩形框内的分割线将矩形框分割成不同的部分 形成三种基本结构 顺序结构 分支结构 循环结构 表1 2所示为N S流程图的基本结构框 4 伪代码 是一种过程设计语言 PDL 它没有严格的语法规则 形式接近高级语言 用类似于PASCAL语言或C语言描述算法 2020年1月 三 算法及算法描述 4 用流程图表示算法 2020年1月 2020年1月 三 算法及算法描述 5 用N S流程图表示算法 2020年1月 2020年1月 三 算法及算法描述 6 各种表示算法的方法比较 2020年1月 四 结构化程序设计 1 结构化程序的基本特点 1 只有一个入口 2 只有一个出口 3 每一个处理框都有一条从入口到出口的路径通过 4 不包含死循环 死循环即重复进行操作的过程理论上不会终止 2 程序结构 使用单一入口和单一出口的三种基本结构即顺序结构 选择结构 循环结构组成程序的算法 3 程序设计方法 编写程序采用工程化 规范化 模块化 结构化的设计方法 其设计思想是 自顶向下 逐步求精 4 完成编程后 应该 自底向上 逐步求证 检查每条语句是否正确 检查每个程序结构的逻辑是否正确 检查每个模块的功能是否正确 直到检查整个程序是否达到问题的要求 通过编辑 编译 连接 运行 调试检查程序是否达到精度要求 2020年1月 1初识C语言程序 任何一项工作都需要按一定步骤进行 对一项工作完成过程的描述就称为程序 如会议程序 作业程序等 计算机是一种工具 为计算机安排工作的程序 就是计算机程序 计算机程序需要用某种语言描述 这些用于描述计算机程序的语言 就称为计算机语言 C语言就是一种计算机语言 计算机程序 算法 数据结构 计算机语言 2020年1月 例1 1 简单C程序 ex101 c在屏幕上输出ThisisaCprogram includevoidmain printf ThisisaCprogram n 2020年1月 注释 在屏幕上输出ThisisaCprogram C程序中的 之间的内容称为注释 是程序编写者给程序阅读者留下的一些说明 注释 以帮助阅读者理解程序 编译器不对注释进行编译 只将它们当作空白看待 本程序的第1行中的注释为 ex101 c 是说明本书编写时将这个程序保存在文件ex101 c中 返回 2020年1月 库函数与文件包含命令include include 库函数 系统提供的标准函数 程序可直接使用 使用库函数必须将其有关说明信息写入程序 为了用户方便 系统定义库函数时 把一类相关库函数的说明信息 分别写在一些文件中 本例中使用了库函数printf 其有关说明信息写在文件stdio h中 所以在程序的开始加入了 include使用C语言的库函数 要在程序前面加上类似 include的预处理命令 返回 2020年1月 main函数 任何C程序都必须有且只能有一个主函数main 它是程序的入口 也是程序的出口 其中 main是函数名 内可以包含一些参数 的内容称为函数体 其包含若干条C程序语句 不同语句之间用分号分隔 一般情况下 每个程序都由一至多个函数组成 返回 voidmain printf ThisisaCprogram n 2020年1月 语句printf ThisisaCprogram n C语言的主函数体由一些语句组成 每个语句由一个分号结束 如本例中 主函数的一个语句 printf ThisisaCprogram n 说明 函数printf是系统提供的一个库函数 printf函数的功能是向显示器输出一段信息 具体内容括在双引号内 参数中的 n 代表一个命令 输出完这行字符后换行 不是要求显示的文字 2020年1月 课堂练习 写出以下程序的运行结果 includevoidmain printf Hello n printf World n HelloWorld 2020年1月 语言程序的结构与书写规则 1 语言程序的总体结构一个完整的 语言程序 是由一个main 函数 又称主函数 和若干个其它函数结合而成的 或仅由一个main 函数构成 2020年1月 例1 3 由main 函数和1个其它函数max 构成的 语言程序 includevoidmain 主函数 intmax intx inty 对被调用函数max的声明 inta b c 定义变量a b c scanf d d 程序运行情况 6 9 max 9 2020年1月 1 函数是 语言程序的基本单位 main 函数的作用 相当于其它高级语言中的主程序 其它函数的作用 相当于子程序 2 C语言程序总是从main 函数开始执行 一个 语言程序 总是从main 函数开始执行 而不论其在程序中的位置 当主函数执行完毕时 亦即程序执行完毕 习惯上 将主函数main 放在最前头 2020年1月 函数的一般结构 任何函数 包括主函数main 都是由函数说明和函数体两部分组成 其一般结构如下 函数类型 函数名 函数参数表 函数说明部分 说明语句部分 执行语句部分 函数体部分 1 使用的语法符号约定 方括号表示可选 即可以指定 也可以缺省 省略号表示前面的项可以重复 多 含2 中选12 函数说明由函数类型 可缺省 函数名和函数参数表三部分组成 其中函数参数表的格式为 数据类型形参 数据类型形参2 2020年1月 例如 例1 3 中的函数max 其函数说明各部分为 函数类型函数名函数参数表 intmax intx inty 3 函数体在函数说明部分的下面 大括号 必须配对使用 内的部分 函数体一般由说明语句和可执行语句两部分构成 1 说明语句部分说明语句部分由变量定义 自定义类型定义 自定义函数说明 外部变量说明等组成 2020年1月 2 可执行语句一般由若干条可执行语句构成 例如 例1 4 主函数main main inta b 变量定义部分printf Inputthefirstintegernumber scanf d 函数体结构示意图 2020年1月 4 说明 1 函数体中的变量定义语句 必须在所有可执行语句之前 下面程序中变量定义语句 intmax 的位置是非法的 main intx y 变量定义语句 定义2个整型变量x y x 3 可执行的赋值语句 将3赋值给变量x y 6 可执行的赋值语句 将6赋值给变量y intmax 变量定义出现在可执行的赋值语句之后 非法 max x y x y printf max d n max 解决办法很简单 请读者自己思考 2 如果不需要 也可以缺省变量定义语句 源程序书写格式1 所有语句都必须以分号 结束 函数的最后一个语句也不例外 2 程序行的书写格式自由 既允许1行内写几条语句 也允许1条语句分写在几行上 2020年1月 例如 例1 4的主函数main 也可改写成如下所示的格式 main inta b printf Inputthefirstintegernumber scanf d 如果某条语句很长 一般需要将其分写在几行上 3 允许使用注释 C语言的注释格式为 例如 在前面的例子程序中 凡是用 和 括起来的文字 都是注释 1 和 必须成对使用 且 和 以及 和 之间不能有空格 否则都出错 2020年1月 技巧 为避免遗漏必须配对使用的符号 例如注释符号 函数体的起止标识符 花括号 圆括号等等 在输入时 可连续输入这些起止标识符 然后再在其中进行插入来完成内容的编辑 在起止标识符嵌套时 以及相距较远时 这样做更有必要 2 注释的位置 可以单占1行 也可以跟在语句的后面 3 如果1行写不下 可另起1行继续写 4 注释中允许使用汉字 在非中文操作系统下 看到的是一串乱码 但不影响程序运行 2020年1月 总结C语言程序的基本结构 重点 编译预处理命令1编译预处理命令2 函数1函数2 其中必有一个函数叫main 2020年1月 课堂练习 1 编写一个程序 在屏幕上输出以下信息 我会写C语言程序了 includevoidmain printf 我会写C语言程序了 n 2020年1月 2编写C程序的步骤 对于C语言程序来说 这一过程一般分为4步 第1步 编辑源程序 第2步 编译 第3步 链接 第4步 执行 2020年1月 整个过程如下图 filename c filename obj filename exe 出错 出错 出错 出错 调试debug 2020年1月 编译 编译就是把用C语言描述的程序翻译成计算机可以直接理解并执行的机器语言命令组成的程序 C语言的编译过程分为两个阶段 首先是编译预处理 系统要先扫描程序 处理所有预处理命令 如把文件包含命令要求的文件包含 嵌入 到程序中 然后才开始编译 编译后得到的文件称为目标文件 目标文件就是用机器语言描述的文件 C语言的目标文件的后缀为 obj 目标文件的主文件名 一般与源程序文件名相同 在编译过程中 还要对源程序中的语法和逻辑结构进行检查 编译任务是由称做编译器 compiler 的软件完成的 程序在编译过程中 也可能发现错误 这时要重新进入编辑器进行编辑 2020年1月 链接 链接是将与当前程序有关的 已经有的几个目标模块链接在一起 形成一个完整的程序代码文件 这些已经有的目标模块有 库函数 如前面使用的printf 对于大的程序 常常分成几个模块 分别编写 编辑和编译 形成不同的目标模块 经正确链接所生成的文件才是可执行文件 可执行文件的文件名后缀为 exe 有的系统为 out 完成链接过程的软件称为链接器 linker 程序在连接过程中 也可能发现错误 这时也要重新进入编辑器进行编辑 2020年1月 执行 链接后得到的可执行文件名 对操作系统来说 相当于一条命令 在操作系统提供的命令界面上打入这个命令 就可以开始执行这个程序 2020年1月 3C语言程序开发环境 目前常用的C语言的集成开发环境有TurboC2 0 DOS平台上的C编译器 gcc GUNCCompile UNIX以及Linux平台上C C 标准编译器 VisualC Windows平台上的C C 编译器 下面主要介绍TurboC 2020年1月 1 4TurboCV2 0的基本操作 1 运行一个 语言程序的一般过程2 TC的启动 退出与命令菜单3 编辑并保存一个 语言源程序4 编译 连接 单个源程序文件5 运行与查看结果6 编辑下一个新的源程序 2020年1月 1 运行一个 语言程序的一般过程 urbo 是一个集源程序编辑 编译 连接 运行与调试于一体 用菜单驱动的集成软件环境 运行一个 语言程序的一般过程 1 启动TC 进入TC集成环境 2 编辑 或修改 源程序 3 编译 如果编译成功 则可进行下一步操作 否则 返回 2 修改源程序 再重新编译 直至编译成功 4 连接 如果连接成功 则可进行下一步操作 否则 根据系统的错误提示 进行相应修改 再重新连接 直至连接成功 5 运行 通过观察程序运行结果 验证程序的正确性 如果出现逻辑错误 则必须返回 2 修改源程序 再重新编译 连接和运行 直至程序正确 6 退出TC集成环境 结束本次程序运行 2020年1月 2 TC的启动 退出与命令菜单 1 启动TurboC tc 画面演示 启动TurboC后 其主菜单条横向排列在屏幕顶端 并被激活 其中File主项成为当前项 主菜单的下面 是Edit 编辑 窗口和Message 消息 窗口 两个窗口中 顶端横线为双线显示的 表示该窗口是活动窗口 编辑窗口的顶端为状态行 其中 Line1Col1 显示光标所在的行号和列号 即光标位置 Insert 表示编辑状态处于 插入 当处于 改写 状态时 此处为空白 d NONAME C 显示当前正在编辑的文件名 显示为 NONAME C 时 表示用户尚未给文件命名 屏幕底端是7个功能键的说明 以及NumLock键的状态 显示 NUM 时 表示处于 数字键 状态 空白 表示 控制键 状态 2020年1月 2 命令菜单的使用1 按下功能键F10 激活主菜单 如果主菜单已经被激活 则直接转下一步 2 用左 右方向键移动光带 定位于需要的主项上 然后再按回车键 打开其子菜单 纵向排列 3 用上 下方向键移动光带 定位于需要的子项上 回车即可 执行完选定的功能后 系统自动关闭菜单 注意 菜单激活后 又不使用 可再按F10 Esc键关闭 返回原来状态 3 退出TurboC退出TC有两种方法 1 菜单法 File Quit 先选择File主项 再选择并执行Quit子项 2 快捷键法 Alt X 先按下Alt键并保持 再按字母键 然后同时放开 2020年1月 3 编辑并保存一个 语言源程序 1 激活主菜单 选择并执行File Load项 快捷键键 F3 2 在 LoadFileName 窗口 输入源程序文件名 文件名的输入有两种方法 直接输入和选择输入 1 直接输入按照文件名的组成字符串 逐个字符输入即可 如果是已经存在的文件 系统就在编辑窗口显示该文件的内容 可供编辑 修改 如果是新文件 则给出一个空白编辑窗口 可供输入新的源程序 如果该文件不在当前目录下 则需要冠以路径名和 或 盘符 2 选择文件 仅适用于已经存在的源程序文件 空回车 打开当前目录下 后缀为 的所有文件的文件名窗口 用上 下 左 右方向键 将光带定位于所需的文件名上 按回车键 2020年1月 3 常用编辑操作在编辑源程序过程中 随时都可以按F2键 或File Save 将当前编辑的文件存盘 然后继续编辑 这是一个良好的习惯 关于在线帮助 在任何窗口 或状态 下 按F1键激活活动窗口 或状态 的在线帮助 下一页 PageDown 返回上一页 PageUp 关闭在线帮助 返回原窗口 或状态 Esc 返回前一个在线帮助屏 Alt F1 无论在线帮助是否被激活 返回在线帮助索引 F1 激活在线帮助后 再按F1 则返回在线帮助索引 以便查询其它类别在线帮助信息 查询库函数的在线帮助信息 F1 将光标移到需要查询函数名的首字符上 然后键入 F1 即可获得该库函数的在线帮助信息 注 为简化描述 用 代表 Ctrl 键 Fn就是Ctrl Fn 下同 2020年1月 4 编译 连接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论