第l章 C语言概述_第1页
第l章 C语言概述_第2页
第l章 C语言概述_第3页
第l章 C语言概述_第4页
第l章 C语言概述_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、第l章 C语言概述C语言是国际上广泛流行的计算机高级语言,既可以用来编写系统软件,也可以用来编写应用软件。首先介绍计算机语言和程序执行过程。1.1 计算机语言与程序1程序通常,完成一项复杂的任务,需要进行一系列的具体工作。这些按一定的顺序安排的工作即操作序列,就称为程序(program)。例如,学校里开会的程序步骤: 宣布大会开始。 介绍出席大会的领导。 领导讲话 宣布大会结束。 可见,程序的概念是很普遍的。对于计算机来说,计算机要完成某种数据处理任务,我们可以设计计算机程序,即规定一组操作步骤,使计算机按该操作步骤执行,完成该数据处理任务。在为计算机设计程序时,必须用特定的计算机语言描述。用

2、计算机语言设计的程序, 即为计算机程序。程序就是计算机为完成某一个任务所必须执行的一系列指令的集合。2计算机语言 计算机系统所能接受、理解和执行的语言称为计算机语言(computer language)。计算机语言主要分为三种类型:机器语言、汇编语言和高级语言。 (1)机器语言 机器语言(machine language)中的基本元素是“0”和“1”。由“0”和“1”组成的一个二进制编码,就表示一条机器指令(machine instruction),它使计算机完成一个简单的操作。不同型号的计算机系统,其指令的表示形式和范围是不同的。每种型号的机器指令,都有自己的编码格式,组成自己的指令集合,称

3、为计算机的指令系统,一般由数百条指令组成,每条指令使计算机完成一种简单的操作。用机器指令编写的程序,就是机器语言程序,它是计算机惟一能够直接识别并执行的程序。(2)汇编语言 汇编语言(assembly language)是在机器语言基础上,引入了助记符、符号数来表示机器指令中的操作码和操作数地址。助记符通常用英文单词缩写,便于记忆。使用汇编语言编写的程序称为汇编语言源程序(source program)。(3)高级语言高级语言(high-level language)是一种用户容易理解和掌握的计算机语言,它与人们习惯的自然语言和数学语言很接近,相对汇编语言来说容易掌握和使用。使用高级语言编写的

4、程序称为高级语言源程序。随着计算机技术的发展,用于各种不同领域的高级语言相继间世。C语言,以它自身特有的优点成为编写系统软件和应用软件较理想的计算机高级语言。3程序执行 并不是所有用计算机语言编写的程序,计算机都能立即执行。计算机只能直接识别执行机器语言程序或称目标程序(object program)。而用汇编语言或高级语言编写的程序,都不能直接在计算机上执行。汇编语言源程序需要通过一个称为汇编程序(assembler)的软件,将汇编语言源程序翻译成计算机可以直接识别运行的机器语言程序。对于用高级语言编写的源程序,需要经过一个称为“翻译程序”的软件将其翻译成计算机能够直接识别的机器语言程序,才

5、能执行。通常源程序中的每一条语句要翻译成一组机器指令。翻译程序有两种,即编译程序(compiler)和解释程序(interpreter)。每种高级语言都有自己的翻译程序,用C语言编写的源程序,首先通过C编译程序,将整个源程序翻译成机器语言程序,然后还要通过连接程序生成可执行程序,才能在机器上运行,如图1.1所示。图1.1 C源程序的执行过程下面简要介绍C语言的发展简史。1.2 C语言的发展历史C语言是为了描述UNIX操作系统,由美国贝尔实验室在B语言的基础上发展起来的。1969年,贝尔实验室的研究人员Ken Thompson和Dennis M. Ritchie合作用汇编语言编制了UNIX操作系

6、统。1970年,Ken Thompson为了提高UNIX的可读性和可移植性,在一种叫做BCPL语言的基础上开发了一种新的语言,称为B语言。由于B语言存在一些缺点,无法支持多种数据类型,因此没有流行起来。1972年,Denis M. Ritchie在B语言的基础上设计出了C语言。1973年,Ken Thompson和 Dennis M. Ritchie合作把原来用汇编语言编写的UNIX操作系统的90%以上的部分用C语言改写。与此同时,C语言的编译程序也被移植到IBM 360/370,Honeywell 11以及VAX-l1/780等多种计算机上,迅速成为应用最广泛的系统程序设计语言。1978年,

7、Brian W. Kernighan和Dennis M. Ritchie(K&R)合著出版了一本名为“The C Programming Language”(C程序设计语言)的书,这本书流行很广,被公认为C语言的标准版本,称为标准C。1983年,美国国家标准化协会ANSI(American National Standard Institute)根据C语言的发展制定了新的标准,称为ANSI C。ANSI C比原来的标准C有了很大的发展。国际标准化组织ISO(International Standard Organization)于1990年采用了一个C标准(ISO C)。ISO C和ANSI

8、C实质上是同一个标准。ANSI/ISO标准的最终版本通常被称为C90。然而,因为ANSI版本是首先出现的,所以人们通常使用ANSI C这一术语。20世纪90年代,虽然大多数程序员都在忙于C+标准的开发,但C语言并没有停滞不前。新的标准在不断开发,最终形成了1999年的C语言标淮,通常称为C99。C99基本保留了C90的全部特性,C99标准化委员会致力于两个主要方面:增加一些数据库函数和开发一些专用的但高度创新的新特性,例如可变长度的数组和restrict指针修饰符。这些改进再一次把C语言推到了计算机语言开发的前沿。结果是C99的修改保持了C语言的本质特性,C语言继续是一种简短、清楚、高效的语言

9、。1.3 C语言的特点C语言是一种通用、灵活、结构化和使用普遍的计算机高级语言,能完成用户想实现的任何任务,既可用来编写系统软件,也可用来编写应用软件。和其他高级语言比较,C语言有如下主要特点。 (1)C语言简洁紧凑 C语言一共有32个关键字,9种控制语句,书写形式自由,使用方便、灵活。 (2)C语言介于汇编语言与高级语言之间C语言既像汇编语言那样允许直接访问物理地址,能进行位运算,能实现汇编语言的大部分功能,直接对硬件访问;也有高级语言的面向用户、容易记忆、容易学习和易于书写的特点。 (3)C语言是一种结构化语言 C语言具有结构化语言所规定的三种基本结构。C语言用函数作为结构化程序设计的实现

10、工具,实现程序的模块化。 (4)C语言有丰富的数据类型 C语言具有现代化高级语言的各种数据类型;用户能自己扩充数据类型,实现各种复杂的数据结构,完成用于具体问题的数据描述。尤其是指针类型,它是C语言的一大特色,灵活的指针操作,能够高效处理各种数据。 (5)C语言有丰富的运算符 ANSI C提供34种运算符,灵活使用这些运算符,可以编写各种各样的表达式,表达能力很强,表达式的学习是学习C语言的重点和难点之一。 (6)C语言具有较高的移植性 C语言在可移植性方面处于领先地位。在C语言中,没有专门与硬件有关的输入输出语句,程序的输入输出通过调用库函数实现,使C语言本身不依赖于硬件系统,编写出的程序具

11、有良好的可移植性。(7)灵活性 C语言的语法限制不太严格,对程序员没有施加过多的限制,程序设计能够很自由地进行,这给程序设计带来了很大的灵活性。(8)缺点C语言的某些优秀特性在给用户带来方便的同时,也可能给用户带来风险。例如,如果对C语言中的指针使用不当,可能带来严重后果(如非法访问内存地址等)。另外,C语言的简洁性,使用户可能编写出很多难以理解的程序,降低了可读性。虽然前面介绍了C语言的主要特点,但对于初学者而言,可能暂时无法明白,只有在使用C语言的过程中,或者在学习了其他高级语言并与之比较后,才能真正理解这些特点。1.4 C语言程序设计初步1.4.1 简单的C程序实例下面介绍几个简单的C语

12、言程序,并对程序作适当的解释。读者通过这些简单的例子,可以对C语言的语法和程序结构有一个感性的了解。用C语言编写的程序,称为C语言源程序(source program),简称为C程序。C程序一般由一个或多个文件组成,为了表示这些文件中存放的是C程序,他们必须以.c作为文件的后缀(扩展名)。【例1.1】 在屏幕上输出如下内容:Hello, EveryoneStudy hard!程序如下:# includevoid main()printf(Hello, EveryonenStudy hard!);运行情况如下:Hello, EveryoneStudy hard!程序说明: 这是一个简单的C程序。

13、编译预处理命令“# include”的作用是将“stdio.h”文件的内容嵌入到程序中,使输入输出能正常执行。 main是函数名,后面必须有一对圆括号。一个完整的C程序必须有一个main函数(即主函数)。一个C程序总是从main函数开始执行的。main前面的void指明了main函数的返回值类型,void表示空,就是不返回任何值。 void main()下面有一对花括号,花括号内的部分称为函数体,由若干语句组成,用于完成函数的功能。 printf是C的库函数中的一个函数,其作用是在屏幕上输出指定的内容。此程序中输出“Hello, EveryonenStudy hard!”字符串,其中“n”是输

14、出一个换行,使后面的“Study hard!”字符串在下一行输出。C语言规定每个语句以分号(;)结束,分号是语句不可缺少的部分。第一行的“# include”并不是C语句,在末尾不加分号,它是一条预处理命令,在编译之前执行。【例1.2】一个简单的加法计算程序,求两个整数的和。程序如下:#includevoid main()int x,y,sum; /* 定义存放整数的变量x、y、sum */ printf(Input a integer:); /* 显示提示信息“Input a integer:” */ scanf(%d,&x); /* 给变量x输入一个整数 */ printf(Input a

15、nother integer:); /* 显示提示信息“Input another integer:”*/ scanf(%d,&y); /* 给变量y输入一个整数 */ sum=x+y; /* 计算x+y, 把结果赋给sum */ printf(sum=%dn,sum); /* 输出sum的值 */ 运行情况如下:Input a integer: 3Input another integer: 5sum=8程序说明: 整个程序由一个main函数组成。 “int x, y, sum;”是变量定义语句,它告诉计算机,程序中用到整型变量x,y,sum,并为他们分配存储单元。 “scanf(%d,&x

16、);”是输入语句。其中,scanf是C的库函数中的一个函数,其作用是给指定的变量输入数据,%d是格式说明符,&x表示x的地址,该语句表示给x输入一个整数。当程序执行到该语句时,系统处于等待状态,等待用户从键盘输入一个整数,然后按回车键(Enter键),该整数就赋给了相应的变量。在本书中,用符号“”表示回车键(Enter键),如3表示从键盘输入3,再按回车键。 “sum=x+y;”是计算两个变量x与y的和,并把结果存放到变量sum中。 “printf(sum=%dn,sum);”中的“%d”是格式说明符,表示在该位置输出sum的值,如本例中输出:sum=8。 /* */ 是注释,在程序执行中不起

17、任何作用,只是增加程序的可读性。任何文字都可用“/*”和“*/”括起来,作为程序的注释部分。【例1.3】输入三个数,求其中最大的数。程序如下:#includefloat max(float x, float y) /* 定义求两个实数的最大值的函数max */ float z; /* 定义存放实数的变量 z */ if(xy) z=y; else z=x; /* 比较x和y,将较大者赋给 z */ return z; /* 返回z的值 */void main() float a,b,c,d,e; /* 定义存放实数的变量a、b、c、d、e */ printf(a,b,c=?n); /* 输出提

18、示信息“a,b,c=?” */ scanf(%f%f%f,&a,&b,&c); /* 输入三个实数,分别赋给a、b、c */ d=max(a,b); /* 调用函数max,求a,b较大者 */ e=max(d,c); /* 调用函数max, 求d,c较大者 */ printf(max=%fn,e);运行情况如下:a, b, c=?3 8 -6max=8.程序说明: max函数的作用是将两个实数x和y中的较大者。 语句“if(xy) z=y else z=x;”是对x、y作比较,选择较大者赋值给z。 语句“return z;”将z的值作为函数max的函数值(即返回值)。返回值是通过函数名max带

19、回到函数的调用处。 在main函数中通过语句“d=max(a,b);”调用函数max,求出a、b中较大者,并把它赋给变量d,然后通过语句“e=max(d,c);”再一次调用函数max,求出d、c中的较大者,并赋给变量e,e即为三个数的最大值。1.4.2 C程序结构C程序由函数、编译预处理命令及注释三部分组成。1函数C程序是由函数(function)构成的。一个完整的C程序可以由一个或多个函数组成,其中必须有一个main函数(主函数),且只有一个main函数。C程序执行时,总是从main函数开始执行,且与main函数在整个程序中的位置无关。函数包括两部分: 函数首部,即函数的第一行。包括函数名、

20、函数类型、函数参数(形参)名、参数类型。例如,例1.3中的max函数的首部为float max (float x, float y) 函数类型 函数名 参数类型 参数名 参数类型 参数名一个函数名后面必须有一对圆括号,函数参数可以没有,如main()。 函数体,即函数首部下面的花括号内的部分。函数的结构形式如下:函数类型 函数名(参数) 函数体 函数体由各类语句组成,执行时按语句的先后次序依次执行,每个语句必须用分号(;)结尾。2编译预处理命令程序中每一个以“#”号开头的行,是编译预处理命令,一般放在程序的最前面。不同的编译预处理命令完成不同功能。如“#include” 命令的作用是将stdi

21、o.h文件的内容嵌入到源程序中。3注释程序中的注释(comment)部分在编译时均被忽略掉,所以注释在程序执行时不起任何作用。注释的目的是增加程序可读性,方便别人的阅读或自己以后的回顾。可以用 /* */对C程序中的任何部分作注释。1.5 C程序在计算机上执行1.5.1 C程序执行的步骤用C语言编写的源程序(source program)不能立即在计算机上执行,必须由编译程序将其翻译成用机器语言(由0,1组成的二进制指令)构成的目标程序,然后将该目标程序与系统的函数库连接起来,形成可执行程序。C语言的编译系统主要由编译程序(compiler)、连接程序(linker)、函数库等组成。如果要使C

22、程序在一台计算机上执行,必须经过编辑、编译和连接,最后得到可执行程序(executable program)。(1) 编辑编辑是建立或修改C源程序文件的过程,并以文本的形式存储在磁盘上,其扩展名为.c。(2) 编译C语言是计算机高级语言,由它编写的源程序必须经过编译程序对其进行编译,生成目标程序文件,其扩展名为.obj。(3) 连接编译生成的目标程序机器可以识别,但还不能直接执行,还需要将目标程序与库文件进行连接处理,连接工作由连接程序完成。经过连接后,生成可执行程序文件,其扩展名为.exe。(4) 运行C源程序经过编译、连接后生成了可执行文件(.exe)。要运行可执行文件,既可在编译系统环境

23、下运行,又可脱离编译系统,直接在Windows资源管理器下双击可执行文件名。C程序运行的全过程,如图1.2所示。图1.2 C程序运行过程在图1.2中,当编译或连接出现错误时,说明C程序编写时有语法错误;若在运行时出现错误或结果不正确,说明程序设计上有问题 (逻辑错误),都需要修改源程序并重新编译、连接和运行,直到程序运行正确为止。最后得到的可执行文件f.exe,该文件可以脱离C编译系统,直接在计算机上运行。例如,在编辑输入例1.2的源程序时,漏写语句中任何一个分号、逗号、括号等会导致语法错误,编译时出错。如果将程序中的语句“sum=x+y;”错写成“sum=x-y;”将导致程序执行时的结果不正

24、确,说明程序有逻辑错误,必须再进行修改。1.5.2 用Turbo C 2.0 运行C程序的步骤Turbo C 2.0是在微机上广泛使用的编译系统。它具有方便、直观、易用的界面和丰富的库函数。它向用户提供了一个便于使用的集成开发环境,把程序的编辑、编译、连接和运行等操作全部集中在一个界面上。另外,Turbo C 2.0也是全国计算机等级考试(二级C语言)指定的编译系统。为了能使用Turbo C 2.0,首先应将Turbo C 2.0系统装入到磁盘的某一目录(文件夹)下。例如,在Windows XP环境下,将Turbo C 2.0系统存放在D盘的TC文件夹中。下面给出用Turbo C 2.0 运行

25、C程序的步骤:(1) 启动Turbo C 2.0系统。首先进入到文件夹TC中,双击tc.exe文件即可进入到Turbo C 2.0集成环境,如图1.3所示(亦可为tc.exe文件,在桌面上建立一个快捷方式,双击该快捷方式即可)。图1.3 Turbo C 2.0集成环境从图1.3可以看到集成环境的上部有一行“主菜单”,包括下面8个菜单项:File Edit Run Compile Project Options Debug Break/watch以上8个菜单项分别代表:文件操作、编辑、运行、编译、项目文件、选项、调试、中断/观察等功能。用键盘上的“”和“”键可选择所需要的菜单项。(2) 编辑源程

26、序。例如,要运行例1.1中的程序,要选择“Edit”菜单,进入到编辑区(图1.3中间部分),将C程序输入到编辑区,如图1.4所示。图1.4 将例1.1中的程序输入到编辑区(3) 编译源程序。按“F10”键,选择“Compile”菜单项中的“Compile to OBJ”子菜单项,如图1.5所示,然后按回车键即可完成编译源程序的工作,生成一个扩展名为“.obj”的目标程序文件。如果有错误,要回到第(2)步,改错。图1.5 编译C程序(4) 连接目标程序。类似于上面的编辑C程序,按“F10”键,选择“Compile”菜单项中的“Link EXE file”子菜单项,然后按回车键即可完成连接工作,生

27、成一个扩展名为“.exe”的可执行文件。如果有错误,要回到第(2)步,改错。另外,也可将第(3)步和第(4)步中的编译和连接用一个命令完成,即选择“Compile”菜单项中的“Make EXE file”子菜单项。(5) 执行程序。按“F10”键,选择“Run”菜单项中的“Run”子菜单项,如图1.6所示,然后按回车键即可完成运行程序工作。图1.6 运行C程序要查看结果,选择“Run”菜单项中的“User screen”子菜单项,然后按回车键即可看到程序的运行结果。看完结果后,按任意键可回到编辑窗口。如果有错误,要回到第(2),改错。如果程序没有错误,可将原程序保存(存盘)。选择“File”菜单项中的“Sav

温馨提示

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

评论

0/150

提交评论