谭浩强C语言ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1990年,国际标准化组织ISO(International Standard Organization) 接受87 ANSI C为ISO C 的标准(ISO 9899—
1990)。目前流行的C编译系统都是以它为基础的。本书的
叙述基本上以ANSI C 为基础。目前广泛流行的各种版本 C语言编译系统虽然基本部分是相同的,但也有一些不同。 在微型机上使用的有Microsoft C、 Turbo C、 Quick C、 BORLAND C等,它们的不同版本又略有差异。因此,读
(3) 数据结构丰富,具有现代化语言的各种数据结 构。C的数据类型有整型、实型、字符型、数组 类型、指针类型、结构体类型、共用体类型等。 能用来实现各种复杂的数据结构(如链表、树、 栈等)的运算。尤其是指针类型数据,使用起来 比PASCAL更为灵活、多样。 (4) 具有结构化的控制语句(如if…else语句、while 语句、do…while语句、switch语句、for语句)。 用函数作为程序的模块单位,便于实现程序的模 块化。C是良好的结构化语言, 符合现代编程风 格的要求。
应用最广泛的几种计算机语言之一。以1978年发表的
UNIX第7版中的C编译程序为基础,Brian W.Kernighan
和Dennis M.Ritchie (合称K&R)合著了影响深远的名著 《The C Programming Language》,这本书中介绍的C
语言成为后来广泛使用的C语言版本的基础,它被称为标
者应了解所用的计算机系统所配置的C编译系统的特点和
规定 (可以参阅有关手册)。
1.2 C语言的特点
一种语言之所以能存在和发展,并具有生命力,总是有其不 同于(或优于)其他语言的特点。C语言的主要特点如下。 (1) 语言简洁、紧凑,使用方便、灵活。C语言一共只有32 个关键字,9种控制语句,程序书写形式自由,主要用小写 字母表示,压缩了一切不必要的成分。下面将C与 PASCAL语言做一比较。 (2) 运算符丰富。C的运算符包含的范围很广泛,共有34种 运算符。C把括号、赋值、强制类型转换等都作为运算符 处理,从而使C的运算类型极其丰富,表达式类型多样化。 灵活使用各种运算符可以实现在其他高级语言中难以实现 的运算。
579 例1.3 main ( )/* 主函数*/ { int a, b, c; /*声明部分,定义变量*/
scanf ("%d,%d",&a,&b);
/*输入变量a和b的值*/
c=max (a,b); /*调用max函数,将得到的值赋给c*/ printf ("max=%d",c); /*输出c的值*/ } int max(int x,int y) /* 定义max函数,函数值为整 型, 形式参数x,y为整型*/ {int z; /* max函数中的声明部分,定义本函数中用 到的变量z为整型*/ if (x>y) z=x; else z=y; return (z); /*将z的值返回,通过max带回调用处*/ }
国的贝尔实验室的K.Thompson和D.M.Ritchie开发成功的,
是用汇编语言写的。
后来,C语言多次做了改进,但主要还是在贝尔实验室内部 使用。直到1975年UNIX第6版公布后,C语言的突出优点 才引起人们的普遍注意。1977年出现了不依赖于具体机器 的C语言编译文本《可移植C语言编译程序》,使C移植 到其他机器时所需做的工作大大简化了,这也推动了
准C。1983年,美国国家标准化协会(ANSI)根据C语言问 世以来各种版本对C的发展和扩充,制定了新的标准,称 为ANSI C。 ANSI C比原来的标准C有了很大的发展。K & R在1988年修改了他们的经典著作《The C Programming Language》,按照 ANSI C 标准重新写了 该书。1987年,ANSI又公布了新标准——87 ANSIC。
新世纪计算机基础教育丛书丛书
主编
谭浩强
C 程序设计 (第三版)
总 目 录
第1章 第2章 第3章 第4章 第5章 第6章 第7章 第8章 C语言概述 程序的灵魂——算法 数据类型、运算符与表达式 最简单的C程序设计——顺序程序设计 选择结构程序设计 循环控制 数组 函数
第9章 预处理命令 第10章 指针 第11章 结构体与共用体 第12章 位运算 第13章 文件 第14章 C++对C的扩充 第15章 C++的面向对象基础 第16章 常见错误和程序调试
456。第4行使sum的值为a+b,第5行中“%d”是输入输 出的“格式字符串”,用来指定输入输出时的数据类型 和格式(详见第4章),“%d”表示“以十进制整数形式输 出”。在执行输出时,此位置上代以一个十进制整数值。 printf函数中括弧内最右端sum是要输出的变量,现在它
的值为579(即123+456之值)。因此输出一行信息为sum is
(6) C语言能进行位(bit)操作,能实现汇编语言的大 部分功能,可以直接对硬件进行操作。因此C既 具有高级语言的功能,又具有低级语言的许多功 能,可用来写系统软件。C语言的这种双重性, 使它既是成功的系统描述语言,又是通用的程序 设计语言。 有人把C称为“高级语言中的低级语言” 或“中级 语言”,意为兼有高级和低级语言的特点。按此 观点可将各语言分类如下:
(5) 语法限制不太严格,程序设计自由度大。例如对数 组下标越界不做检查,由程序编写者自己保证程序的 正确。对变量的类型使用比较灵活,例如整型数据与 字符型数据可以通用。一般的高级语言语法检查比较 严,能检查出几乎所有的语法错误。而C语言允许程 序编写者有较大的自由度,因此,放宽了语法检查。 程序员应当仔细检查程序,保证其正确,而不要过分 依赖C编译程序去查错。“限制”与“灵活”是一对 矛盾。限制严格,就失去灵活性;而强调灵活,就必然 放松限制。一个不熟练的编程人员,编一个正确的C 程序可能会比编一个其他高级语言程序难一些。也就 是说,对用C语言的人,要求对程序设计更熟练一些。
Ken Thompson 以BCPL语言为基础, 又做了进 一步简化, 设计出了很简单的而且很接近硬件的 B语言 (取BCPL的第一个字母), 并用B语言写了 第一个UNIX操作系统,在PDP7上实现。1971 年在PDP11/20上实现了B语言,并写了UNIX 操作系统。但B语言过于简单,功能有限。
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语言也是理想的结构 化语言, 且描述能力强, 同样适于教学。 操作系统课程 多结合UNIX讲解,而UNIX与C不可分,因此,C语言已 经成为被广泛使用的教学语言。C除了能用于教学外,还
有广泛的应用领域,因此更有生命力。PASCAL和其他
高级语言的设计目标是通过严格的语法定义和检查来保 证程序的正确性,而C则是强调灵活性,使程序设计人员
UNIX操作系统迅速地在各种机器上实现。例如VAX、
AT&T等计算机系统都相继开发了UNIX。随着UNIX的日 益广泛使用,C语言也迅速得到推广。C语言和UNIX可以
说是一对孪生兄弟,在发展过程中相辅相成。1978年以后,
C语言已先后移植到大、中、小、微型机上,已独立于 UNIX和PDP了。现在C语言已风靡全世界,成为世界上
例 1.2 main ( )/*求两数之和*/ { int a,b,sum; /*这是定义变量*/ a=123; b=456; /* 以下3行为C语句 */ sum=a+b; printf ("sum is %d/n", sum); } 本程序的作用是求两个整数a和b之和sum。/*……*/表示注 释部分,为便于理解,我们用汉字表示注释,当然也可 以用英语或汉字拼音作注释。注释只是给人看的,对编 译和运行不起作用。注释可以加在程序中任何位置。第2 行是声明部分, 定义变量a和b,指定 a和b为整型(int)变 量。第3行是两个赋值语句,使a和b的值分别为123和
能有较大的自由度,以适应宽广的应用面。总之,C语言
对程序员要求较高。程序员使用C语言编写程序会感到限 制少,灵活性大,功能强,可以编写出任何类型的程序。
现在,C语言已不仅用来Leabharlann Baidu写系统软件,也用来编写应用
软件。学习和使用C的人已越来越多。
1.3 简单的C程序介绍
下面先介绍几个简单的C程序,然后从中分析C程序的特性。 例 1.1 main ( ) { printf ("This is a C program.\n"); } 本程序的作用是输出以下一行信息: This is a c program. 其中 main 表示“主函数”。每一个C程序都必须有一个 main 函数。函数体由大括弧{}括起来。本例中主函数内只有一个输 出语句,printf是C语言中的输出函数(详见第4章)。双引号 (双括号)内的字符串原样输出。“\n”是换行符,即在输出 “This is a c program.”后回车换行。语句最后有一分号。
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年由美
第1章 C语言概述
1.1 1.2 1.3 1.4 1.5 C语言出现的历史背景 C语言的特点
简单的C程序介绍
C程序的上机步骤
习题
1.1 C语言出现的历史背景
C语言是国际上广泛流行的计算机高级语言,既可用来写系统 软件,也可用来写应用软件。 C语言是在B语言的基础上发展起来的,它的根源可以追溯到 ALGOL 60。1960年出现的ALGOL 60是一种面向问题的 高级语言,它离硬件比较远,不宜用来编写系统程序。 1963年英国的剑桥大学推出了CPL (combined programming language)语言。CPL语言在ALGOL 60的基 础上接近硬件一些,但规模比较大,难以实现。1967年英 国剑桥大学的Matin Richards对CPL语言做了简化,推出 了BCPL (basic combined programming language) 语言。 1970年美国贝尔实验室的
再回顾一下,就会有比较深的体会。我们从应用的角度出 发对C语言和其他传统的高级语言作一简单比较。
从掌握语言的难易程度来看,C语言比其他语言难一些。
BASIC是初学者入门的较好的语言,FORTRAN也比较 好掌握。对科学计算多用FORTRAN或PL/Ⅰ;对商业和管 理等数据处理领域,用COBOL为宜。C语言虽然也可用 于科学计算和管理领域,但并不理想,C的特长不在这里。 对操作系统和系统实用程序以及需要对硬件进行操作的 场合,用C语言明显地优越于其他高级语言,有的大型应 用软件也用C语言编写。从教学角度,由于PASCAL是世 界上第一个结构化语言,而曾被认为是计算机专业的比 较理想的教学语言。目前在数据结构等课程中一般用 PASCAL语言举例。但PASCAL语言难以推广到各实际 应用领域,
高级: BASIC,FORTRAN,COBOL,PASCAL,Ada,Modula-2;
中级: C,FORTH,宏汇编;
低级: 汇编语言 一般仍习惯将C语言称为高级语言,因为C程序也要通过编译、 连接才能得到可执行的目标程序,这是和其他高级语言相 同的。
C的以上特点,读者现在也许还不能深刻理解,待学完C以后