C语言简明教程_第1页
C语言简明教程_第2页
C语言简明教程_第3页
C语言简明教程_第4页
C语言简明教程_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

第1章C语言入门PAGE17C语言简明教程PAGE14第1章C语言入门【本章要点】简单了解C语言的历史与发展;掌握C语言程序的主要组成部分;掌握C语言程序的运行过程与运行环境(TC2.0、VC++6.0);了解C++和C#。1.1C语言的历史与发展C语言具有功能强大、语句精少、程序简练、灵活方便、效率高、移植性好等特点,因此使用非常广泛,不仅在计算机软件专业人员中被广泛使用,而且受到广大计算机应用人员的青睐。与计算机语言有关的各类考试中,也都将C语言作为考试科目之一。由此可见,C语言是初学者学习计算机语言的首选语种。C语言是由B语言演变而来的,其命名源于BCPL语言的第二个字母。1972年,在PDP-11计算机上实现了最初的C语言,它的操作系统平台是UNIX。1977年,出现了首个不依赖于具体机器的C语言编译文本。1978年后,C语言得到了广泛的移植和应用。C语言的发展速度非常快,其发展是以版本为标志的。1983年,ANSI公布了ANSIC。1987年,ANSI又公布了新标准——87ANSIC。1990年,ISO将87ANSIC作为自己的标准(ISO9899—1990)。1994年,ISO修订了C语言标准。发展至今,C语言已经有了40年的历史,在高级语言中占据着重要的地位。C语言有很多版本,如MC(MicroSoftC)、QC(QuickC)、TC(TurboC)、TC++(BorlandC++)、VC(VisualC)、VC++、C#等,目前被广泛使用的有TC、TC++、VC++和C#。本书介绍的是传统的C语言,但由于书中的程序都是在VC++6.0的环境中调试运行的,因此书中实例的主函数前面都带有void标记。1.2C语言的简单程序下面通过几个简单的例子,使读者对C语言有一个初步的认识。例1.1在屏幕上显示本书的书名。程序代码1 /*例1.1显示本书的汉字书名*/2 #include<stdio.h>3 voidmain()4 {5 printf("C语言简明教程\n");6 }运行结果C语言简明教程上述程序虽然简单,却包含了C程序的几个基本要素:注释语句、预处理语句、主函数开头、函数体的开始、函数体以及函数体的结束。下面对其进行简单说明。第1行:注释语句。该注释语句用于对程序进行注解,以“/*”开头,以“*/”结束,两者之间的内容均为注释的内容。需要注意的是,TC环境下只能使用“/*”和“*/”进行注释,VC环境下除可以使用“/*”和“*/”进行注释外,还可以使用“//”进行注释。二者的区别在于:“//”只能注释一行内容;“/*”和“*/”除可以注释一行内容外,还可以注释一段内容。注释语句会呈绿色显示(在VC++6.0环境中,后同),程序不执行注释内容,是“给人看的”。注释语句在程序中可用12个字来概括,即“可有可无,可多可少,位置不限”。第2行:预处理语句。表示在编译程序之前,先执行以“#”开头的代码行,以便于其他代码段能顺利被执行。这一点类似于开重要会议前的预备会议。在这里,include的意思是包含,它表示将其后面的文件包含进来;<stdio.h>是一个用尖括号括起来的文件名,其中,std是标准的英文缩写,io是输入、输出两个英语单词的首字母,连在一起,就表示标准的输入输出,也就是键盘和显示器,意思是从键盘输入,由显示器输出。程序中应根据需要选取预处理语句,其位置一般在程序的开始处。第3行:主函数开头。其中,void表示空类型,说明主函数没有数据类型;main的意思为主、主要,即该函数为主函数;一对圆括号用来括起函数的参数,这里括号中为空,表示没有参数。一个程序可以包括多个函数,但只能有且必须有一个主函数。主函数之外的函数称为其他函数,其特点是“可有可无,可多可少”。当有多个函数时,它们之间的位置关系不受限制,但程序总是从主函数处开始执行(无论主函数位于何处)。第4行:函数体的开始。左花括号在程序中一般用作函数体和复合语句的开始。它必须与右花括号成对使用,不能单独出现。第5行:函数体。函数要完成的具体工作,需要在函数体中给出,它是语句的集合。本例中,函数体内仅有一个标准输出库函数语句,其作用是在屏幕上显示“C语言简明教程”几个汉字。在这里,print是打印(即显示)的意思,f是函数(function)英语单词的首字母,合在一起就表示打印输出函数。圆括号内是该打印函数的参数,这里是用一对双引号括起来的内容,其中,汉字是直接打印输出的内容,“\n”是控制符号,意思是换行。函数最后的分号是语句结束符号(C语言的语句用分号作为结束标志)。第6行:函数体的结束。右花括号在程序中一般用作函数体和复合语句的结束。在这里,右花括号也是程序的结束。读者可能已经发现,程序中所用到的字母几乎全为小写,这是由C语言系统规定的。另外,函数体中的语句在书写上分层次向右缩进,这是程序编写约定俗成的一个习惯,其目的是让程序层次清晰,结构明确。读者应遵守系统规定,养成良好的编程习惯。例1.2由键盘输入矩形的长和宽,求矩形的面积。程序代码1 /*例1.2求矩形面积*/2 #include<stdio.h>3 voidmain()4 {5 floatl,w,s;6 printf("l=?,w=?\n");7 scanf("%f,%f",&l,&w);8 s=l*w;9 printf("s=%f\n",s);10 }运行结果l=?,w=?5,10<回车>s=50.000000例1.2与例1.1相比,多出了定义变量、输入数据、计算、输出结果等内容,使得程序能实现简单的运算功能。第5行,定义变量。由于本程序是计算任意一个矩形的面积,其长、宽都是不固定的,面积也是不固定的,所以用变量来代表3个参数。float的意思是浮点,即表示实数(可能有小数);l、w、s3个变量分别代表矩形的长、宽及面积,其取名来自英语单词的首字母和数学习惯。该变量定义语句必须写在函数体的开头,且只能写一次。这是因为,C语言规定,变量必须先定义后使用,且不允许多次定义(但可以多次使用)。第6行:提示行。用来提示用户接下来要输入什么内容。第7行:第8行:计算。这是一条计算矩形面积的语句(赋值语句),类似于数学公式“s=l×w”,只不过用星号代替了乘号。第9行:输出结果。通过printf函数输出矩形的面积。这里的输出函数与第6行有所不同,它的参数也有两组:第一组是双引号中的内容,包括提示内容“s=”、换行符“\n”和格式符“%f”;第二组就是输出的对象s。例1.2比例1.1多了4条语句,这些语句在次序上必须如此,不能交换。其作用是告诉计算机先干什么,后干什么,使其严格按顺序逐条执行各语句。这充分体现了程序设计的宗旨——语句执行的过程及顺序(关键是顺序)。例1.3调用函数,计算3个整数的平均数。程序代码1 /*例1.3求3个整数的平均数*/2 #include<stdio.h>3 /*下面的average函数用于求3个数的平均数*/4 floataverage(inta,intb,intc)5 {6 floatav;7 av=(a+b+c)/3.0;8 return(av);9 }1011 voidmain()12 {13 intx,y,z;14 floatave;15 printf("inputthreeintegersx,y,z:\n");16 scanf("%d,%d,%d",&x,&y,&z);17 ave=average(x,y,z);18 printf("ave=%f\n",ave);19 }运行结果inputthreeintegersx,y,z:3,5,9<回车>ave=5.666667与前面两个例子相比,例1.3又有所不同。(1)程序中包括两个函数(库函数除外):主函数(main)和其他函数(average)。其中,average函数为用户自定义函数,且average函数在前,main函数在后,符合其他函数“先定义,后使用”的习惯。(2)(3)数据类型有两种:实型(float)和整型(int)。第4~9行为average函数。下面就有关语句作如下说明。第4行:定义了一个average函数,其作用是计算3个数的平均数。该函数的首部由3部分组成:函数类型(float)、函数名(average)及函数的参数(inta,intb,intc)。第6行:定义了一个用于存放平均数的变量av。因为3个数相加再除以3之后求得的平均值一般会有小数,所以变量av是实型。第7行:计算平均数的语句。请注意,这里一定要用3.0,否则结果将会是整数。第8行:返回结果。return的意思是返回,av则是要返回的变量。该语句将变量av的值返回到主函数。第11~19行为main函数。第13行:主函数中定义了3个变量(x,y,z),与average函数中的3个参数(a,b,c)一一对应。第14行:主函数中定义了一个用于存放结果的变量ave,与average函数中的变量av相对应。第16行:输入数据函数。这里用到了“%d”格式符,表示输入的是3个十进制整数。第17行:调用average函数,将返回的结果存放在变量ave中。第18行:输出结果函数。以上3个例子各有特点,基本上代表了C语言的简单程序类型。通过它们,读者可对C程序有一个初步的了解。1.3C语言程序的主要组成部分前面学习了程序的基本结构,下面来全面介绍C语言程序的主要组成部分。1.3.1总体结构一个C语言程序,从总体上看,是函数的序列。它由各种函数组成,包括主函数、其他函数(即用户自定义的函数)、系统提供的库函数等。此外,还有注释、预处理以及后面要学到的函数原型说明、全局变量说明等。它们的次序为:注释、预处理、函数的原型说明、全局变量说明和函数序列。前4类的排列次序可调换,但函数序列必须在它们之后。注意,预处理结束时没有分号,函数原型说明及全局变量说明结束时必须有分号;另外,函数必须以花括号结束。1.3.2构成元素。程序中,各部分内容以字母为主,字母以小写为主;还可以出现数字、符号、汉字等。1.3.3书写规定编写C语言程序时,应遵循以下书写规定。(1)一条语句可以写在一行,也可以写在多行,但必须以分号作为结束(复合语句除外)。(2)一行可以写一条语句,也可以写多条语句,最好写一条语句。(3)对于有结构的语句,最好采用缩进形式,这样层次更清晰,结构更明显。

1.4C语言程序的运行过程与运行环境C语言程序在不同版本下的实现是不一样的,下面分别进行介绍。1.4.1C语言程序的运行过程下面以流程图的形式给出C语言程序的运行过程,如图1-1所示。图1-1C语言程序运行过程流程图一个正确的C语言程序,其运行过程如下:源程序编写完毕并存盘后,生成一个*.c或*.cpp文件(TC环境中是*.c,VC++环境中是*.cpp);在系统编译正确的情况下(即第4步为N),形成*.obj文件;同样,在连接正确的情况下(即第6步为N),形成*.exe文件;最后,执行该*.exe文件即可。图1-1中,步骤1、4′、6′部分需要手动进行,其余部分则可由系统自动完成。另外,运行程序时,在VC++环境中还会自动生成许多临时性文件,读者可以不去理会它们。

1.4.2VC++6.0环境目前,大多数用户使用的都是PC机,在Windows操作系统下安装的C语言版本为VisualC++6.0(简称VC++6.0)。一个C语言程序在VisualC++6.0环境中的形成与执行过程如下:启动VisualC++6.0→进入VisualC++6.0界面→编辑源程序→存盘→编译程序→连接程序→执行程序→查看程序运行结果。下面,来详细介绍一下VC++6.0环境中C语言程序的运行过程。1.启动VC++6.0启动VC++6.0有两种方法:通过菜单命令启动或通过快捷图标启动。选择“开始”→“所有程序”→MicrosoftVisualC++6.0→MicrosoftVisualC++6.0命令(见图1-2),或双击桌面上的MicrosoftVisualC++6.0图标(见图1-3),即可打开MicrosoftVisualC++,其工作界面如图1-4所示。图1-2菜单命令启动图1-3快捷图标启动图1-4MicrosoftVisualVC++环境窗口MicrosoftVisualC++窗口中包括标题栏、菜单栏、工具栏、工程区、编辑区、显示区、状态行等区域。标题栏:显示文件名等信息。工具栏:显示常用的工具按钮。工程区:显示有关工程等信息。编辑区:在此输入程序和编辑、修改程序。显示区:主要显示出错信息等。状态行:显示当前工作状态。2.编辑源程序在VC++环境中编写源程序的方法有两种。(1)先建法即先建此类型的文件,然后再输入程序代码。在VC++6.0窗口中,选择“文件”→“新建”命令,打开“新建”对话框,如图1-5所示。选择“文件”选项卡,再在左侧列表中选择C++SourceFile选项,并在“文件名”文本框中输入要保存的文件名(扩展名为.cpp),在“位置”文本框中输入或选择文件保存的路径(如果不选,系统会用默认的路径),最后单击“确定”按钮即可创建一个空白的C++源程序。图1-5“新建”对话框接下来将程序的代码输入即可。注意,中间要定时存盘,最后退出之前一定要存盘。(2)后存法其操作步骤如下:单击工具栏中的“新建”按钮,直接进入输入源程序界面。输入程序代码,然后选择“文件”→“另存为”命令,打开“保存为”对话框,如图1-6所示。在“文件名”文本框中输入文件名(一定要给出扩展名),然后单击“保存”按钮即可。图1-6“保存为”对话框3.编译源程序编译源程序就是针对源程序进行语法检查。若没有任何语法错误和警告错误,则系统会在显示区给出编译成功的提示信息,如图1-7所示,并自动形成一个扩展名为.obj的目标文件。若程序中仍存在错误,则会在显示区给出编译不成功的提示信息,如图1-8所示。此时,只需再回到编辑状态进行改错即可。改错一般只改语法错误,可以暂时不管警告错误。编译查出的错误会显示在信息显示区,是英语句子,读者要仔细阅读(在提示信息的最前面有错误所在的行号,照此去改错也是比较容易的)。大多数情况下,编译部分总会出现一些错误,只不过是数量的多少而已。图1-7编译成功的标志图1-8编译不成功(有一个语法错误)的标志实现编译的方法有3种:一是单击工具栏中的“编译”按钮;二是选择“组建”→“编译”命令;三是按功能键Ctrl+F7。4.连接连接就是将语法无误的程序块组合起来,形成一个完整的程序。这部分产生的错误通常较少,如果有错,其提示形式类似于编译部分。连接也叫做生成(Build),连接无误后会生成一个.exe执行文件。→“连接”菜单命令;三是使用功能键F7。5.执行执行就是运行连接后生成的可执行文件。执行的方法同样有3种:一是单击工具栏中的执行按钮;二是选择“组建”→“执行”菜单命令;三是按功能键Ctrl+F5。6.查看程序运行结果程序执行后,会出现一个对话框。此时,如果程序不要求输入数据,会直接显示出运行的结果(见图1-9);如果要求输入数据,待数据输入完后,会将结果显示出来(见图1-10)。该过程中应仔细观察程序运行得出的结果是否正确,若正确,整个过程结束;否则,应回到编辑部分,重新修改程序,直到最终运行结果正确为止。图1-9执行后不需要输入数据的结果图1-10执行后需要输入数据的结果1.4.3TC2.0环境TC(TurboC,加速C)是C的一个较好的版本,使用的人数很多,使用的时间也很长,至今仍有不少的用户在使用它。TC最早是在DOS环境下运行的,现在的Windows环境也能使用。下面来简单介绍一下其使用方法。该系统非常小,仅占用约2.3MB空间。其下层有两个子文件夹:INCLUDE(包含)和LIB(库)。若在Windows环境中使用,会再生成一个文件夹Debug(调试)。系统的文件有几十个。1.启动TC2.0选择“开始”→“所有程序”→TC2.0命令,或双击桌面上的TC2.0图标,即可打开TC2.0的窗口,如图1-11所示。该窗口是一个DOS工作方式的界面,不能以图形方式工作(即不能用鼠标进行操作)。标题栏:显示文件名等信息。状态行:主要显示光标所在的行(Line)、列(Col)、插入(Insert)、缩进形式(Indent)、现在编辑的文件名(含路径)等信息。工作区:可在此输入、修改程序,当运行出现错误时,还会分出一块区域,用于显示错误信息。提示行:功能键提示。菜单栏菜单栏提示行状态行工作区标题栏图1-11TC的窗口2.编辑源程序在工作区中输入C语言程序,编写完毕并确认无误后,选择File→Save命令或File→Writeto命令均可将源程序存盘。如果该文件已保存过一次,也可按功能键F2快速存盘。3.编译、连接、运行通过菜单命令Run或功能键Ctrl+F9,可以一步编译、连接、运行编辑好的C程序。4.查看程序运行结果通过菜单命令Run→Userscreen或功能键Alt+F5,可以查看程序的运行结果。1.5C家族的其他主要成员C语言发展至今,拥有众多的成员及不同的版本,下面来介绍一下其主要的成员:C++和C#。1.5.1C++1986年,Borland公司开发了TurboC++,后又推出了BorlandC++。C++是在C语言的基础上扩充而成的,它与C语言最大的区别是增加了对面向对象程序设计的支持。下面来介绍一下C++与C的不同之处。常量:增加了常量定义,用const后带类型名。变量:增加了引用型变量(reference),来说明变量的别名。变量的说明可以分散,即可以与执行语句的次序无关。源程序:文件扩展名中增加了.cpp。头文件:在C中的<stdio.h>基础上,又增加了<iostream.h>(输入、输出流)。注释:增加了“//”,用于定义语句。主函数:main函数的前面加上了空类型(void)。其他函数:其他函数在使用之前,加了原型说明。函数定义时,形参可以省略,也可以赋初值。输入:增加了cin语句,用操作符“>>”输入,意为“取自”。输出:增加了cout语句,用操作符“<<”输出,意为“放到”。输入、输出中的操作符:oct表示转换成八进制,dec表示转换成十进制,hex表示转换成十六进制,setw用于设置输出的宽度。作用域区分符:增加了作用域区分符(::),可以引用外部变量。自由存储操作符:new和delete,用于提供动态存储分配和释放功能。在线函数:用inline来定义在线函数,提高了程序的运行效率。下面通过几个例子来了解一下C++程序。例1.4在屏幕上显示本书的书名(C++程序)。程序代码1 /*例1.4显示本书的汉字书名*/2 #include<iostream.h> //包含输入输出流3 voidmain()4 {5 cout<<"C语言简明教程";6 }运行结果C语言简明教程上述程序与C程序不同的地方主要有以下几点。第2行:包含的头文件不同,在其后使用了以“//”开头的注释语句。第3行:主函数前加了空类型(void)。第5行:输出使用的是cout函数。例1.5求自由落体的速度(C++的程序)。提示:计算公式为。程序代码1 /*例1.5求自由落体的速度v*/2 #include<iostream.h>3 constfloatg=9.8;4 voidmain()5 {6 intt;7 floatv;8 cout<<"t=";9 cin>>t;10 v=g*t*t/2;11 cout<<"v="<<v<<"\n";12 }运行结果t=5<回车>v=122.5现就例1.5与前面几个程序的不同之处做一个说明。第3行:定义常量。第6、7行:定义变量。第8行:提示信息。第9行:输入语句。第10行:赋值语句,用于计算自由落体速度。第11行:输出语句。1.5.2C#C#是由微软开发的新一代面向对象的程序语言,它是从C和C++语言中派生出来的,因此具有C和C++的功能,又在面向对象程序设计、网页制作等方面有着强大的功能。C#是为.NET量身定做的高级编程语言,最适合开发.NET应用系统。1.C#的主要特点(1)具有开创性C#是唯一没有在设计思路上加入之前程序开发语言遗传特点的新语言。(2)功能强大C#具有C和C++的功能,又在面向对象程序设计(OOP)、Web开发等方面具有强大的功能。除了可以使用API,还能使用VS.NET类库。C#还具有JAVA的许多技术。2.C#与C、C++的主要区别(1)默认情况下,C#在受控环境下运行,不允许直接操作内存,所以它没有在C和C++中大量使用的指针。(2)C#具有面向对象编程语言所应有的一切特性,如封装、继承、多态等。在它的类型系统中,每种类型都可以看作为一个对象,但只允许单继承,即一个类不会有多个基类,这样就避免了类型定义的混乱。(3)C#中没有全局常量、全局变量和全局函数,它们被封装在一个类中。因此,用C#编写的代码具有更好的可读性,而且很少出现命名冲突的情况。3.C#综述C#语句的主要特点如下所示。文件:源程序为*.cs(CSharp的缩写),可执行文件为*.exe。内容:采用小写字母编写程序语句,以分号(;)作为语句结束符。注释:与C++相同。算术操作符、赋值操作符、逻辑操作符及各类表达式)。程序的输入与输出:调用System空间下的Console(控制台)类的两个方法为ReadLine方法(用于行读入)和WriteLine方法(用于行写出)。语句:赋值语句(=)、分支语句(if、if…else、switch)、循环语句(for、for…each、while、do…while)、跳转语句(break、continue)、异常处理语句(try…catch、try…finally、try…catch…finally)。下面通过例子来简单认识一下C#的程序结构。例1.6在屏幕上显示“欢迎使用C#语言!”(C#程序)。程序代码1 usingSystem;2 classHello3 {4 publicstaticvoidMain()5 {6 Console.WriteLine("欢迎使用C#语言!");7 }8 }运行结果欢迎使用C#语言!下面对程序作简单解释。第1行:导入命名空间System。第2行:定义Hello类。第4行:Hello类中公共静态无类型的方法Main。第6行:方法Main的主体中子类Console(是命名空间System下的)的WriteLine方法(换行输出一串字符)。例1.7程序中输入与输出及变量的使用(C#程序)。程序代码1 usingSystem;2 classHello3 {4 publicstaticvoidMain()5 {6 Console.Write("请输入您的姓名:");7 Stringstr_bookName=Console.ReadLine();8 Console.WriteLine("您好!{0}",str_bookName);9 }10 }运行结果请输入您的姓名:张三丰您好!张三丰上述程序与例1.6的不同之处如下。第6行:使用了Write方法,不换行。第7行:定义了字符串变量str_bookName,用ReadLine方法输入。第8行:输出字符串变量str_bookName

温馨提示

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

评论

0/150

提交评论