本科课件-《C语言程序设计教程》(完整).ppt

上传人(卖家):三亚风情 文档编号:3581191 上传时间:2022-09-20 格式:PPT 页数:628 大小:10.20MB
下载 相关 举报
本科课件-《C语言程序设计教程》(完整).ppt_第1页
第1页 / 共628页
本科课件-《C语言程序设计教程》(完整).ppt_第2页
第2页 / 共628页
本科课件-《C语言程序设计教程》(完整).ppt_第3页
第3页 / 共628页
本科课件-《C语言程序设计教程》(完整).ppt_第4页
第4页 / 共628页
本科课件-《C语言程序设计教程》(完整).ppt_第5页
第5页 / 共628页
点击查看更多>>
资源描述

1、第1章本章主要内容1.1 C语言的引入语言的引入1.2 C语言程序的基本结构语言程序的基本结构1.3 C语言程序的上机过程与步骤语言程序的上机过程与步骤1.4 语言语言的简单应用实例的简单应用实例1.1 C语言的引入【引例引例】如何利用计算机解决简单的实如何利用计算机解决简单的实际问题?如:际问题?如:计算地球赤道的长度和地计算地球赤道的长度和地球的表面积球的表面积?1.1.1 程序和程序设计的概念 计算机的每一个操作都是根据人们计算机的每一个操作都是根据人们事先编好的指事先编好的指令令执行的。执行的。程序:程序:为实现特定目标或解决特定问题用计算机为实现特定目标或解决特定问题用计算机语言编写

2、的命令序列集合语言编写的命令序列集合 程序设计程序设计:是按指定要求编写计算机能够识别的是按指定要求编写计算机能够识别的特定指令组合的过程特定指令组合的过程。计算机程序:计算机程序:为了完成某个任务,计算机要执行为了完成某个任务,计算机要执行的一系列过程的总和。的一系列过程的总和。1.1.2 程序设计语言 程序设计语言:人和计算机进行交流的语言。程序设计语言:人和计算机进行交流的语言。机器语言:也称低级语言,由0和1组成的指令,专业人员,难学汇编语言:也称符号语言,用助记符代表操作,需汇编程序,与 机器相关,专业人员,低级语言高级语言:非结构化语言:早期BASIC、ALGOL 面向对象程序设计

3、语言:C+、C#、JAVA需将高级语言翻译成机器语言程序才能被执行:编译型、解释型结构化语言:C语言、Pascal、Fortran77C语言的前世今生 Dennis RitchieC 语言在 1969 到1973 年之间随着Unix 操作系统的开发而诞生并逐步流行。1.1.3 语言的发展1.C语言的由来 C语言的原型是ALGOL 60语言(A语言)BCPL语言“B语言”“C”,这就是C语言。1978年美国电话电报公司(AT&T)贝尔实验室正式发布了C语言。2.C语言的标准化 1978年,K&R标准ANSI标准,1983年发表,通常称之为ANSI C现行的C语言标准(1999年发布C99标准)3

4、.C语言的应用领域 C语言的应用领域非常广泛,如人工智能、单片机控制、计算机系统软件等的底层开发、工业控制、智能仪表、嵌入式系统、硬件驱动程序开发等。1.1.3 语言的发展4.基于C语言的语言及特点(1)C+语言:对传统语言全面进行面向对象的扩展(2)Java语言:基于C+的,可以编写跨平台应用软件的面向对象的程序设计语言(3)C#语言:是由微软公司开发的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。由C+和Java发展而来,侧重于网络与数据库编程。1.1.4 语言的特点1.适合开发系统软件2.结构化的程序设计语言3.具有丰富的数据类型和表达式4.可移植性好5.语句

5、简洁、结构紧凑、功能强6.具有预处理功能和丰富的库函数7.面向对象程序设计的基础 1.2 C语言程序的基本结构 /*-例1-1.c-*/#include /*编译预处理命令*void main()/*定义主函数*/*函数开始标志*/int a,b,sum;/*声明a,b,sum为整型变量*/a=1;b=2;/*给变量a,b赋初值*/sum=a+b;/*计算a+b*/printf(sum=%dn,sum);/*输出结果*/*函数结束标志*/说明:本程序的作用是输出一行信息:sum=3【例1.1】利用C语言程序计算两个整数之和。scanf(%d%d,&a,&b);【例1.2】利用C语言程序求两个数

6、中的较大值。#include void main()/*主函数*/int max(int x,int y);/对被调用函数max的声明*/int a,b,c;/*定义变量a、b、c*/scanf(d,d,&a,&b);/*输入变量a和b的值*/c=max(a,b);/*调用max函数,将得到的值赋给c*/printf(max=dn,c);/*输出c的值*/int max(int x,int y)int z;if (xy)z=x;else z=y;return(z);max(int x,int y)max(a,b);本程序包括main和被调用函数max两个函数。max函数的作用是将x和y中较大者

7、的值赋给变量z。return语句将z的值返回给主调函数main。程序运行情况如下:8,5 (输入8和5赋给a和b)max=8 (输出c的值)1.C语言程序的组成语言程序的组成(1)一个程序由一个或多个源程序文件组成一个程序由一个或多个源程序文件组成 预处理指令预处理指令 全局声明全局声明 函数定义函数定义(2)函数是函数是C程序的主要组成部分(库函数或用程序的主要组成部分(库函数或用户自定义函数)户自定义函数)有且仅有一个有且仅有一个main函数,函数,C C程序程序总是从总是从mainmain函函数开始执行数开始执行的的,与与mainmain函数的位置无关。函数的位置无关。1.2.2 C语言

8、程序的基本结构 1.2.2 C语言程序的基本结构2.函数的结构:一个函数由函数首部和函数体两部分组成,其一般格式如下:函数类型 函数名(函数形式参数表)数据说明部分;函数执行部分;请分析右边函数的组成:函数的首部函数体int max(int x,int y)int z;if (xy)z=x;else z=y;return(z);3.程序的基本特点(1)函数体中的数据说明部分必须位于可执行语句之前(2)C程序书写格式自由。(3)C语言本身没有输入输出语句。输入和输出的操作是由库函数scanf和printf等函数来完成的。(4)每个语句和数据声明的最后必须有一个分号。(5)C语言中严格区分字母的大

9、小写。(6)程序应当包含注释(增加可读性)。(7)为增强可读性,最好以缩进格式书写程序。(8)使用“”时,为便于检查匹配性,最好同一层次的“”和“”缩进相同。1.3 C语言程序的上机过程与步骤1.3.1 C语言程序的上机过程1.编辑:生成C源程序文件(.c)2.编译:对源程序进行编译,生成目标文件(.obj)3.连接:与库函数连接(.exe)4.运行:运行目标程序,得到结果运行程序的步骤和方法(VC+)1.启动启动VC+集成开发环境;集成开发环境;2.新建工程(新建工程(Win32 Console Application),在指定位置在指定位置输入工程名称;输入工程名称;3.新建新建.c文件(

10、文件(C+Source File),注意文件扩展名;注意文件扩展名;4.编写并保存编写并保存C源程序(源程序(.c););5.编译(编译(.obj););6.连接(连接(.exe););7.运行并输出结果(若不能正常运行,修改后运行并输出结果(若不能正常运行,修改后重新重新编编译、连接);译、连接);8.关闭工作空间。关闭工作空间。1.启动启动Turbo C 2.输入源程序输入源程序 3.源程序存盘源程序存盘 4.编译连接运行程序:编译连接运行程序:Ctrl+F9 5.若编译有错,改错,再按若编译有错,改错,再按Ctrl+F9 6.看程序结果:看程序结果:Alt+F5 7.若程序结果有错,重复

11、若程序结果有错,重复(5)8.程序结果正确,结束,输入下一个程序。程序结果正确,结束,输入下一个程序。运行程序的步骤和运行程序的步骤和方法方法(Turbo C)1.4 程序的简单举例【例【例1.3】下列】下列C语言程序的功能是在屏幕上显示一个软件封语言程序的功能是在屏幕上显示一个软件封面。面。*学生成绩管理信息系统学生成绩管理信息系统 *研制者研制者 王利民王利民 *【例【例1.4】已知地球的赤道半径为】已知地球的赤道半径为6378公里,求地球赤道的公里,求地球赤道的长度及地球的表面积。长度及地球的表面积。1.4 程序的简单举例【例【例1.3】程序设计】程序设计#include /*包含标准输

12、入输出头文件包含标准输入输出头文件*/void main()/*主函数主函数*/*下面用下面用5个输出函数输出个输出函数输出5个字符串个字符串*/printf(*n);printf(*学生成绩管理信息系统学生成绩管理信息系统 *n);printf(*n);printf(*研制者研制者 王利民王利民 *n);printf(*n);1.4 程序的简单举例【例【例1.4】程序设计】程序设计#include /*预处理命令预处理命令*/void main()/*主函数主函数*/*程序开始程序开始*/float r,l,s;/*变量声明变量声明*/r=6378;/*给半径给半径r赋值为赋值为5*/l=2

13、*3.14159*r;/*求地球赤道的长度求地球赤道的长度*/s=4*3.14159*r*r;/*求地球的表面积求地球的表面积*/printf(地球赤道的长度为:地球赤道的长度为:%f公里公里n,l);printf(地球的表面积为:地球的表面积为:%f平方公里平方公里n,s);1.一个一个C程序由若干个函数组成,各个函数在程序中的位置为程序由若干个函数组成,各个函数在程序中的位置为 。A.任意任意 B.第一个函数必须是主函数,其他函数任意第一个函数必须是主函数,其他函数任意 C.必须完全按照顺序排列必须完全按照顺序排列 D.其他函数必须在前,主函数必须在后其他函数必须在前,主函数必须在后2.以

14、下叙述中正确的是以下叙述中正确的是 。A.C语言程序将从源程序中第一个函数开始执行语言程序将从源程序中第一个函数开始执行 B.可以在程序中由用户指定任意一个函数作为主函数,程序将从可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行此开始执行 C.C语言规定必须用语言规定必须用main作为主函数名,程序将从此开始执行,作为主函数名,程序将从此开始执行,在此结束在此结束 D.main可作为用户标识符,用以命名任意一个函数作为主函数可作为用户标识符,用以命名任意一个函数作为主函数3.C语言程序的基本单位是语言程序的基本单位是 。A.程序行程序行 B.语句语句 C.函数函数 D.字符字符

15、4.在计算机系统中,可以执行的程序是在计算机系统中,可以执行的程序是 。A.源代码源代码 B.汇编语言代码汇编语言代码 C.机器语言代码机器语言代码 D.ASCII码码本章小结l程序、程序设计等基本概念程序、程序设计等基本概念l程序设计语言(低级、汇编、高级)程序设计语言(低级、汇编、高级)lC语言的发展及特点语言的发展及特点lC语言的基本结构语言的基本结构lC程序的上机过程与步骤程序的上机过程与步骤课外作业练习题练习题1(P12)一、选择题(一、选择题(18)二、填空题(二、填空题(14)三、应用题(三、应用题(1,2)第2章 本章主要内容问题1:已知三角形的边长,如何求它的面积?问题2:如

16、何求一元二次方程的实根?2.1 程序设计的引入 1.计算机的工作过程 存储程序控制冯诺依曼原理。分析问题编写程序并保存到计算机执行程序计算机按程序要求自动工作。2.1 2.1 程序设计的引入程序设计的引入 2.程序设计过程 对于复杂程度较高的问题,必须从问题描述入手,经过对解题算法的分析、设计直至程序的编写、调试和运行等一系列过程,最终得到能够解决问题的计算机应用程序,此过程称为程序设计。2.1 2.1 程序设计的引入程序设计的引入程序设计过程(1)问题分析(2)算法设计(3)程序设计(4)编辑、编译与连接(5)运行与调试(6)编写程序文档 3.程序设计思想 程序设计思想就是用某种语言编写程序

17、的思考方式和步骤,是程序设计的灵魂。(1)结构化程序设计思想:以C语言为代表;(2)面向对象的程序设计思想:JAVA,C+语言;(3)事件驱动的程序设计思想:代表语言有Visual Basic;(4)逻辑式对象程序设计思想:代表语言Prolog、LISP。2.1 2.1 程序设计的引入程序设计的引入2.2.1 算法的概念及特性1.算法的概念 算法是一组(有限个)规则,它为某个特定问题提供了解决问题的运算序列。算法为解决某个问题而采取的方法和步骤。2.两大类计算机算法 数值运算算法(求数值解、成熟)非数值运算算法(事务管理、广泛)2.2 算法与流程图l算法分析:这是一个非数值运算问题。因为两个瓶

18、子的墨水不能直接交换,所以,解决这一问题的关键是需要引入第三个墨水瓶。设第三个墨水瓶为白色,其交换步骤如下:2.2 2.2 算法与流程图算法与流程图白瓶黑瓶蓝瓶 将黑瓶中的蓝墨水装入白瓶中;将蓝瓶中的黑墨水装入黑瓶中;将白瓶中的蓝墨水装入蓝瓶中。2.2 2.2 算法与流程图算法与流程图n方法2:100+(1+99)+(2+98)+(49+51)+50=100+49100+50 加51次 对同一个问题,可有不同的解题方法和步骤。【例2.1】求1+2+3+100的算法。n方法1:1+2,+3,+4,一直加到100 加99次n方法3:直接用高斯公式2.2 2.2 算法与流程图算法与流程图算法是程序设

19、计的灵魂。对数据的描述:数据结构(data structure)对操作和行为的描述:算法(algorithm)著名计算机科学家沃思提出一个公式:数据结构+算法=程序算法数据结构程序设计方法语言工具完整的程序设计:描述数据的类型、组织形式描述对数据的操作步骤2.2 2.2 算法与流程图算法与流程图计算机解题的核心是计算机解题的核心是算法设计算法设计。3.算法的特性算法的特性(1)确定性确定性:算法的每一步是算法的每一步是确切定义确切定义且无二义性。且无二义性。(2)有穷性有穷性:一个算法必须在执行一个算法必须在执行有限次运算有限次运算后结束。后结束。(3)可行性可行性:算法中的每一个步骤都能有效

20、执行,并且得到算法中的每一个步骤都能有效执行,并且得到确定的结果。确定的结果。(4)有零个或多个输入有零个或多个输入:在执行算法时需要从外界取得必要在执行算法时需要从外界取得必要的信息。的信息。(5)有一个或多个输出有一个或多个输出:算法的目的是为了求解问题,无任算法的目的是为了求解问题,无任何输出的算法是没有意义的。何输出的算法是没有意义的。2.2 2.2 算法与流程图算法与流程图常用算法介绍 递推法递推法逐步推导的过程逐步推导的过程(倒推和顺推倒推和顺推)。顺推法顺推法从边界条件出发,根据递推关系式推出后项,从边界条件出发,根据递推关系式推出后项,由后项值按递推关系式推出再后项值,依此类推

21、,直到求由后项值按递推关系式推出再后项值,依此类推,直到求解。如:菲波拉契数列。解。如:菲波拉契数列。倒推法倒推法已知解或目标,根据递推关系,采用倒推手段,已知解或目标,根据递推关系,采用倒推手段,一步步倒推直至求得这个问题的初始值方法。如:猴子吃一步步倒推直至求得这个问题的初始值方法。如:猴子吃桃。桃。递归法递归法一个对象部分地由它自己组成,或者自己定义一个对象部分地由它自己组成,或者自己定义自己。如:汉诺塔,阶乘问题自己。如:汉诺塔,阶乘问题 枚举法枚举法从可能的解集中一一列举各元素,用题目给定从可能的解集中一一列举各元素,用题目给定的检验条件判定哪些能使命题成立。的检验条件判定哪些能使命

22、题成立。分治法分治法也称二分法,缩小规模,分成也称二分法,缩小规模,分成N个。如:归并个。如:归并排序。排序。模拟法模拟法有些问题很难建立枚举、递归等模型有些问题很难建立枚举、递归等模型,也建,也建立不了数学模型立不了数学模型,但可以根据问题的描述,用程序进行,但可以根据问题的描述,用程序进行 模拟,从而跟踪结果。如约瑟夫问题,猴子选模拟,从而跟踪结果。如约瑟夫问题,猴子选 大王。大王。贪心法贪心法若在求解一个问题时,能根据每次所得到的若在求解一个问题时,能根据每次所得到的局部最优解,推导出全局最优或最优目标。如:背包问局部最优解,推导出全局最优或最优目标。如:背包问题。题。常用算法介绍2.2

23、.2 算法描述可以用不同的方法表示算法,常用的方法有:自然语言传统流程图结构化流程图伪代码2.2 2.2 算法与流程图算法与流程图2.2.2 算法描述算法描述1.自然语言自然语言 自然语言自然语言就是人们日常使用的语言,可以是汉语就是人们日常使用的语言,可以是汉语或英语或其它语言。或英语或其它语言。自然语言自然语言易懂却不直观,不严格。易懂却不直观,不严格。2.2 2.2 算法与流程图算法与流程图2.2.2 算法描述算法描述2.流程图流程图用特定的图形符号来描述算法用特定的图形符号来描述算法。用图形表示算法,直用图形表示算法,直观形象,易于理解观形象,易于理解。起止框输入输出框处理框判断框流程

24、线连接点虚线2.2 算法与流程图【例例2.2】求求1+2+3+100的算法流程图的算法流程图开始s=0,i=1s=s+ii=i+1i100输出s结束NyN-S图,也称盒图:完全去掉了带箭头的流程线,算法的所有处理步骤都写在一个大矩形框中。2.2 算法与流程图N-S图表示简单,符合结构化思想。计算1+2+3+100的算法用N-S图表示。s=0i=1s=s+ii=i+1当当i100输出输出s2.2 算法与流程图伪代码是介于程序代码和自然语言之间的一种算法描述方法,书写时比较紧凑、自由,也比较好理解,方便转化为程序。2.2 算法与流程图开始 置s的初值为0 置i的初值为1 当i =!=逻辑运算符逻辑

25、运算符用于逻辑运算用于逻辑运算&|!赋值运算符赋值运算符用于赋值运算用于赋值运算=+=-=*=%=&=|=条件运算符条件运算符三目运算符三目运算符?:位操作运算符位操作运算符按二进制位进行运算按二进制位进行运算&|逗号运算符逗号运算符,求字节数运算符求字节数运算符sizeof指针运算符指针运算符*&特殊运算符特殊运算符().-1.基本的算术运算符基本的算术运算符+:正号运算符正号运算符(单目运算符单目运算符)-:负号运算符负号运算符(单目运算符单目运算符)*:乘法运算符乘法运算符(乘号不能省略乘号不能省略)/:除法运算符除法运算符(两个整数相除结果为整数)(两个整数相除结果为整数)%:求余运算

26、符求余运算符(左右操作数需为整数)(左右操作数需为整数)+:加法运算符加法运算符-:减法运算符减法运算符2.5.1 算术运算符和表达式 两个整数相除的结果为整数两个整数相除的结果为整数,两个实数相除结果是双精度。,两个实数相除结果是双精度。如如:5/3的结果值为,舍去小数部分的结果值为,舍去小数部分。如果除数或被除数中有一个为负值,舍入方向不固定如果除数或被除数中有一个为负值,舍入方向不固定。如如:-5/3,有的系统中得到的结果为,有的系统中得到的结果为-1,在有的系统中则得到,在有的系统中则得到结果为结果为-2。VC+采取采取“向零取整向零取整”的方法的方法 如:如:5/3=1,-5/3=-

27、1,取整后向零靠拢,取整后向零靠拢。%运算符要求参加运算的运算对象运算符要求参加运算的运算对象(即操作数即操作数)为整数,结果也为整数,结果也是整数。如是整数。如:8%3,结果为,结果为2。算术运算说明2.自增、自减运算符(+、-):使变量值加1或减1种类:前置 +i,-i (先执行i+1或i-1,再使用i值)后置 i+,i-(先使用i值,再执行i+1或i-1)说明:+-不能用于常量和表达式,如5+,(a+b)+-结合方向:优先级:-+-*/%-+-(1)(2)(3)例:-i+i=3;printf(%d,-i+);/-3 例:j=3;k=5 j+k;j+)+k;例:int a,b,c;a=2;

28、b=2;c=a+;printf(a=%d,c=%dn,a,c);c=+b;printf(b=%d,c=%dn,b,c);2.5.1 算术运算符和表达式例:j=3;k=+j;j=3;k=j+;j=3;printf(%d,+j);j=3;printf(%d,j+);a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;/k=4,j=4/k=3,j=4/4/3/c=20,a=4/c=15,a=4#includemain()int a,b;a=1;b=-a+;printf(%d%dn,a,b);/b=-(a+);/2 -13.算术表达式和运算符的优先级与结合性(1)算术表达式 算术表达式

29、是用算术运算符和括号将运算对象(也称操作数)连接起来的、符合C语言语法规则的式子。例如:a+b、(a*2)/c、(x+r)*8-(a+b)/7、+i、sin(x)+sin(y)等均为合法的算术表达式。(2)算术运算符的优先级与结合性运算符说 明优先级()圆括号 高 低-、+、-单目运算符,取负、自加、自减*、/、%双目运算符,乘、除、取余+、-双目运算符,加、减2.5.1 算术运算符和表达式 隐式转换隐式转换 什么情况下发生什么情况下发生赋值转换赋值转换-把一个值赋给与其类型不同的变量把一个值赋给与其类型不同的变量时时运算转换运算转换-不同类型数据混合运算时不同类型数据混合运算时输出转换输出转

30、换-输出时转换成指定的输出格式输出时转换成指定的输出格式函数调用转换函数调用转换-实参与形参类型不一致时转换实参与形参类型不一致时转换 运算转换规则运算转换规则:不同类型数据运算时先不同类型数据运算时先自动自动转换成同一转换成同一类型类型2.5.1 算术运算符和表达式 显式转换(强制转换)显式转换(强制转换)一般形式:一般形式:(类型名类型名)(表达式)表达式)例例 (int)(x+y)(int)(x+y)(int)x+y (int)x+y (double)(3/2)(double)(3/2)(int)3.6 (int)3.6 说明:强制转换得到所需类型的中间变量,原变说明:强制转换得到所需类

31、型的中间变量,原变量类型不变量类型不变 例 main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:x=3.600000,i=3精度损失问题较高类型向较低类型转换时可能发生 【例例2.6】给定一个大写字母,要求用小写字母输出。给定一个大写字母,要求用小写字母输出。解题思路:u关键是找到大、小写字母间的内在联系u同一个字母,用小写表示的字符的ASCII代码比用大写表示的字符的ASCII代码大322.5.1 算术运算符和表达式#include void main()char c1,c2;c1=A;c2=c1+32;printf(%

32、cn,c2);printf(%dn,c2);/将字符A的ASCII代码65放到c1中/将65+32的结果放到c2中/用字符形式输出/用十进制形式输出2.5.1 算术运算符和表达式2.5.2 关系运算符和表达式1.关系运算符及优先级关系运算符及优先级6种关系运算符:种关系运算符:、=、=(等于等于)、!=(不等于不等于)l优先次序优先次序:前:前4种关系运算符种关系运算符(,=,=)的优先级的优先级别相同,后两种(别相同,后两种(=,!=)也相同。前)也相同。前4种运算符的优先级高种运算符的优先级高于后于后2种。种。例:例:ca-b 等价于等价于 c(a-b)ab=c 等价于等价于(ab)=c

33、a=bc 等价于等价于 a=(bc)优先级别:算术运算符、关系运算符、赋值运算符、逗号运算符高 低如:ca+b c(a+b)a=bc a=(bc)注意:区分“=”与“=”a=bc a=(bb,a+bb+c,(a=3)(b=5),ab)(bb”的值为“真”,表达式的值为1。C语言中没有专用的逻辑值,1代表真,0代表假2.5.2 2.5.2 关系运算符和表达式关系运算符和表达式2.5.3 逻辑运算符和表达式1.逻辑运算符及其优先次序逻辑运算符及其优先次序逻辑运算符逻辑运算符名名 称称使用规则使用规则逻辑表达式逻辑表达式表达式的值表达式的值!逻辑非逻辑非单目运算符单目运算符!a!a与与a a的真假相

34、反的真假相反&逻辑与逻辑与双目运算符双目运算符a&ba&ba a和和b b有假结果为假有假结果为假|逻辑或逻辑或双目运算符双目运算符a|ba|ba a和和b b有真结果为真有真结果为真!(逻辑非)算术运算符关系运算符&(逻辑与)|(逻辑或)赋值运算符高低1.逻辑运算符及其优先次序(1)&(逻辑与)(2)|(逻辑或)(3)!(逻辑非)例:a&b 若a,b为真,则a&b为真。a|b 若a,b之一为真,则a|b为真。!a 若a为真,则!a为假。优先次序:!(非)&(与)|(或)逻辑运算符中的“&”和“|”低于关系运算符,“!”高于算 术运算符 !(非)高算术运算符关系运算符&(与)|(或)赋值运算符

35、 低2.5.3 2.5.3 逻辑运算符和表达式逻辑运算符和表达式2.逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来的式子就 是逻辑表达式。逻辑表达式的值应该是一个逻辑量“真”或“假”。例:设a=4,b=5:!a的值为0 a&b的值为1a|b的值为1 !a|b的值为14&0|2的值为1任何非零的数值被认作为“真”2.5.3 2.5.3 逻辑运算符和表达式逻辑运算符和表达式例:53&84-!0 自左向右运算 1&0逻辑值为083逻辑值为1表达式值为02.5.3 2.5.3 逻辑运算符和表达式逻辑运算符和表达式 在逻辑表达式的求解中,并不是所有的逻辑运算符都要被执行。短路现象(1)a&b&c 只

36、有a为真时,才需要判断b的值,只有a和b都为真时,才需要判断c的值。(2)a|b|c 只要a为真,就不必判断b和c的值,只有a为假时,才判断b,a和b都为假才判断c例:(m=ab)&(n=cd)当a=1,b=2,c=3,d=4,m和n的原值为1时,由于“ab”的值为0,因此m=0,而“n=cd”不被执行,因此n的值不是0而仍保持原值1。2.5.3 2.5.3 逻辑运算符和表达式逻辑运算符和表达式2.5.4 赋值运算符和表达式1.简单赋值运算符简单赋值运算符 赋值符号赋值符号“=”就是赋值运算符,它的作用是将一就是赋值运算符,它的作用是将一个表达式的值赋给一个变量。个表达式的值赋给一个变量。赋值

37、运算符的一般形式为:变量赋值运算符的一般形式为:变量=表达式表达式 例如:例如:int a=3;c=a*a+b*b;注意:被赋值的变量必须是注意:被赋值的变量必须是单个变量单个变量,且必须在,且必须在赋值运算符的赋值运算符的左边左边。2.不同类型赋值转换 表达式值的类型与被赋值变量的类型不一致,表达式值的类型与被赋值变量的类型不一致,但都是数值型但都是数值型或字符型时,系统会自动将或字符型时,系统会自动将右边表达式的值转换成左边被赋右边表达式的值转换成左边被赋值变量的数据类型值变量的数据类型,然后再赋值给左边变量。,然后再赋值给左边变量。(截断和按符截断和按符号扩展号扩展)(1)实型赋予整型,

38、舍去小数部分。实型赋予整型,舍去小数部分。(2)整型赋予实型,数值不变,但将以浮点形式存放,即增加小整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分数部分(小数部分的值为小数部分的值为0)。(3)字符型赋予整型,由于字符型为字符型赋予整型,由于字符型为1个字节,而整型为个字节,而整型为2个字节,个字节,故将字符的故将字符的ASCII码值放到整型量的低八位中,高八位为码值放到整型量的低八位中,高八位为0。整型赋予字符型,只把低八位赋予字符量。整型赋予字符型,只把低八位赋予字符量。1.条件运算符条件运算符由两个符号组成(?和:一起使用)。要求有3个操作对象,称为三目运算符。(C语言中唯一

39、的三目运算符)2.条件表达式的一般形式:表达式?表达式表达式 功能:先判断表达式1的值,如果成立就执行表达式2,否则就执行表达式3使用场合:若在 if 语句中,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。2.5.5 条件运算符和表达式(1)条件运算符的执行顺序:先求解表达式,若为非(真)则求解表达式,此时表达式的值就作为整个条件表达式 的值。若表达式的值为(假),则求解表达式,表达 式的值就是整个条件表达式的值。(2)条件运算符优先级高于赋值运算符,低于关系运算符 和算术运算符。(3)条件运算符的结合方向为“自右至左”。(4)“表

40、达式2”和“表达式3”不仅可以是数值表达式,还可以 是赋值表达式或函数表达式。(5)条件表达式中,表达式的类型可以与表达式和表达 式的类型不同。2.5.5 条件运算符和表达式例:if()max=;else max;当ab时将a的值赋给max,当ab时将b的值赋给max,可以看到无论ab是否满足,都是向同一个变量赋值。可以用下面的条件运算符来处理:max()?;条件运算符条件表达式2.5.5 条件运算符和表达式 2.5.6 逗号运算符和表达式1.逗号运算符:又称“顺序求值运算符”。逗号表达式的一般形式:,表达式n2.逗号运算符的求值过程 按从左到右的顺序依次求出各个表达式的值,并把最后一个表达式

41、n的值作为整个逗号表达式的值。3.逗号运算符的优先级与结合性 逗号运算符的结合性是自左向右,其优先级在所有运算符中是最低的。例如:例如:x=(a=3,a*3,a+6);x=(a=3,3*3);int a=3,b=4,x,y;x=a+b,y=b*2+x,x+y;2.5.6 逗号运算符和表达式2.5.7 求字节运算符 C语言的语言的sizeof是一个是一个单目运算符单目运算符,sizeof运算符的作用是运算符的作用是用于用于测试数据类型所占的字节数。测试数据类型所占的字节数。其一般格式为:其一般格式为:格式格式1:sizeof(变量变量)或或 sizeof 变量变量 格式格式2:sizeof(常量

42、常量)或或 sizeof 常量常量 格式格式3:sizeof(表达式表达式)或或 sizeof 表达式表达式 格式格式4:sizeof(数据类型关键字数据类型关键字)例如:例如:short int a=234,x,y,z,m;x=sizeof(a);/将变量将变量a所分配的内存字节数所分配的内存字节数2赋给赋给xy=sizeof(int);/在在VC环境中环境中y=4,而在,而在TC环境中环境中y=2z=sizeof(double);/把把double所需的字节长度所需的字节长度8赋给赋给zm=sizeof(abcd);/把字符串所占内存空间把字符串所占内存空间5赋给赋给m,字符串结束标志也占

43、用字符串结束标志也占用1个字节个字节2.5.7 2.5.7 求字节运算符求字节运算符2.5.8 运算符的优先级和结合性在在C语言中,运算符的运算优先级共分为语言中,运算符的运算优先级共分为15级,级,1级最高,级最高,15级最低。当一个表达式中有多个运算符时,级最低。当一个表达式中有多个运算符时,优先级优先级较高的先于优较高的先于优先级较低的进行运算。同一优先级的运算符,运算次序由结合方先级较低的进行运算。同一优先级的运算符,运算次序由结合方向决定。运算符的向决定。运算符的结合性结合性分为左结合性分为左结合性(自左向右自左向右)和右结合性和右结合性(自自右向左右向左)两种。两种。一般情况下,一

44、般情况下,单目运算符的优先级较高单目运算符的优先级较高,赋值运算符优先级,赋值运算符优先级较低;算术运算符优先级较高,关系和逻辑运算符优先级较低;较低;算术运算符优先级较高,关系和逻辑运算符优先级较低;所有运算符中所有运算符中逗号运算符的优先级最低逗号运算符的优先级最低。多数运算符具有。多数运算符具有左结合左结合性性。单目运算符、条件运算符、赋值运算符等具有。单目运算符、条件运算符、赋值运算符等具有右结合性右结合性。C语言运算符的优先级与结合性详见附录语言运算符的优先级与结合性详见附录B.2。2.6 类型转换 变量的数据类型是可以转换的。转换的方法有变量的数据类型是可以转换的。转换的方法有两种

45、,一种是隐式转换(自动进行),一种是强两种,一种是隐式转换(自动进行),一种是强制转换制转换。2.6.1 隐式类型转换隐式类型转换的规则隐式类型转换的规则:(1)若参与运算量的类型不同,则先若参与运算量的类型不同,则先转换成同一类型转换成同一类型,然后进,然后进行运算。行运算。(2)转换按数据转换按数据长度增加的方向长度增加的方向进行,以保证精度不降低。进行,以保证精度不降低。(3)所有的所有的浮点运算都是以双精度进行浮点运算都是以双精度进行的,即使仅含的,即使仅含float单单精度量运算的表达式,也要先转换成精度量运算的表达式,也要先转换成double型,再作运算。型,再作运算。(4)cha

46、r型和型和short型参与运算时,必须先转换成型参与运算时,必须先转换成int型。型。(5)在赋值运算中,赋值号两边量的数据类型不同时,赋值号在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。丢失的部分按四舍五入向前舍入。【例【例2.7】阅读分析数据类型转换。】阅读分析数据类型转换。#include void main()float p=3.14159;int

47、 s,r=5;s=r*r*PI;printf(s=%dn,s);思考:若要使得程序的运算结果正确,应如何修改思考:若要使得程序的运算结果正确,应如何修改程序?程序?2.6.2 强制类型转换强制类型转换是通过强制类型转换是通过类型转换运算类型转换运算来实现的,其一来实现的,其一般形式为:般形式为:(类型说明符类型说明符)(表达式表达式)其功能是把表达式的运算结果强制转换成类型说其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。明符所表示的类型。例如:例如:(float)a /把把a转换为实型转换为实型 (int)(x+y)/把把x+y的结果转换为整型的结果转换为整型2.7 常用库函数

48、C语言提供了丰富的库函数,分为语言提供了丰富的库函数,分为数学函数、字符数学函数、字符函数、字符串函数、输入输出函数、动态分配存储函函数、字符串函数、输入输出函数、动态分配存储函数数等几大类。每一个函数都包含在一个后缀为等几大类。每一个函数都包含在一个后缀为.h的文的文件中(也称头文件),在程序中要使用系统提供的库件中(也称头文件),在程序中要使用系统提供的库函数,需要在程序的开头加上包含预处理命令。函数,需要在程序的开头加上包含预处理命令。其格式如下:其格式如下:#include 头文件名头文件名 或或#include 常用数学函数数学函数大都包含在数学函数大都包含在math.h头文件中头文

49、件中,在使用之前在使用之前,在程序开头加上在程序开头加上:#include 函数名功能sqrt(x)求x的平方根,x0log(x)log10(x)求自然对数(以e为底的对数),x0求以10为底的对数,x0exp(x)求以e为底的幂值,即求exabs(x)求整数x的绝对值fabs(x)求实数x的绝对值pow(x,y)幂函数,求xy的值srand(seed)初始化随机数生成器,不同的seed,不同的随机整数rand()随机函数,产生一个在(0,32767)的随机整数sin(x)求x的正弦值,x单位是弧度cos(x)求x的余弦值,x单位是弧度tan(x)求x的正切值,x单位是弧度常用数学函数数学函数

50、函数函数含义含义示例示例结果结果a absbs返回整数的绝对值返回整数的绝对值abs(6)abs(6)6 6fafabsbs返回实数的绝对值返回实数的绝对值fafabsbs(-(-3.23.2)3.23.2函数函数含义含义示例示例结果结果expexp返回返回e e的指定次幂的指定次幂exp(exp(1)1)2.7182818282.718281828pow(x,y)幂函数幂函数,求求xy的值的值pow(2,3)pow(2,3)8 8log(x)求自然对数求自然对数log(elog(e2 2)2 2sqrt(x)求平方根求平方根sqrt(64)sqrt(64)8 8srand(seed),初始化

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(本科课件-《C语言程序设计教程》(完整).ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|