《第1章C语言概述.docx》由会员分享,可在线阅读,更多相关《第1章C语言概述.docx(39页珍藏版)》请在第一文库网上搜索。
1、第1章C语言概述本章要点 C语言的发展及特点 C语言程序的格式 C语言程序的构成 C语言程序的基本要求 C语言程序的编译和运行 算法概述1.1 C语言的发展及特点C语言是一种面向过程的通用程序设计语言。它以表达简明、使用灵活、结构化的流程控制、丰富的数据结构和操作集合、良好的程序可移植性和较高效率的目标代码为特征。C语言不仅具有高级语言的要素,还兼有低级语言的功能,因此既可用于编写系统程序,也可用于编写不同领域的应用程序。本节主要介绍C语言的发展及特点。1.1.1 C语言的发展C语言是美国贝尔实验室的DennisM.Ritchie于1972年设计实现的。C语言是在B语言的基础上发展起来的,它的
2、根源可以追溯到A1GO160。A1GO160是I960年由国际计算机委员会设计的一种面向过程的结构化程序设计语言,用它编写的程序具有可读性和可移植性好的特点。但是,它不能直接对硬件进行操作,不宜用来编写系统程序。系统程序主要用汇编语言编写,而汇编语言是面向机器的程序语言,用它编写的程序可读性和可移植性都比较差。为此,人们开始考虑设计一种集高级语言和低级语言功能于一身的语言,以便用它来编写可读性和可移植性都比较好的系统程序。1963年,英国剑桥大学和伦敦大学首先将A1GO160发展成CP1(CombinedProgramming1anguage,组合程序设计语言)。该语言已比较接近于硬件,但规模
3、较大,实用性不强。1967年,剑桥大学的MartinRichards将CP1改制成BCP1(BasicCombinedProgramming1anguage,基本组合编程语言)。BCP1比CP1大为简化,既具有结构化程序设计语言的特点,也能直接处理与硬件相关的数据,被软件人员用作系统程序的描述语言。1970年,美国贝尔实验室的KenThompson将BCP1修改为B语言(BoiIingCP1downtoitsbasicgoodfeature),并用B语言开发了第一个由高级语言实现的UNIX操作系统,在DEC公司的PDP-7小型机上运行。1972年,DennisM.Ritchie将B语言修改设计
4、成C语言。C语言既保持了BCP1和B语言的精练和接近于硬件的特点,也克服了它们过于简单、数据无类型等缺点。1973年,KenThompson和DenniSM.Ritchie又合作将1969年用汇编语言编写的UNIX操作系统改用C语言编写,C语言代码占90%以上,只保留了少量汇编语言代码,这样就使得UN1X操作系统向其他类型的机器上移植变得相当简单。到了20世纪70年代中期,UNIX操作系统和C语言作为软件设计师的得力工具传遍了贝尔实验室,接着又传遍了所有的美国大学校园。随着西欧和日本相继宣布加入UNIX和C语言的行列,UNIX和C语言开始风靡世界。1978年,以UNIX第7版中的C编译程序为基
5、础,BrainW.Kemighan和DennisM.RitChie合著了影响深远的名著TheCProgramming1anguage(C程序设计语言)。这本书中介绍的C语言成为后来广泛使用的C语言版本的基础,称为K&RC语言。在其后的十几年中,适用于不同机种和不同操作系统的C编译系统相继问世,从而把C语言的应用推向了更加广泛普及的阶段。1983年,美国国家标准局ANS1制定了C语言标准。这个标准不断完善,并从1987年开始实施,称为ANS1Co1988年,Kemighan和RitChie修改了经典著作TheCProgramming1anguage,按ANSIC标准重新编写了该书。现在一般称AN
6、S1e为新标准或现代C,K&RC为旧标准或传统C。1990年ISO通过了C程序设计语言的国际标准,称之为标准C。此后陆续出现的各种C语言版本,如MiCroSoftC5.0/9.0、TurboC2.0/3.0、QuickC等都是与ANSIC兼容的版本。它们的语法和语句功能是一致的,差异表现在各自的标准函数库中所收纳的函数种类、格式和功能上,尤其是图形函数库的差异更大一些。由于C语言源程序本质上是一个文本文件,因此常见的文件编辑软件都可以用来编辑C语言源程序。如:DoS环境下的Edit,WindoWS环境下的记事本、写字板、EditP1us,以及TUrboC、WinTCVisua1C+集成开发环境
7、等。使用常用的编辑软件来编辑C语言源程序时,在存盘时应采用纯文本的方式保存文件。在C语言的基础上,1983年贝尔实验室又推出了C+语言。C+语言进一步扩充和完善了C语言,成为一种面向对象的程序设计语言。C语言是C+的基础,C+语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C+语言会更容易、更便利,并能达到事半功倍的效果。1.1.2 C语言的特点c语言是近年来较流行的高级程序设计语言之一,许多大型软件均是用c语言编写的,如UNIX操作系统。C语言同时具有汇编语言和高级语言的双重特性。具体来说,C语言具有以下特点。(1)具有结构化的控制语句(如ife1se语句、whi1e语句、d
8、owhi1e语句、switch语句、for语句)。用函数作为程序的模块单位,便于实现程序的模块化,其基本思想是将一个大的程序按功能分割成一些模块,使每一个模块都成为功能单一、结构清晰、容易理解的函数。(2)语言简洁,结构紧凑,使用方便灵活。C语言一共有32个关键字和9条控制语句,且源程序书写形式自由。(3)运算类型丰富、数据处理能力强。C语言是一种表达式语言,共有42个运算符,如自增运算符(+)、自减运算符(一)、取地址运算符(&)和间接运算符(*)等,用这些运算符可书写简洁而功能很强的表达式,从而提高软件的生产率。由于C语言的运算类型极其丰富,从而使得表达式的类型灵活多样,在其他高级语言中难
9、以实现的运算,在C语言中都能很容易地实现。(4)可直接访问物理地址,实现对硬件操作和底层系统软件的访问。C语言包含地址运算、位运算和指针运算等功能,可以直接对硬件进行操作,实现汇编语言的多数功能,并能通过参数传递实现对系统软件的底层调用。(5)语言生成的代码质量高。对于一个应用程序来说,如果生成的目标代码(可执行程序)质量低,则系统开销大、无实用性。许多实验表明,针对同一个问题用C语言编写程序,其生成代码的效率仅比汇编语言编写的代码低10%20%,但编程相对容易,而且程序可读性好,易于调试、修改和移植,运行速度快。(6)可移植性好。所谓可移植性是指从一个系统环境下不加或稍加改动就可搬到另一个完
10、全不同的系统环境中运行。C语言编译程序的大部分代码是公共的,基本上可以不做任何修改,就能运用于各种不同型号的计算机和各种操作系统环境中。C语言还有其他优点,可在学习和实践中体会。当然,C语言也和其他语言一样,存在一些不足之处,如某些运算符优先顺序与习惯不完全一致;类型转换比较随便等。尽管如此,相比之下,C语言仍是优秀的程序设计语言之一。1.2 C语言程序的格式、构成及其基本要求C语言程序是由各种基本符号按照C语言的语法规则构成的语句组成的。下面通过两个例子说明C程序的格式、构成及其基本要求。例1.1计算两个给定的整数的和。程序代码如下:#inc1udemain()(intatb,sum;/*定
11、义三个变量*/a=8;/为变量a赋值b=10;sm=a+b*3;printf(,sum=%dn,sum);)程序第一行的inc1ude是文件包含行,它表示本程序中所用到的某些常量或宏定义在头文件stdio.h中进行了定义。程序第二行的main是主函数名,后面必须有一对圆括号0。第三行开始的左花括号“”和最后一行的右花括号“”括起来的部分称为函数体,中间包含了若干行语句。其中第四行int开头的变量是变量定义语句,定义了整型变量a、b和SUm。第五行、第六行和第七行是赋值语句,首先给变量a赋值8,给变量b赋值10,再计算a与b的3倍之和并赋给sum。最后用printf开头的函数调用语句输出sum的
12、值。第四行的/*定义三个变量*/”和第五行的“为变量a赋值”是注释语句,用于提高程序的可读性。程序运行结果如下:sum=38例1.2求矩形的面积。程序代码如下:!inc1udeintarea(intx,inty)求面积的函数(intz;z=x*y;return(z);/通过return语句将z的值带回到主函数main中的调用处main()(inta,bzc;scanf(,%dz%d,z&b);/输入数据,分别赋值给变量a、bc=area(azb);调用函数,得到矩形的面积,赋值给变量Cprintf(area=%dn-fc);/输出矩形的面积)程序运行结果如下:3,4area=121.2.1 C
13、语言程序的格式C语言中的书写格式相当自由,一行可以写多条语句,一条语句也可以分成多行写。注意:所有的c语句都必须以分号“;”结束。只有一个分号而没有前面的语句体,称为空语句,在C语言中是合法的语句。语句中大写字母和小写字母代表不同的含义。例如变量A和变量a代表不同的变量。为了增加程序的可读性,应避免在一行中连续书写多条语句。提倡按照程序的逻辑结构使用缩进的书写形式,以明确地表示程序的层次性和逻辑性。1.2.2 C语言程序的构成C语言程序的基本结构是函数,一个或多个C函数组成一个C程序,若干C语句构成一个C函数,若干基本单词形成一个C语句。C语言中使用的函数有两类,一类是系统定义的函数,如Pri
14、1Uf和SCanf函数等,称为标准库函数,可以直接在程序中使用;另一类是用户自己定义的函数,如main和max函数等,必须由用户自己编写源程序代码。每个函数均由函数首部和函数体两部分组成。其一般结构如下:函数类型函数名(函数形参表)/*函数首部*/(变量定义和声明语句;可执行的操作语句;)1 .函数首部函数首部用于说明函数名、函数类型、函数参数名及参数的类型,其中函数后面有一对圆括号,参数和参数类型就写在圆括号中。例如,例1.2中的函数,其函数首部:intarea(intx,inty)其中,函数名是area,它的类型由最前面的int指出,说明area是一个整型函数。圆括号中用逗号分开的是两个参
15、数X和y,各用int说明是整型参数。也有一些函数不带参数,即函数名后面是一对空的圆括号,如main函数。2 .函数体函数首部下面用花括号括起来的部分称为函数体,通常包括变量定义和声明语句以及可执行的操作语句两部分。1)变量定义和声明语句“变量定义和声明语句”由变量定义、自定义函数声明、外部变量声明等语句组成。其中变量定义是主要的,其作用是指出函数内使用的变量名和变量类型,系统据此为变量分配相应的存储空间,用于存放变量的值。如例1.1中有:inta,b,sum;它定义了三个变量a、b和sum,它们的类型是整型into系统将根据定义的类型为它们各分配两个字节的存储空间,存放各自的值。而在例1.2中有intz;inta,b,c;前一行是在area中定义的整型变量z,它只能在area函数中使用;后一行是在main函数中定义的整型变量,它们只能在main函数中使用。系统会为它们各分配两个字节的存储空间,存放它们的值。2)可执行的操作语句可执行的操作语句用于产生可以被计算机执行的操作指令。功能不同的C程序函数中可以执行的语句条数也不等,但是可执行语句必须位于变量定义语句的后面。如在例1.1中有:a=8;它是一个赋值语句,其作用是将常量8赋给整型变量a,即将8存放到系统为a分配的内存空间中。又如在