C语言程序设计课件.ppt_第1页
C语言程序设计课件.ppt_第2页
C语言程序设计课件.ppt_第3页
C语言程序设计课件.ppt_第4页
C语言程序设计课件.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计 陈易明E mail chenym 参考书K R CPROGRAMMINGLANGUAGE 课时安排理论课 32学时上机训练 16学时考核成绩平时考勤10 上机报告20 期末考试70 参考书与课时安排 课程要求 课后请复习保持课堂安静 积极回答问题认真 独立 按时完成并提交作业重视上机实践 有效利用上机时间 第一章C语言概述 C语言发展历史C语言基本特点C语言程序结构编译和运行程序 1 1C语言发展历史程序设计语言的发展 CPU指令系统 由0 1序列构成的指令码组成如 10000000加10010000减 用助记符号描述的指令系统如ADDA B 面向机器的语言 程序设计是数据被加工的过程 程序设计关键是定义类 并由类派生对象 高级语言 面向开发者的语言以接近人类语言的形式来表现 具有标识符 关键字 数据类型等 按一定的规则组成程序代码 便于开发和维护 可读和开发性大大增强 C语言的发展史 1972年美国贝尔实验室的Dennis M Ritchie设计出C语言 并用其将UNIX系统全部改写并实现 C语言的设计目的是为描述和实现UNIX操作系统提供一种工具语言由于 语言的强大功能和良好的可移植性 C语言先后被移植到各种大 中 小和微型计算机上 并得到了广泛的使用 成为当代最优秀的程序设计语言之一 C语言的前生 1960年出现的Algol60 它是一种面向问题的高级语言 离硬件比较远 不适合用来编写系统程序 1963年英国剑桥大学推出了 组合编程语言 CombinedProgrammingLanguage CPL 它在Algol60的基础上更接近于硬件 但规模较大 难以实现 因此 1967年剑桥大学的MatinRichards对CPL进行了简化 提出了BCPL BasicCombinedProgrammingLanguage 语言 一切从一个叫 SpaceTravel 的电子游戏开始 C语言的创世纪 1963年 美国麻省理工学院MIT 贝尔实验室和通用电器公司决定联合开发一个操作系统MULTICS 其设计目标是 公用计算服务系统 那时 计算机还很昂贵 主要是安装在一些政府部门 企业和科研机构 一般的家庭买不起 但有时人们又想使用计算机来完成一些计算任务 所以该项目的出发点是想提供一种计算服务 在城市里布置一台计算机主机 然后用户在自己的家里 使用终端并且通过电话线来接入这台主机 终端很便宜 只有显示器 键盘和通信模块 每个家庭都买得起 他们使用终端来连接计算机 然后像使用水 电 煤气等生活资源那样来使用这台计算机的计算资源 并缴纳相应的费用 这样一来 在主机上必须运行一个操作系统 来对整个系统的资源进行管理 MULTICS系统非常庞大 复杂 它的研制难度远远超出了人们的预料 因此 贝尔实验室和通用电器公司先后退出了这个项目 1969年 当贝尔实验室退出该项目后 它的一个研究员KenThompson在MULTICS操作系统上编写了一个名为 太空旅行 spacetravel 的游戏 模拟了一个飞行员驾驶着一艘宇宙飞船在太阳系中遨游 并在各个星体上着陆 后来 由于无法继续访问MULTICS操作系统 他就在贝尔实验室里找了一台没有人使用的PDP 7计算机 想把游戏程序移植到这台机器上 但是 当时计算机硬件所能执行的都是用机器语言来描述的指令 而对于不同类型的计算机来说 它们的机器语言是不一样的 所以在MULTICS系统上运行的程序 不能直接把它搬到PDP 7这种类型的计算机上去运行 因此 Thompson就和贝尔实验室的另外一名研究员DennisRitchie 他们两个人一起 在另外一台GE 635计算机上 利用它的操作系统 即GECOS所提供的一个交叉汇编器 把空间旅行游戏用PDP 7的汇编语言重新编写了一遍 并且生成PDP 7的机器语言指令 然后用穿孔纸带的形式把它转移到了PDP 7上面 这样 就可以玩了 Question 为什么不直接在PDP 7这台计算机上编程呢 而需要使用第三台机器GE635呢 原因很简单 这台PDP 7计算机之所以没人来用 是因为它是一台光秃秃的计算机 只有硬件而没有任何软件 连汇编程序都没有 这样 人们就没有办法在上面编程 如果实在想编程的话 只能直接使用机器语言 但机器语言都是一些0 1字符串 太难懂了 所以没有人愿意使用它 Question 为什么PDP 7计算机只是硬件没有软件 当时 计算机水平还很落后 很多研究小组申请项目研制计算机 仅仅是针对硬件架构 当计算机做好后 测试性能后项目组的任务就完成了 然后再研制更新的计算机 如果有需要 则用机器语言编写程序 然后在纸带上打上孔 让计算机读入 有孔 无孔 分别代表1 0 Question 为什么不直接在GE635上玩游戏呢 答案 一个字 贵 两个字 很贵 三个字 非常贵 玩一小时游戏花费75美元 当时价值25桶石油 现在按70美元 桶石油算 约5250美元 后来 Thompson觉得这台PDP 7计算机空在那里有点可惜 所以就和Ritchie等人开始为它编写一个新的操作系统 也就是说 在硬件的基础上 再给它增加一些软 这样 这台机器就能够用起来 就能做更多的事情 他们先是写好了这个操作系统的文件系统和一组基本的软件工具 然后再编写了一个PDP 7汇编语言的编译器 有了这些软件工具后 就能直接在PDP 7上编程了 到了1970年 这个操作系统的基本元素都已经完成了 他们给系统起了一个名字 也就是UNIX 到了1970年的夏季 研究小组得到了一台新的 功能更强大的机器PDP 11 因此需要把UNIX系统从PDP 7移植到PDP 11上面去这项工作非常的烦琐 因为整个系统都是用汇编语言来编写的 需要把每一条PDP 7汇编语言指令都转换为相应的PDP 11汇编语言指令 工作量非常大 更重要的是 这种移植工作是一次性的 如果以后又来了一台新的机器 那么整个移植工作又得重新来过 所以这是一个很大的问题 为解决这个问题呢 研究小组就开始考虑用某种高级语言来重写整个系统 以提高系统的可移植性和可懂性 Thompson为了提高UNIX操作系统的可移植性 想要用某种高级语言来重写整个系统 但是采用哪一种高级语言来做这件事呢 他的想法是自己去设计一种高级语言 他以BCPL语言为基础 又作了进一步的简化 设计出很简单而且很接近硬件的B语言 这个名称取自于BCPL的第一个字母 但是B语言过于简单 是一种没有数据类型的语言 功能很有限 因此 当他试图用B语言来重写UNIX操作系统时 效果并不太好 到了1972年 Ritchie在B语言的基础上又设计出了C语言 这个名称取自于BCPL的第二个字母 C语言既保持了BCPL和B语言的精炼 接近硬件等优点 又克服了它们过于简单 数据无类型等缺点 所以很快就成为研究小组内部的首选编程语言 后来 Ritchie和Thompson两个人合作 把整个UNIX系统用C语言重新写了一遍 这样 以后再需要移植的时候 就方便多了 大部分的系统代码都无需改动 1977年 出现了不依赖于具体机器的C语言编译器 使得把一个C程序从一台机器移植到另一台机器上所需要的工作大大地简化了 这就推动了UNIX操作系统迅速地在各种类型的机器上得以实现 反过来 随着UNIX系统日益广泛的使用 C语言也得到了迅速地推广 所以说 C语言和UNIX系统关系非常密切 在发展过程中它们是相辅相成的 C语言的发展史告诉我们 1 游戏是推动计算机软件技术发展的重大推动力 2 玩游戏是很耗钱或费时间的 3 适量游戏有助于身心健康 并能极大促进电脑水平的提高 Ritchie和Thompson在开发UNIX 很贵的游戏机 绝对的 发烧级 接受美国国家技术勋章 游戏玩家的终极梦想传说中的神器 声望 100 000 Thompson 左 和Ritchie 中 于1999年接受当时美国总统克林顿授予的国家技术勋章 一九七八年由美国电话电报公司 AT T 贝尔实验室正式发表了 语言 B W Kernighan和D M Ritchit合著了著名的 THECPROGRAMMINGLANGUAGE 一书 通常简称为 K R 也有人称之为 K R 标准 但是 在 K R 中并没有定义一个完整的标准C语言 后来由美国国家标准协会 AmericanNationalStandardsInstitute 在此基础上制定了一个C语言标准 于一九八三年发表 通常称之为ANSIC C语言标准 语言版本 目前最流行的 语言有以下几种 MicrosoftC或称MSC BorlandTurboC或称TurboC AT TC这些 语言版本都实现了ANSIC标准 并在此基础上各自作了一些扩充 使之更加方便 完美 我们学习的是TurboC C语言的基本特点 1 C语言被称为 高级语言中的低级语言 这样说不是指它的功能差或难于使用 而是指它具有许多汇编语言等低级语言才具备的功能 C语言允许直接访问物理地址 能进行位操作 能实现汇编语言的大部分功能 可以直接对硬件进行操作 所以C语言在系统设计十分有效 过去系统软件只能用汇编语言编写 使用C语言可以减轻程序的负担 提高效率 写出来程序也更具有可移植性 计算机的层次 硬件 Hardware 操作系统 OS 应用程序 Application 应用平台 基于平台的应用程序 低级语言的地盘 高级语言的地盘 C语言的地盘 C语言的基本特点 2 C语言简洁 紧凑 使用方便 灵活 ANISC语言只有32个关健字 9种控制语句 我们学习的TC扩充了11个关键字 一共也才43个关键字 C语言的基本特点 3 运算符丰富 共有34种 C把括号 赋值 逗号等都作为运算符处理 从而使C的运算类型极为丰富 可以实现其他高级语言难以实现的运算 4 具有结构化的控制语句 5 语法限制不太严格 程序设计自由度大 6 生成目标代码质量高 程序执行效率高 C语言的基本特点 7 与汇编语言相比 用C语言写的程序可移植性好 8 C语言是程序员的语言 是为专业程序员设计的语言 它实现了程序员的期望 很少限制 程序设计自由度大 方便的控制结构 独立的函数 紧凑的关键字集合和较高的执行效率 缺点 语法限制不太严 编译器不进行太多的错误检查 程序员在编程如果不注意的话 很容易出现编译通过但程序出错的现象 第一个C语言程序 学习任一计算机高级语言的最佳途径都是编程 对于任一计算机语言 编写的第一个程序都是输出一个字符串 出于对K R的敬意 一般讲解第一个程序进都是选择K R的 CPROGRAMMINGLANGUAGE 一书中的第一个例子 打印 HelloWorld 来进行讲解 第一个C语言程序 如何利用C语言在屏幕上显示出如下单词 HelloWorld 实现过程 1 编写源程序 2 编译 将源程序编译成目标文件 obj 3 将目标文件链接成可执行文件 exe 4 运行可执行文件 第一个C语言程序 在屏幕上显示HelloWorld include stdio h main printf helloWorld n 1 编写源程序 存储为helloworld c 内容如下 功能注释 在屏幕上显示HelloWorld include stdio h 编译预处理 告诉编译程序在本程序包含标准输入输出库函数 main 主函数 无参数 函数头printf HelloWorld n 调用库函数printf 将Helloworld显示到屏幕上 n为换行符 函数尾 编译预处理 在C源程序中加入一些 预处理命令 可以改进程序设计环境 提高编程效率 预处理命令不是C语言本身的组成部分 不能直接对其进行编译 必须在编译之前 先对这些特殊的命令进行相应的处理 编译预处理 C提供的预处理功能主要有三种 1 文件包含2 宏定义3 条件编译 所有的预处理命令 都是以 开头的 1 文件包含 include 文件名 文件名指的是外部的库函数名或源程序名 库函数是由系统建立的具有一定功能的函数的集合 库函数中存放同类函数的名称和对应的目标代码 只要用了 include 库函数名 就可以调用库函数中的函数 编译预处理 include stdio h 可调用各种输入输出函数 包括 printf scanf getchar putchar fopen fclose fprintf fsacnf fseek fread fwrite等 C语言程序的基本格式 1 每一个C程序 都由函数和变量组成 函数包含若干用于实现指定操作的语句 变量在计算过程中存储有关的值 2 函数可任意命名 但每一个C程序中都必须并且只能有一个名为main的主函数 C程序都是从main函数开始执行 include stdio h main printf helloWorld n C语言程序的基本格式 3 函数必须先定义 后使用 定义函数时在函数名后加一对圆括号将变量括起来 4 由一对花括号括起构造函数的语句 称为函数体 花括号后不加分号 main printf helloWorld n C语言程序的基本格式 5 每一条语句的用分号 做为结束 说明 在以下三种情况下不允许有分号 a 预处理语句后面不使用分号b 所定义的函数的名称后面不使用分号c 在右花括号 后面不使用分号 C语言程序的基本格式 6 源程序中可以有预处理命令 include命令仅为其中的一种 预处理命令通常应放在源文件或源程序的最前面 7 一个 语言源程序可以由一个或多个源文件组成 7 在C语言中 大小写字母是有区别的 C语言习惯用小写字母 8 用 对C程序中的任何部分作注释 注释可以写在程序的任何位置上 与 也可不在同一行上 不能嵌套 例 Thisisthemain ofexample1 1 C语言程序结构 在屏幕上显示HelloWorld include stdio h main printf helloWorld n 注释语句 编译预处理 主函数定义 函数体 程序书写格式特点习惯用小写字母 大小写敏感不使用行号 无程序行概念可使用空行和空格常用锯齿形书写格式 main main inti j sum sum 0 for i 1 i 10 i for j 1 j 10 j sum i j printf d n sum 优秀程序员的素质之一 使用TAB缩进 对齐有足够的注释有合适的空行 课堂练习一 编写一个C语言源程序 执行后 在屏幕上输出 这是我的第一个C语言程序 C语言程序结构 注释语句 编译预处理 主函数定义 函数体 在屏幕上显示 这是我的第一个C语言源程序 include stdio h main printf 这是我的第一个 nC语言源程序 2 常用计算机语言 BASIC FORTRAN PASCAL COBOL C JAVA PROLOG 计算机基本工作过程 整个过程的执行者是硬件 但硬件是受软件控制的编程 就是编写软件 使硬件按照人的意图工作 1 计算机语言的翻译方式 1 解释方式 2 编译方式 程序设计语言的工作原理 高级语言源程序 解释程序 解释并执行 运算结果 高级语言源程序 编译程序 执行 运算结果 操作系统 编译 机器语言程序 编译运行 编译过程程序员 Programmer 编写程序源代码 SourceCode 编译器 Compiler 把源代码转换为可被计算机理解的机器代码 MachineCode 并把机器代码以可执行文件 ExecutableFile 的形式保存在磁盘上软件的运行计算机把机器代码读入到内存 Memory 由CPU运行这些代码 读取输入 Input 产生输出 Output 完成程序员预定的功能 编译语言 一种编译语言对应一种编译器程序员按照该语言的语法编写程序源代码 把自己的意图融入到代码中编译器读入源代码 把程序员的意图转换成可执行程序 供他人使用 C语言 可执行程序 编译器 解释运行 解释运行过程程序员编写程序源代码解释器读入源代码 并执行源代码解释运行的语言特点执行速度慢好学易用先编译 后解释把源代码编译成更容易解释的中间代码 然后再解释运行 C程序的开发运行过程 1 源程序的编辑可使用任意纯文本编辑器编写 如记事本 WORD UltraEit等均可 得到源程序文件 c 2 编译由专门的编辑程序 编译器 对源程序进行语法分析和检查 如无语法错误则转换生成目标码程序文件 obj 3 链接与其它库函数或目标程序文件链接生成可执行文件 exe 4 执行 C语言集成开发环境 集成开发环境IDE IntegratedDevelopmentEnvironment包含文本编辑 程序编译 连接以及程序运行 调试一体化的程序软件包 常用的集成开发环境主要有 美国Borland公司1989年出版的TurboC2 0 微软的MicrosoftVisualC 因为TC是在DOS下进行操作的 在WINDOWS中也要在命令窗口中进行操作 比较麻烦 所以推荐大家使用 C C 程序设计学习与实验系统 共享版 作者 钟家民注册费用 35元 第二个程序 已知有变量a 12 变量b 14 编写程序求变量a b之和 如何编写程序 第二个程序 求 a b include stdio h main a 12 b 14 printf a b 求 a b include stdio h main inta 12 定义a为整型变量intb 14 定义b为整型变量printf a b d a b 在C语言中 所有变量必须先说明后使用 说明用于申明变量的性质 变量说明语句格式如下 变量类型名变量1 变量2 变量n 变量类型名有 int整数 float浮点数char字符 单字节short短整数long长整数single单精度浮点数double双精度浮点数 第二个程序求两数之和 两数求和 include stdio h voidmain inta b sum 定义三个整型变量a 12 给变量赋值b 14 sum a b 求和printf a b d sum 输出显示 d输出转换说明 用整型值sum来代替它 修改程序如下 运行结果sum include stdio h voidmain inta b sum a 12 50 b 14 50 sum a b printf a b d sum 再修改程序如下 运行结果sum include stdio h voidmain floata b sum 定义三个浮点型变量a 12 50 b 14 50 sum a b printf a b d sum 两数求和 sum include stdio h voidmain floata b sum a 12 50 b 14 50 sum a b printf a b f sum f输出转换说明 用浮点型值sum来代替它 输出函数printf printf函数称为格式输出函数 用来向标准输出设备 屏幕 写数据 printf 格式控制串 参数表 格式化字符串包括两部分内容 一部分是正常字符 这些字符将按原样输出 另一部分是格式化规定字符 以 开始 后跟一个或几个规定字符 用来确定输出内容格式 参数表是需要输出的一系列参数 其个数必须与格式化字符串所说明的输出参数个数一样多 各参数之间用 分开 且顺序一一对应 否则将会出现意想不到的错误 参数可以是变量 常量和表达式 1 格式化规定符TurboC2 0提供的格式化规定符如下 符号作用 d十进制有符号整数 u十进制无符号整数 f浮点数 s字符串 c单个字符 p指针的值 e指数形式的浮点数 x X无符号以十六进制表示的整数 0无符号以八进制表示的整数 g自动选择合适的表示法 1 可以在 和字母之间插进数字表示最大场宽 3d表示输出3位整型数 不够3位右对齐 9 2f表示输出场宽为9的浮点数 其中小数位为2 整数位为6 小数点占一位 不够9位右对齐 对浮点数 若整数部分位数超过了说明的整数位宽度 将按实际整数位输出 若小数部分位数超过了说明的小数位宽度 则按说明的宽度以四舍五入输出 如果用浮点数表示字符或整型量的输出格式 小数点后的数字代表最大宽度 小数点前的数字代表最小宽度 例如 6 9s表示显示一个长度不小于6且不大于9的字符串 若大于9 则第9个字符以后的内容将被删除 2 可以在 和字母之间加小写字母l 表示输出的是长型数 例如 ld表示输出long整数 lf表示输出double浮点数 3 可以控制输出左对齐或右对齐 即在 和字母之间加入一个 号可说明输出为左对齐 否则为右对齐 例如 7d表示输出7位整数左对齐 2 一些特殊规定字符字符作用 n换行 f清屏并换页 r回车 tTab符 xhh表示一个ASCII码用16进制数表示 其中hh是1到2个16进制数 输出函数printf 例子 include stdio h voidmain printf d n n 336 printf theoctalnumberof17is o n n 17 printf thehexnumberof30is x n n 30 printf fisfloatingformat n n 13 5 printf c n n a printf s n n aflingbird 两数求和 include stdio h voidmain inta b sum a 12 b 14 sum a b printf d d d a b sum 前面的程序是在源程序中就输入了要求和的数 如果我们想要在键盘中输入数据 如果实现呢 可以使用scanf 函数 输入函数scanf scanf 函数是格式化输入函数 它从标准输入设备 键盘 读取输入的信息 格式 scanf 输入函数scanf 格式化字符串包括以下三类不同的字符 1 格式化说明符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论