收藏 分销(赏)

C语言程序设计2课件全套整本书电子讲义全书电子课件教学教程.ppt

上传人:丰**** 文档编号:10251514 上传时间:2025-04-30 格式:PPT 页数:589 大小:9.62MB
下载 相关 举报
C语言程序设计2课件全套整本书电子讲义全书电子课件教学教程.ppt_第1页
第1页 / 共589页
C语言程序设计2课件全套整本书电子讲义全书电子课件教学教程.ppt_第2页
第2页 / 共589页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第,1,章 语言概述,1.1 C,语言的发展简史,1.2 C,语言的特点,1.3,认识,C,程序,1.4 C,程序的运行与调试,Return,本章学习目标,了解,C,语言的发展简史和特点,掌握,C,语言的基本结构及如何编写可读性良好的,C,程序,掌握一个,C,程序的编辑、编译、运行和调试的一般过程,1.1 C,语言的发展简史,C,语言发源于著名的美国贝尔实验室,是由该实验室的研究人员,Dennis Ritchie,和,Ken Thompson,两人于二十世纪七十年代初在设计,UNIX,操作系统时开发出来的。,在,C,语言诞生以前,系统软件主要是用汇编语言编写的,原来的,UNIX,操作系统就是,1969,年由美国贝尔实验室的,Ken Thompson,和,Dennis Ritchie,利用汇编语言开发成功的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作,于是,Ken Thompson,于,1970,年设计出一种简单而且接近硬件的高级语言,B,语言,并用,B,语言写了,UNIX,操作系统。,1972,年到,1973,年间,,Dennis Ritchie,在,B,语言基础上又设计了,C,语言。,后来,,C,语言又被多次改进,并出现了多种版本。,80,年代初,美国国家标准化协会(,ANSI,),根据语言问世以来各种版本对语言的发展和扩充,制定了,ANSI C,标准(,1989,年再次做了修订)。,本书的叙述以,ANSI C,新标准为基础。,本书选定的编译环境是,Turbo C V3.0,。,目前,在微机上广泛使用的语言编译系统有,Microsoft C,、,Turbo C,、,Borland C,等。虽然它们的基本部分都是相同的,但还是略有差异,所以请大家注意自己所使用的编译系统的特点和规定(参阅相应的手册)。,Return,C,语言同时具有汇编语言和高级语言的优势。概括如下:,(,1,)语言简洁、灵活,程序执行效率高。,(,2,)运算符极其丰富,能够实现在其他高级语言中难以实现的运算功能。,(,3,)数据类型丰富,可实现各种复杂的数据结构的运算,。,(,4,)灵活的结构化控制语句,是理想的结构化程序设计语言;以函数为程序基本单位,容易实现模块化程序设计。,(,5,)语法不严,程序设计自由。,(,6,)具有直接对硬件进行控制的功能。,(,7,)可移植性好。,1.2 C,语言的特点,(,8,),C,语言的另一面:相对,“,难,”,学。,Return,1.3.1,一个简单的程序,1.3,认识,C,程序,Welcome to the C world!,/*exam1_1*/,#include,main(),printf(,“,Welcome to the C world!n,”,);,程序运行结果:,【,例,1-1】,在屏幕显示字符串,“,Welcome to the C world!,”,【,例,1-2,】,计算两个数的和并输出结果。,01,/*exam1_2*/,02,#include,/*,将,stdio.h,这个文件包含进来*,/,03,main(),/*,主函数名,函数从这里开始*,/,04,05,int a,b,sum;,/*,定义三个整形变量:,a,b,和,sum*/,06,a=5;,/*,给,a,赋值为,5*/,07,b=10;,/*,给,b,赋值为,10*/,08,sum=a+b;,/*,把,a+b,的值赋给,sum*/,09,printf(,“,sum is%d.n,”,sum);,/*,输出,sum,的值*,/,10,1.3.2,程序,的基本结构,下面再来看另一个简单的,C,程序,并从这个例子出发说明,C,程序的基本结构。,程序行最左边的行号是为了方便介绍程序而添加的,实际输入程序时是不需要的,。,【01】,第,1,行为注释,,C,语言的注释以,“,/*,”,和,“,*,/,”,作为注释内容的分界符。注释可增强程序的可读性,帮助我们理解程序的含义。,【02】,第,2,行是让计算机系统把文件,stdio.h,“,包含,”,进来。,C,语言里有关输入和输出的函数都定义在这个文件里,要把结果输出到屏幕上,就要调用输出函数,也就需要把,stdio.h,文件包含进来。,【03】,第,3,行为程序执行的起点,即,main(),函数,我们把它称为,“,主函数,”,。每一个,C,程序都由一个或多个函数组成,其中必须有一个名为,main,的函数。函数体由花括号括起来,,main,前的,int,是声明,main,函数的返回值类型为整形,,main,右边的园括号内的,void,表示这个函数没有参数。,【04】,第,4,行的左花括号,“,”,为,main(),函数体的开始分界符。,下面我们逐行对这个程序进行详细解说。,【06】,第,6,行是一个赋值语句,把整数,5,赋给,a,。,【07】,第,7,行也是一个赋值语句,把整数,10,赋给,b,。,【08】,第,8,行把运算表达式,a+b,的计算结果赋给,sum,。,【09】,第,9,行是调用系统函数,printf(),按照双引号(,”,)内的指定格式输出结果,在,%d,位置上用,sum,的值代替,引号内的其余字符照原样输出,,n,是换行符,告诉计算机在输出完结果后将光标移到下一行的开头。,【10】,第,10,行是右花括号,“,”,是,main,()函数的结束分界符。,【05】,第,5,行声明,a,、,b,和,sum,为整形变量。,C,语言在使用变量之前必须先声明其类型,这是与,Basic,语言不同的。,一个,C,程序基本包括以下几个部分:,1,#include,宏命令及头文件,2,main(),函数,3,花括号,、语句块和函数体,4,变量,5,语句,6,输入和输出,当我们在程序中加入,#include,时,,C,编译系统会自动把,内的头文件的内容全部包含进来,并且放置在,#include,这行的位置上。,有时我们需要将已经编写好的另一个程序包含到本程序中,或者在程序中需要调用系统库函数,这时我们就需要使用,#include,命令。,如,上例中由于使用系统标准输出函数,printf(),所以要将含有该函数声明信息的,stdio.h,文件包含进来。,#include,main(),main(),char*_Cdecl gets (char*s);,void _Cdecl perror(const char*s);,int _Cdecl printf(const char*format,.);,Return,一个,C,程序由一个或多个函数构成,其中必须,有且只有一个主函数,main(),,一个函数可以调用其他函数,如上面例子中,main,函数调用,printf,函数。所有的,C,程序都是从,main,函数开始执行,并在,main,函数中结束。,Return,C,程序以,函数,为单位,编写,C,程序就是编写一个个函数。每个函数的主体都包括在一对花括号,“,”,内。有时把完成某个功能或操作的几个语句用一对花括号括起来,组成一个语句块(也叫复合语句)。若一个函数体内有多对花括号,则最外层的一对是函数体的分界符。,Return,变量,是一个,C,程序不可缺少的最基本的部分,是用来存放数据的。概括地说,一个计算机程序包括两个部分,第一部分是对数据的描述,第二部分是对操作的描述。变量就是用来描述数据的。,C,语言的变量必须先声明后使用,声明时要说明变量的数据类型和名字。,C,语言中的数据类型有整形(,int,)、浮点型(,float,)、字符型(,char,)等。,Return,每个,C,函数由若干个语句构成,每个语句以,“,;,”,结束,可以一行书写多个语句。,C,语言有表达式语句、函数调用语句、控制语句、变量定义语句等。如上面,main(),函数体有,5,个语句,第,1,个语句(,【05】,行)为变量定义语句,第,24,语句(,【06】【08】,行)为赋值(表达式)语句,第,5,个语句(,【09】,行)为函数调用语句。,Return,每个程序必须有,0,个或多个输入,有至少一个输出。如果一个程序没有输出,我们就无从知道它的运算和操作结果。,C,语言的输入和输出是通过调用系统提供的标准输入输出函数实现的。如上例中调用,printf(),函数以指定格式输出计算结果。上例中的,“,printf(,“,sum is%dn,”,sum);,”,指定以双引号内的格式输出,,%d,处将代入相应的,sum,的值,双引号内的所有其它字符照原样输出,,“,n,”,是换行符。,1.3.3 C,程序中的单词,C,语言的单词可分为标识符、关键字、分界符、空白、和运算符几类。,1.,C,语言的标识符,2.,C,语言的关键字,3.,C,语言的分界符,4.,C,语言的空白,5.,C,语言的运算符,在,C,语言中,我们称变量、函数的名称、符号常量或者标号为用户标识符。,C,语言的标识符由,英文大小写字母、数字或下划线,所组成,,首字母必须是英文字母或下划线,。标识符的长度没有限定,决定于使用的编译系统,如,Turbo,C,允许标识符长度为,32,个字符。通常取前,8,个字符为有效字符,所以给变量或函数取名时最好保证,前,8,个字符能够区别不同。,要注意的是,系统的,保留字,(又称关键字),是,不可以用作标识符,的。,以下是合法的标识符例子:,min,t,SIZE,M1,x10,count_1,_myargument,以下是不合法的标识符例子:,for,使用关键字,8h,以数字开头,-5,以减号开头,A*,出现非法字符*,xy,出现非法字符,)、小于(,=,)、小于等于(,=,)、不等于(,!=,),6,种,,赋值运算符(,=,),,等等。各种运算符的作用将分散在后面各章节分别作详细介绍。,注意:,C,语言的等于运算符由两个,“,=,”,组成,即,“,=,”,而赋值运算符是一个,“,=,”,。千万别写错!,1.3.4,如何编写可读性良好的,C,程序,1.,命名风格,2,注释风格,3,布局风格,标识符的命名习惯,尽量遵循如下原则:,(,1,),含义明确,(,2,),规范缩写,(,3,),规范分隔,(,4,),限制长度,(,5,),大小写约定,Return,C,语言的注释格式为:,/*,*/,。注释时要注意以下几点:,(,1,),“,/*,”,和,“,*,/,”,必须成对使用,且,“,/,”,和,“,*,”,、以及,“,*,”,和,“,/,”,之间不能有空格,否则都出错。,(,2,)注释的位置,可以单占,1,行,也可以跟在语句的后面。,(,3,)如果,1,行写不下,可另起,1,行继续写。,(,4,)注释中允许使用汉字。在非中文操作系统下,看到的是一串乱码,但不影响程序运行。,(,5,)编写程序时先编写注释、后编写代码;修改程序时先修改注释、后修改代码。,(,6,)注释不仅仅是只列出代码执行的功能,而且还应给出为什么如此编写代码的原因或理由,。,Return,一个程序的可读性与它的版面布局有很大关系。程序的版面布局又与花括号的格式和空白的使用密切相关。下面介绍常见的几种花括号格式以及空白的使用:,(,1,)花括号的格式,1),1TBS,2),Allman,3),Whitesmith,4),GNU,for(i=1;i=100;i+)sum=sum+i;,for(i=1;i=100;i+)sum=sum+i;,for(i=1;i=100;i+)sum=sum+i;,for(i=1;i=100;i+)sum=sum+i;,Return,(,2,)空白的使用,在一个程序中适当地使用空白可提高程序的可读性。下面重点说明一下缩进的格式和标识符周围的空白。,1),缩进,for(,j=0;j2;j+),sum=sum+aj;,2),标识符周围的空白,for(j=0;j2;j+),for(k=0;k3;k+),scanf(,“,%d,”,for(j=0;j2;j+),for(k=0;kresult(,用,=,表示存放,),(,4,)使,i+1=i,(,5,)如果,i,的值不大于,5,,返回(,3,)继续执行;否则输出,result,(此时的,result,的值就是,5,!),算法结束。,用自然语言描述的算法(求解步骤)如下:,绘制成流程图如下:,图,1-5,求,5,!的流程图,结束,1=result,开始,2=i,result*i=result,i+1=i,i5?,输出,result,false,true,开始,/,结束,程序前进方向,数据处理,判断,预定义函数,文件,输入,/,输出,连接点,图,1-6,常用的流程图符号,Return,在完成对程序的规划之后,我们便可以根据程序流程图,编写程序代码,了。在编写代码的过程中,我们会体会到先做规划的好处。程序规划得好,编写程序时逻辑清晰,不容易产生逻辑上的错误,避免反复修改,从而提高效率。编写代码时,不要忘记加上注释。加上注释不但方便别人了解程序的功能,而且方便日后对程序的维护与扩展。总之,一个好的程序员应该养成给编写的代码加上注释的好习惯。,程序编写完后,这些用计算机高级语言编写出来的源代码还不能直接被计算机执行,我们知道计算机能够理解的是由,0,和,1,所组成的二进制代码,所以还必须将写好的源程序翻译成为计算机能够理解的目标代码文件(扩展名为,obj,)。这个工作由高级语言系统提供的,编译程序,来完成。,Return,一个源程序经过编译后,若这个程序与库函数或其它程序没有任何联系,便可以执行了。否则,还必须经过,链接,(,link,),才能够生成可执行文件(扩展名为,exe,)。这时运行这个可执行文件,便可看到程序的运行结果了。,Return,程序通过了编译和链接,执行后得到的并不一定是期望的结果。这就说明程序虽然在语法上没有问题,但是可能在逻辑上出了问题,从而导致输出非预期的结果。这种情况下我们必须根据流程图,逐个,排除每个语句的逻辑错误,。另外,有时程序在某种输入数据条件下输出正确结果,但是在其它一些输入数据条件下得到不正确的结果。所以我们还必须使用,各种可能的输入数据,,对程序进行,测试,,才能保证在任何情况下程序都能正常运行,并得到正确结果,即确保程序的,“,健壮性,”,。,Return,当程序经过测试证明结果完全正确后,有时我们还需要对程序进行优化,以提高程序的运行效率。另外,还要对源程序进行适当的排版、增加注释等修饰性操作,使程序更加层次分明,更加易读。最后,千万别忘记把我们的劳动成果妥善保存起来。,1.4.2,如何使用,Turbo C/C+3.0,运行与调试,C,程序,(,1,),启动,TC,,进入,TC,集成环境。,(,2,)编辑(或修改)源程序。,编辑一个新文件,选择,File,菜单的,New,菜单项。,图,1-5,编辑一个新文件,1.,运行一个,C,程序的一般步骤,修改一个旧文件,选择,File,菜单的,load,菜单项。,图,1-9,调入已经存在的文件,保存文件,选择,File,菜单的,save,或,write,to,菜单项。,以,原文件名,进行保存,选择,Save,;以,新的文件名,保存,选择,Write,to,。,图,1-6,以新文件名保存,(,3,)编译,选择,Compile,菜单的,Compile to OBJ,菜单项。,图,1-9,编译,(,4,)连接,选择,Compile,菜单的,Link EXE file,菜单项。,图,1-10,连接,注意:若想要一次性完成,编译和连接,,可以直接按,【F9】,,也可以按,【F10】,或,【Alt+C】,后选择,Compile,菜单的,Make EXE file,菜单项并回车即可。,(,5,)运行,选择,Run,菜单的,Run,菜单项。,图,1-11,运行,注意:若想要一次性完成,编译、连接并运行,,可以直接按,【Ctrl+F9】,并回车即可。,2.,如何设置用户文件存放目录,选择,File,菜单的,Change dir,项,在弹出的,“,New Directory,”,对话框中输入已建立好的自己的工作目录名即可(见图,1-18,)。,图,1-12,设置用户工作目录,3.,如何设置,TC,工作环境,图,1-13 TC,工作环境设置,图,1-14,保存工作环境设置,假如安装时系统文件存放在,C:Turboc2,目录下,而用户的目标文件和可执行文件存放在,C:output,目录中,则各项内容设置如图,1,13,所示。,4.,常用快捷键及其功能,请看书中表,1-2,。,Return,本章结束谢谢!,第,2,章 基本数据类型、运算符与表达式,2.1,C,语言的数据类型,2.2,常量与变量,2.3,整型数据,2.4,实型数据,2.5,字符型数据,2.6,各类数据混合运算,2.7,C,语言的运算符与表达式,2.8,运算符的优先级及其结合性,Return,本章学习目标,熟悉,C,语言的数据分类,掌握常量的表示方法与变量赋初值的方法,掌握不同类型数据间的混合运算,掌握基本运算符及其表达式的使用,2.1,C,语言的数据类型,C,语言提供了以下一些主要数据类型:,说明:,C,语言为每个类型定义了一个标识符,称为类型名。例如:整型用,int,标识、字符型用,char,标识等。一个类型名由一个或几个关键字组成,仅用于说明数据属于哪一种类型。,对于基本数据类型,按取值是否可改变分为常量和变量两种。在程序执行过程中,其值不发生改变的量称为常量,取值可变的量称为变量。它们可与数据类型结合起来分类。例如,可分为整型常量、整型变量、字符常量、字符变量等。在程序中,常量是可以不经过说明而直接引用的,而变量则必须先说明后使用。,Return,2.2,常量与变量,在程序运行中,其值不改变的量称为常量。常量区分为不同的类型,如:,5,、,0,、,-7,为整型常量,3.2,、,-4.68,为实型常量,a,、,f,为字符常量,常量从字面形式即可判别。也可用一个标识符代表一个常量,称为符号常量。习惯上,符号常量名用大写,变量名用小写字母表示,以示区别,例如:,#define PI 3.1415926,Return,2.2.1,常量,【,例,2-1】,符号常量的使用。,已知圆半径为,r,,求圆周长,c,和圆面积,s,的值。,#define PI 3.1415926,main(),float r,c,s;,scanf(,“,%f,”,c=2*PI*r;,s=PI*r*r;,printf(,“,c=%6.2f,s=%6.2fn,”,c,s);,在该程序中,用,#define,命令行定义,PI,,,PI,为定义的符号常量代表,3.1415926,,此后凡在程序中出现的,PI,都代表,3.1415926,。,从上面的例子可以看出使用符号常量的好处:,一是含义清楚、见名知意。看程序时从,PI,就可以知道它代表圆周率;二是修改方便,一改全改。如要,“,#define PI 3.1415927,”,,则在程序中 所有出现,PI,的地方值全部改为,3.1415927,。,Return,在程序运行时其值可以改变的量称为变量。,变量是由变量名、变量值和存储单元组成的。,2.2.2,变量,1,变量名的命名规则,:,变量名用标识符表示。在,C,语言中,用来对变量、符号常量、函数、数组等数据对象命名的有效字符序列统称为标识符。,C,语言规定标识符只能由,字母,、,数字,和,下划线,3,种字符组成,且第一个字符必须是,字母或下划线。,下面列出的是合法的标识符,可作为变量名:,abc,,,sum,,,f4,,,student_1,下面是不合法的标识符:,8h,以数字开头,-5,以减号开头,A*,出现非法字符*,xy,出现非法字符,=!=,),逻辑运算符 (,!&|,),位运算符 (,|&,),赋值运算符 (,=,及其扩展赋值运算符),条件运算符 (,?:,),逗号运算符 (,),指针运算符 (*,&,),求字节数运算符 (,sizeof,),强制类型转换运算符 (类型),分量运算符 (,.-,),下标运算符 (,),其它 (如函数调用运算符,(),),C,语言有以下类型的表达式:,赋值表达式,如:,a=1,算术表达式,如:,1*2+3/4.5,关系表达式,如:,47,逻辑表达式,如:,84&ab?a:b,逗号表达式,如:,a=1,,,b=2,,,c=3,位表达式,如:,0&1=0,1|1=1,10=1,2.7.1,算术运算符和算术表达式,1.,算术运算符,C,语言提供的算术运算符及功能如下:,+,加法运算符或正值运算符。如,31+18,,,+2,。,-,减法运算符或负值运算符。如,6-3,,,21+(-57),。,*乘法运算符。如,4*1.9,。,/,除法运算符。如,5/3,。,%,模运算符或称取余运算符,要求,%,的两边必须为整型数据。如,123%15,,,2%7,都是正确的,而,25%1.5,,,12.0%6.0,都是错误的表示。,2.,算术表达式,用算术运算符和括号将数据对象连接起来的式子,称为算术表达式。运算对象包括常量、变量、函数等。,例如:,3+6*9,(x+y)/2-a,a*b+c-1.5+a,都是算术表达式。,算术运算符的结合方向为,“,自左至右,”,。,【,例,2-13】,将,430,分钟换算成小时和分钟表示,然后输出。,/*exam2_13*/,main,(),int i,h,m;,i=430;,h=i/60;,m=i-60*h;,printf(,“,n%d minutes:%d hour%d minutes,”,i,h,m);,程序运行结果:,430 minutes:7 hour 10 minutes,演示,【,例,2-14】,求表达式,2+d-10,的值。(设,a=64,,,d=6,),/*exam2_14*/,#include /*,调用标准数学函数*,/,main(),float a,d,s;,a=64,d=6;,s=2*sqrt(a)+d-10;,printf(,“,n%6.2f,”,s);,程序运行结果:,12.00,演示,2.7.2,自增与自减运算符,1.,功能,自增运算符,+,的作用是使变量的值增,自减运算符,-,的作用是使变量的值减。,2.,用法与运算规则,自增、自减运算符都有两种用法:,(,1,)前置运算,运算符放在变量之前:变量、变量,(,2,)后置运算,运算符放在变量之后:变量、变量,【,例,2-16】,自增、自减运算符的用法。,/*exam2_16*/,main(),int x=6,y;,printf(x=%dn,x);,/*,输出,x,的初值*,/,y=+x;,/*,前置运算*,/,printf(y=+x:x=%d,y=%dn,x,y);,y=x-;,/*,后置运算*,/,printf(y=x-:x=%d,y=%dn,x,y);,程序运行结果:,x=6,y=+x:x=7,y=7,y=x-:x=6,y=7,演示,注意:在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。,Return,2.7.3,赋值运算符和赋值表达式,1.,赋值运算符,赋值运算符为,“,=,”,,它的作用是将一个数据赋给一个变量。,转换原则:,先将赋值号右边表达式类型转换为左边变量的类型,然后赋值。,【,例,2-17】,赋值运算中类型转换的规则。,/*exam2_17*/,main(),int i=5;,/*,说明整型变量,i,并初始化为,5*/,float a=3.5,a1;,/*,说明实型变量,a,和,a1,并初始化,a*/,double b=123456789.123456789;,/*,说明双精度型变量,b,并初始化*,/,char c=A;,/*,说明字符变量,c,并初始化为,A*/,printf(i=%d,a=%f,b=%f,c=%cn,i,a,b,c);,/*,输出,i,,,a,,,b,,,c,的初始值*,/,a1=i;i=a;a=b;c=i;,/*,整型变量,i,的值赋值给实型变量,a1*/,/*,实型变量,a,的值赋给整型变量,i*/,/*,双精度型变量,b,的值赋值给实型变量,a*/,/*,整型变量,i,的值赋值给字符变量,c*/,printf(i=%d,a=%f,a1=%f,c=%cn,i,a,a1,c);,/*,输出,i,,,a,,,a1,,,c,赋值以后的值*,/,程序运行结果:,i=5,a=3.500000,b=123456789.123457,c=A,i=3,a=123456792.000000,a1=5.000000,c=,演示,2.,复合的赋值运算符,在赋值符,“,=,”,前加上某些运算符,可以构成复合赋值运算符。即,+=,,,-=,,*,=,,,/=,,,%=,,,=,,,&=,|=,=(,共,10,种,),复合赋值运算符均为双目运算符,右结合性。,功能,:对,变量名,和,表达式,进行复合赋值运算符所规定的运算,并将运算结果赋值给复合赋值运算符左边的,变量名,。,3.,赋值表达式,赋值表达式:,由赋值运算符组成的表达式称为赋值表达式。,赋值表达式一般形式:,变量名 赋值运算符 表达式,赋值的含义:,将赋值运算符右边的表达式的值存放到左边变量名标识的存储单元中。,例如:,a=5+b;,执行赋值运算,将,5+b,的值赋给变量,a,,同时整个表达式的值就是刚才所赋的值。,赋值运算符的功能:,一是计算,二是赋值。,Return,2.7.4,关系运算符及其表达式,1.,关系运算符,C,语言提供了,6,种关系运算符,:,大于,=,大于或等于,=,等于,!=,不等于,2.,关系表达式,用关系运算符将两个操作数连接起来的合法的,C,语言式子,称为关系表达式。,例如,关系表达式,”,1=2,”,的值为,“,假,”,,,“,43,”,的值为,“,真,”,。,在,C,语言中,以,0,表示逻辑假,以,1,表示逻辑真,。当输出结果为逻辑真时,显示,1,;,当输出结果为逻辑假,显示,0,。,Return,2.7.5,逻辑运算符及其表达式,1.,逻辑运算符,C,语言提供三种逻辑运算符:,|,逻辑或(相当于,“,OR,”,),&,逻辑与(相当于,“,AND,”,),!,逻辑非(相当于,“,NOT,”,),逻辑运算符的运算规则:,&,:当且仅当两个运算量的值都为,“,真,”,时,运算结果为,“,真,”,,否则为,“,假,”,。,|,:当且仅当两个运算量的值都为,“,假,”,时,运算结果为,“,假,”,,否则为,“,真,”,。,!,:当运算量的值为,“,真,”,时,运算结果为,“,假,”,;当运算量的值为,“,假,”,时,运算结果为,“,真,”,。,逻辑运算符的优先级:,“,逻辑非,”,的优先级最高,“,逻辑与,”,次之,“,逻辑或,”,最低,2.,逻辑表达式,逻辑表达式是指用逻辑运算符将,1,个或多个表达式连接起来,进行逻辑运算的式子。在,C,语言中,用逻辑表达式表示多个条件的组合。,Return,2.7.6,逗号运算符,(,,,),及其表达式,逗号运算符的结合方向是,“,从左向右,”,,它的优先级是所有运算符中,最低,的。,用逗号运算符连接起来的表达式称为,逗号表达式,。,它的一般形式为:表达式,1,,表达式,2,,,,表达式,n,逗号表达式的运算过程是:,先算表达式,1,,再算表达式,2,,依次计算直到表达式,n,。整个逗号表达式的值是表达式,n,的值。,2.7.7,位运算符及其表达式,位运算符是位运算使用的运算符;位运算是指针对二进制位进行的运算。,C,语言提供以下,6,种位运算符:,关系运算符,含义,&,按位与,|,按位或,按位异或,按位取反,右移位,位运算符优先级别,:,高,&,|,低,Return,2.8,运算符的优先级及其结合性,1.,运算符的优先级,一般而言,单目运算符优先级较高,赋值运算符优先级低,算术运算符优先级较高。,2.,运算符的结合性,多数运算符具有左结合性,单目运算符、赋值运算符和复合赋值运算符为右结合性。,Return,作业与实验,作业:,习题二,上机操作:,实验二,Return,第,3,章 简单的,C,程序设计,本章学习目标,了解,C,语言的基本语句,熟悉程序设计的三种基本结构及其特点,掌握赋值语句的使用方法,掌握数据输入、输出函数的调用规则和格式控制字符的正确使用,掌握顺序结构程序的设计方法,Return,3.1,C,语句概述,3.2,程序的三种基本结构,3.3,赋值语句,3.4,数据输入输出,3.5,顺序结构的,C,程序设计举例,一个,C,程序一般包含若干个,C,语句。,C,语句可以分为以下七类:,1.,控制语句,(,1,)条件语句:,if,else,(在第,4,章中介绍),(,2,)多分支选择语句:,switch,case,(在第,4,章中介绍),(,3,)结束本次循环语句:,continue,(在第,5,章中介绍),(,4,)中止,switch,或循环语句:,break(,在第,5,章中介绍),(,5,)循环语句:,for,while,do,while,(在第,5,章中介绍),(,6,)转向语句:,goto,(在第,5,章中介绍),(,7,)从函数返回语句:,return,(在第,7,章中介绍),2,表达式语句:在表达式后面加分号构成。,例如:,a=3 /*,后面无分号,是表达式,不是语句*,/,a=3,;,/*,后面有分号,是语句*,/,i+,;,/*,为语句,相当于赋值语句,i=i+1,;*,/,3,变量定义语句:,定义指定类型的变量,也可同时给变量赋初值。,例如:,int a=8,;,/*,定义整型变量,a,,并给它赋初值,8*/,char c,;,/*,定义字符型变量,c*/,4,数据类型定义语句:,定义新的类型名来代表已有的类型名,以方便用户更好地使用,C,语言编写程序。,例如:,typedef char STR10;,/*,定义,STR,为字符数组*,/,STR a,b;/*,定义,a,b,为字符数组*,/,5,空语句:仅包含一个分号的语句,语句中无实质性内容。,例:;,/*,仅由一个分号组成*,/,6,复合语句:由大括号,括起来的语句序列。,例如:,c=a+b,;,c=c/100,;,printf(%f,),;,7,函数调用语句:,是函数的具体执行部分,用于完成对数据的操作。,例如:,printf(,Welcome to the C world.,),;,/*,该语句是调用,printf,函数实现字符串输出*,/,注意:,C,语言允许一行写多个语句,每条语句后面必须要有分号;也允许一个语句写多行。,Return,3.2,程序的三种基本结构,C,语言是理想的,结构化程序设计,语言。结构化程序的最大特点是以控制结构为单位,每个单位只有,一个入口,和,一个出口,。结构化程序中常见的基本结构有三种:,1.,顺序结构,2.,选择结构,3.,循环结构,图,3-1,顺序结构程序框图,在顺序结构程序中,一般包括以下几个部分:,(,1,)程序开头的,编译预处理,命令,在程序中若要使用标准函数(又称库函数),除,printf(),和,scanf(),函数外,使用其它的标准函数都必须使用编译预处理命令,将相应的头文件包含进来。,(,2,)顺序结构程序的,函数体,顺序结构程序的函数体中包括完成程序具体功能的各个语句,主要有以下四部分:,变量,类型的说明部分;,数据的,输入,部分;,数据的,处理,部分;,数据的,输出,部分。,Return,根据条件,p,成立与否来选择执行程序的某部分,即:当条件,P,成立(,“,真,”,),执行,A,操作,否则执行,B,操作。但无论选择哪部分,程序均将汇集到同一个出口。程序流程图如图,3-2,所示:,图,3-2,选择结构程序流程图,选择结构还可以派生出,“,多分支选择结构,”,,程序框图如图,3-3,所示。根据,k,的值(,k1,、,k2,、,.,、,kn,)不同,来选择执行多路分支,A1,、,A2,、,.,、,An,之一。,图,3-3,多分支选择结构程序流程图,Return,(,1,)当型循环结构。当条件,p,成立(,“,真,”,)时,反复执行,A,操作,直到,p,为,“,假,”,时才停止循环。程序流程图如图,3-4,所示:,图,3-4,当型循环结构程序流程图,(,2,)直到型循环结构。先执行,A,操作,再判别条件,p,是否为,“,真,”,,若为,“,真,”,,再执行,A,,如此反复,直到,p,为,“,假,”,为止。程序流程图如图,3-5,所示:,假,真,图,3-5,直到型循环结构程序流程图,使用循环结构时,在进入循环前,应设置循环的初始条件。同时,在循环过程中,应修改循环条件,以便程序退出循环。如果不修改循环条件或循环条件错误修改,可能导致程序不能退出循环,即进入,“,死循环,”,。,三种基本结构可以处理任何复杂的问题。,Return,3.3,赋值语句,1.,一般格式:,=,;,例如:,c=a+b,;,2.,功能:,先计算赋值号右边表达式的值,然后将计算得到的结果赋值给赋值号左边的指定变量。,3.,说明:,C,语言中的,“,=,”,作为赋值运算符,又称,“,赋值号,”,,不是,“,等号,”,。,赋值语句和赋值表达式是不同的概念,赋值表达式使,C,语言非常灵活。,例如:,if(,a=b,)0),t=a,;,if(,a=b;,)0),t=a,;,Return,3.4,数据输入输出,C,语言不提供输入输出语句,输入输出由开发系统提供的函数实现,其中:,putchar(),、,printf(),是,输出,到终端(系统标准输出设备,如显示器)的函数;,getchar(),、,scanf(),是从系统标准,输入,设备(一般指键盘)输入数据的函数。,输入输出库函数的原型在文件,stdio.h,中定义,因此,使用输入输出函数时,应在源程序的开头使用如下语句:,#include,“,stdio.h,”,或,#include,(,关于编译预处理命令的使用可参考第,8,章。,),stdio.h,放在程序的开头,称为,“,头文件,”,;由于使用,#include,(包含)命令,又称为,“,包含文件,”,。,C,语言开发系统提供很多库函数,它们的原型在不同的头文件中定义,因此,在程序开头总是包含需要的头文件。最常用的头文件如表,3-1,所示。,表,3-1,最常用的头文件,头文件名,作用,stdio.h,定,定义输入输出函数,string.h,定义字符串操作函数,math.h,定义,sin,、,cos,、,sqrt,等数学函数,3.4.1 printf(),格式化输出函数,1,一般形式,(,1,),格式:,printf(,格式字符串,,输出项表,),;,(,2,)功能:,向系统默认的输出设备(一般指终
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服