




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C程序设计 陈晓辉 第1章C语言概述 1 1C语言出现的历史背景1 2C语言的特点1 3简单的C程序介绍1 4C程序的上机步骤1 5习题 1 1C语言出现的历史背景 C语言是国际上广泛流行的计算机高级语言 既可用来写系统软件 也可用来写应用软件 C语言是在B语言的基础上发展起来的 它的根源可以追溯到ALGOL60 1960年出现的ALGOL60是一种面向问题的高级语言 它离硬件比较远 不宜用来编写系统程序 1963年英国的剑桥大学推出了CPL combinedprogramminglanguage 语言 CPL语言在ALGOL60的基础上接近硬件一些 但规模比较大 难以实现 1967年英国剑桥大学的MatinRichards对CPL语言做了简化 推出了BCPL basiccombinedprogramminglanguage 语言 1970年美国贝尔实验室的 1972年至1973年间 贝尔实验室的D M Ritchie在B语言的基础上设计出了C语言 取BCPL的第二个字母 C语言既保持了BCPL和B语言的优点 精练 接近硬件 又克服了它们的缺点 过于简单 数据无类型等 最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的 1973年 K Thompson和D M Ritchie两人合作把UNIX的90 以上用C改写 即UNIX第5版 原来的UNIX操作系统是1969年由美国的贝尔实验室的K Thompson和D M Ritchie开发成功的 是用汇编语言写的 后来 C语言多次做了改进 但主要还是在贝尔实验室内部使用 直到1975年UNIX第6版公布后 C语言的突出优点才引起人们的普遍注意 1977年出现了不依赖于具体机器的C语言编译文本 可移植C语言编译程序 使C移植到其他机器时所需做的工作大大简化了 这也推动了UNIX操作系统迅速地在各种机器上实现 例如VAX AT T等计算机系统都相继开发了UNIX 随着UNIX的日益广泛使用 C语言也迅速得到推广 C语言和UNIX可以说是一对孪生兄弟 在发展过程中相辅相成 1978年以后 C语言已先后移植到大 中 小 微型机上 已独立于UNIX和PDP了 现在C语言已风靡全世界 成为世界上 1972年至1973年间 贝尔实验室的D M Ritchie在B语言的基础上设计出了C语言 取BCPL的第二个字母 C语言既保持了BCPL和B语言的优点 精练 接近硬件 又克服了它们的缺点 过于简单 数据无类型等 最初的C语言只是为描述和实现UNIX操作系统提供一种工作语言而设计的 1973年 K Thompson和D M Ritchie两人合作把UNIX的90 以上用C改写 即UNIX第5版 原来的UNIX操作系统是1969年由美国的贝尔实验室的K Thompson和D M Ritchie开发成功的 是用汇编语言写的 KenThompson以BCPL语言为基础 又做了进一步简化 设计出了很简单的而且很接近硬件的B语言 取BCPL的第一个字母 并用B语言写了第一个UNIX操作系统 在PDP 7上实现 1971年在PDP 11 20上实现了B语言 并写了UNIX操作系统 但B语言过于简单 功能有限 应用最广泛的几种计算机语言之一 以1978年发表的UNIX第7版中的C编译程序为基础 BrianW Kernighan和DennisM Ritchie 合称K R 合著了影响深远的名著 TheCProgrammingLanguage 这本书中介绍的C语言成为后来广泛使用的C语言版本的基础 它被称为标准C 1983年 美国国家标准化协会 ANSI 根据C语言问世以来各种版本对C的发展和扩充 制定了新的标准 称为ANSIC ANSIC比原来的标准C有了很大的发展 K R在1988年修改了他们的经典著作 TheCProgrammingLanguage 按照ANSIC标准重新写了该书 1987年 ANSI又公布了新标准 87ANSIC 1990年 国际标准化组织ISO InternationalStandardOrganization 接受87ANSIC为ISOC的标准 ISO9899 1990 目前流行的C编译系统都是以它为基础的 目前广泛流行的各种版本C语言编译系统虽然基本部分是相同的 但也有一些不同 在微型机上使用的有MicrosoftC TurboC QuickC BORLANDC等 它们的不同版本又略有差异 因此 读者应了解所用的计算机系统所配置的C编译系统的特点和规定 可以参阅有关手册 什么是C语言 C语言是由32个关键字再加上语法规则构成的 e1 c 编辑 编译 e1 obj 连接 e1 exe 运行 输出结果 1 2C语言的特点 一种语言之所以能存在和发展 并具有生命力 总是有其不同于 或优于 其他语言的特点 C语言的主要特点如下 1 语言简洁 紧凑 使用方便 灵活 C语言一共只有32个关键字 9种控制语句 程序书写形式自由 主要用小写字母表示 压缩了一切不必要的成分 下面将C与PASCAL语言做一比较 2 运算符丰富 C的运算符包含的范围很广泛 共有34种运算符 C把括号 赋值 强制类型转换等都作为运算符处理 从而使C的运算类型极其丰富 表达式类型多样化 灵活使用各种运算符可以实现在其他高级语言中难以实现的运算 3 数据结构丰富 具有现代化语言的各种数据结构 C的数据类型有整型 实型 字符型 数组类型 指针类型 结构体类型 共用体类型等 能用来实现各种复杂的数据结构 如链表 树 栈等 的运算 尤其是指针类型数据 使用起来比PASCAL更为灵活 多样 4 具有结构化的控制语句 如if else语句 while语句 do while语句 switch语句 for语句 用函数作为程序的模块单位 便于实现程序的模块化 C是良好的结构化语言 符合现代编程风格的要求 5 语法限制不太严格 程序设计自由度大 例如对数组下标越界不做检查 由程序编写者自己保证程序的正确 对变量的类型使用比较灵活 例如整型数据与字符型数据可以通用 一般的高级语言语法检查比较严 能检查出几乎所有的语法错误 而C语言允许程序编写者有较大的自由度 因此 放宽了语法检查 程序员应当仔细检查程序 保证其正确 而不要过分依赖C编译程序去查错 限制 与 灵活 是一对矛盾 限制严格 就失去灵活性 而强调灵活 就必然放松限制 一个不熟练的编程人员 编一个正确的C程序可能会比编一个其他高级语言程序难一些 也就是说 对用C语言的人 要求对程序设计更熟练一些 6 C语言能进行位 bit 操作 能实现汇编语言的大部分功能 可以直接对硬件进行操作 因此C既具有高级语言的功能 又具有低级语言的许多功能 可用来写系统软件 C语言的这种双重性 使它既是成功的系统描述语言 又是通用的程序设计语言 有人把C称为 高级语言中的低级语言 或 中级语言 意为兼有高级和低级语言的特点 按此观点可将各语言分类如下 高级 BASIC FORTRAN COBOL PASCAL Ada Modula 2 中级 C FORTH 宏汇编 低级 汇编语言一般仍习惯将C语言称为高级语言 因为C程序也要通过编译 连接才能得到可执行的目标程序 这是和其他高级语言相同的 C的以上特点 现在也许还不能深刻理解 待学完C以后再回顾一下 就会有比较深的体会 C运行环境介绍 TurboC2 TurboC3 1 3简单的C程序介绍 下面先介绍几个简单的C程序 然后从中分析C程序的特性 例1 1 includemain printf ThisisaCprogram n 本程序的作用是输出以下一行信息 Thisisacprogram 其中main表示 主函数 每一个C程序都必须有一个main函数 函数体由大括弧 括起来 本例中主函数内只有一个输出语句 printf是C语言中的输出函数 详见第4章 双引号 双括号 内的字符串原样输出 n 是换行符 即在输出 Thisisacprogram 后回车换行 语句最后有一分号 例1 2求两数之和main 求两数之和 inta b sum 这是定义变量 a 123 b 456 以下3行为C语句 sum a b printf sumis d n sum 本程序的作用是求两个整数a和b之和sum 表示注释部分 为便于理解 我们用汉字表示注释 当然也可以用英语或汉字拼音作注释 注释只是给人看的 对编译和运行不起作用 注释可以加在程序中任何位置 第2行是声明部分 定义变量a和b 指定a和b为整型 int 变量 第3行是两个赋值语句 使a和b的值分别为123和456 第4行使sum的值为a b 第5行中 d 是输入输出的 格式字符串 用来指定输入输出时的数据类型和格式 详见第4章 d 表示 以十进制整数形式输出 在执行输出时 此位置上代以一个十进制整数值 printf函数中括弧内最右端sum是要输出的变量 现在它的值为579 即123 456之值 因此输出一行信息为sumis579 例1 3求两数之最大值main 主函数 inta b c 声明部分 定义变量 scanf d d 将z的值返回 通过max带回调用处 通过以上几个例子 可以看到 C程序是由函数构成的 一个C源程序至少包含一个main函数 也可以包含一个main函数和若干个其他函数 因此 函数是C程序的基本单位 被调用的函数可以是系统提供的库函数 例如printf和scanf函数 也可以是用户根据需要自己编制设计的函数 例如 例1 3中的max函数 C的函数相当于其他语言中的子程序 用函数来实现特定的功能 程序中的全部工作都是由各个函数分别完成的 编写C程序就是编写一个个函数 C的函数库十分丰富 ANSIC建议的标准库函数中包括100多个函数 TurboC和MSC4 0提供300多个库函数 C的这种特点使得容易实现程序的模块化 2 一个函数由两部分组成 函数的首部 即函数的第一行 包括函数名 函数类型 函数属性 函数参数 形参 名 参数类型 例如 例1 3中的max函数的首部为intmax intx inty 函数类型函数名函数参数类型函数参数名函数参数类型函数参数名一个函数名后面必须跟一对圆括弧 函数参数可以没有 如main 函数体 即函数首部下面的大括弧 内的部分 如果一个函数内有多个大括弧 则最外层的一对 为函数体的范围 函数体一般包括 声明部分 在这部分中定义所用到的变量 如例1 3中main函数中的 inta b c 在第8章中还将会看到 在声明部分中要对所调用的函数进行声明 执行部分 由若干个语句组成 dump 它是一个空函数 什么也不干 但这是合法的 3 一个C程序总是从main函数开始执行的 而不论main函数在整个程序中的位置如何 main函数可以放在程序最前头 也可以放在程序最后 或在一些函数之前 在另一些函数之后 4 C程序书写格式自由 一行内可以写几个语句 一个语句可以分写在多行上 5 每个语句和数据定义的最后必须有一个分号 分号是C语句的必要组成部分 例如 c a b 分号不可少 即使是程序中最后一个语句也应包含分号 6 C语言本身没有输入输出语句 输入和输出的操作是由库函数scanf和printf等函数来完成的 C对输入输出实行 函数化 由于输入输出操作牵涉到具体的计算机设备 把输入输出操作放在函数中处理 就可以使C语言本身的规模较小 编译程序简单 很容易在各种机器上实现 程序具有可移植性 当然 不同的C语言系统需要对函数库中的函数作不同的处理 不同的C系统除了提供函数库中的标准函数外 还按照硬件的情况提供一些专门的函数 因此不同的系统所提供的函数个数和功能是有所不同的 7 可以用 对C程序中的任何部分作注释 一个好的 有使用价值的源程序都应当加上必要的注释 以增加程序的可读性 编写C程序应注意的问题 编写在屏幕上显示一个句子 Let sstudytheClanguage 的程序 includemain printf Let sstudytheClanguage main是主函数名 有且仅有一个主函数 函数体 本函数体有一条输出语句 运行结果如下 Let sstudytheClanguage 不能丢 命令行 注意 区分大小写 编写输出两个句子 Let sstudytheClanguage 和 It sinteresting 的程序 includemain printf Let sstudytheClanguage n 输出字符串后换行 printf It sinteresting n 运行结果如下 Let sstudytheClanguage It sinteresting 注意 书写格式 编译 includemain printf Hello 010101011101110111011010101010101011010101001010101001010101010101010101010101 hello exe hello c XXX dllXXX com 让我们看一下Windows的文件 MAKE exe 函数 Main inta b c max Printf 请输入三个数a b c n Scanf d d d main 主函数 inta b c t Printf 请输入三个数a b c n scanf d d 如果是10000条语句有什麽问题 1 可读性太差2 不能由多人开发 解决的办法 将程序分解为小的功能模块 intmax intx inty intz if x y z x elsez y return z 运行方式1 Main inta b c max Printf 请输入三个数a b c n Scanf d d d include includeintmysum intm intn main inta b x doublec y z c 4 0 y sqrt c a 10 b 20 x mysum a b z x y printf z lf n z intmysum intm intn intk k m n returnk 程序的运行结果是 z
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年乡村民宿管家中级面试预测题与解析
- 2025年市场营销专员招聘笔试模拟题及答案详解
- 2025年井下多功能测振仪项目合作计划书
- 脊柱解剖培训课件
- 2025年医用X射线设备项目发展计划
- 2025年稀土发光材料项目合作计划书
- 2025年生麻生产合作协议书
- 河南省济源市轵城镇2024-2025学年七年级上学期第二次月考生物试题(含答案)
- 广东省深圳市多校联考2025-2026学年高三上学期开学考试语文试题
- 2025年高阻隔性封装材料项目建议书
- 药肥登记管理办法
- 深企投产业研究院:2025第三代半导体产业链研究报告
- 华为主数据管理办法
- 商混公司生产部管理制度
- 水果供应链协议
- 用别人资质中标合同范本
- 储备土地巡查管理办法
- 考古学复习资料与题库
- 铝粉代加工铝锭合同范本
- 餐前礼仪教学课件
- 临床试验病历书写规范与流程
评论
0/150
提交评论