《C语言程序设计2》课件.ppt

上传人(卖家):晟晟文业 文档编号:3795643 上传时间:2022-10-13 格式:PPT 页数:92 大小:785.69KB
下载 相关 举报
《C语言程序设计2》课件.ppt_第1页
第1页 / 共92页
《C语言程序设计2》课件.ppt_第2页
第2页 / 共92页
《C语言程序设计2》课件.ppt_第3页
第3页 / 共92页
《C语言程序设计2》课件.ppt_第4页
第4页 / 共92页
《C语言程序设计2》课件.ppt_第5页
第5页 / 共92页
点击查看更多>>
资源描述

1、 语言处理程序和联接程序语言处理程序和联接程序源程源程序序可执可执行程行程序序目标目标程序程序编辑编辑程序程序汇编汇编或编或编译程译程序序联联接接程程序序例如,计算例如,计算A=15+10 A=15+10 的机器语言程序如下:的机器语言程序如下:10110000 0000111110110000 00001111:把把1515放入累加器放入累加器A A中中00101100 0000101000101100 00001010:1010与累加器与累加器A A的值相加,结的值相加,结果仍放入果仍放入A A中中1111010011110100:结束,停机结束,停机编程工作量大,难学、难记、难修改,只适

2、合专业人员使用;编程工作量大,难学、难记、难修改,只适合专业人员使用;由于不同的由于不同的计算机计算机,其指令系统不同,机器语言随机而异,其指令系统不同,机器语言随机而异,通用性差,是面向机器的语言。通用性差,是面向机器的语言。机器语言优点机器语言优点:程序代码不需要翻译,所占空间少,执行速程序代码不需要翻译,所占空间少,执行速度快。现在已经没有人用机器语言直接编程了。度快。现在已经没有人用机器语言直接编程了。2 2程序设计语言与语言处理程序程序设计语言与语言处理程序机器语言机器语言汇编语言将机器指令的代码用英文助记符来表示,代替机器语言中的将机器指令的代码用英文助记符来表示,代替机器语言中的

3、指令和数据。例如用指令和数据。例如用ADDADD表示加、表示加、SUBSUB表示减、表示减、JMPJMP表示程序跳表示程序跳转等等,这种指令助记符的语言就是汇编语言。转等等,这种指令助记符的语言就是汇编语言。例如,计算例如,计算 A=15+10 A=15+10 的汇编语言程序:的汇编语言程序:MOVMOV A A,1515:把把1515放入累加器放入累加器A A中中ADDADD A A,1010:1010与累加器与累加器A A相加,结果存入相加,结果存入A A中中HLTHLT:结束,停机结束,停机汇编语言克服了机器语言难读等缺点,保持了其编程质量高,汇编语言克服了机器语言难读等缺点,保持了其编

4、程质量高,占存储空间少,执行速度快的优点。常用于过程控制等编程。占存储空间少,执行速度快的优点。常用于过程控制等编程。汇编语言面向机器,使用者需要专业知识。汇编语言面向机器,使用者需要专业知识。汇编语言编写的程序,必须翻译成机器语言,才能被计算机汇编语言编写的程序,必须翻译成机器语言,才能被计算机执行。执行。高级语言高级语言高级语言是由表达各种意义的词和数学公式按照一定的语法高级语言是由表达各种意义的词和数学公式按照一定的语法规则来编写程序的语言。高级语言使程序员可以完全不用与规则来编写程序的语言。高级语言使程序员可以完全不用与计算机的硬件打交道,可以不必了解机器的指令系统,是面计算机的硬件打

5、交道,可以不必了解机器的指令系统,是面向过程的语言。这样,程序员就可以集中精力来解决问题本向过程的语言。这样,程序员就可以集中精力来解决问题本身而不必受机器制约,编程效率高;由于与具体机器无关,身而不必受机器制约,编程效率高;由于与具体机器无关,因此程序的通用性强。因此程序的通用性强。例如,计算例如,计算 A=15+10 的的BASIC语言程序如下:语言程序如下:A=15+10 15与与10相加的结果放入相加的结果放入A中中PRINT A 输出输出AEND 程序结束程序结束常用高级语言常用高级语言u Fortran语言语言 1954年推出,适用于科学和工程计算。年推出,适用于科学和工程计算。u

6、 COBOL语言语言 是面向商业的通用语言,是面向商业的通用语言,1959年推出,主要用年推出,主要用于数于数 据处理,随着数据库管理系统的迅速发展,很少使据处理,随着数据库管理系统的迅速发展,很少使用。用。u Pascal语言语言 结构化程序设计语言,结构化程序设计语言,1968年推出,适用于教学年推出,适用于教学、科、科 学计算、数据处理和系统软件等开发,目前已被学计算、数据处理和系统软件等开发,目前已被C语言语言取代取代.u C与与C+语言语言 1972年推出年推出C语言,语言,1983年加入面向对象的概念年加入面向对象的概念,改名为改名为C+。语言简练、功能强,适用面广。语言简练、功能

7、强,适用面广。u BASIC语言语言 初学者语言,初学者语言,1964年推出;年推出;1991年微软推出可视年微软推出可视化的化的、基于对象的、基于对象的VisualBasic开发环境,发展到现在的开发环境,发展到现在的VB.NET开发环境,则是完全面向对象、功能更强大。开发环境,则是完全面向对象、功能更强大。u Java语言语言 一种新型的跨平台的面向对象设计语言,一种新型的跨平台的面向对象设计语言,1995年推年推出,适用于网络应用出,适用于网络应用.语言处理程序语言处理程序 在所有的程序设计语言中,除了用机器语言编制的程序能在所有的程序设计语言中,除了用机器语言编制的程序能够被计算机直接

8、理解和执行外,其他的程序设计语言编写够被计算机直接理解和执行外,其他的程序设计语言编写的程序都必须经过一个翻译过程才能转换为计算机所能识的程序都必须经过一个翻译过程才能转换为计算机所能识别的机器语言程序,实现这个翻译过程的工具是语言处理别的机器语言程序,实现这个翻译过程的工具是语言处理程序,即翻译程序。用非机器语言写的程序称为源程序;程序,即翻译程序。用非机器语言写的程序称为源程序;通过翻译程序翻译后的程序称为目标程序。翻译程序也称通过翻译程序翻译后的程序称为目标程序。翻译程序也称为编译器。针对不同的程序设计语言编写出的程序,有各为编译器。针对不同的程序设计语言编写出的程序,有各自的翻译程序,

9、互相不通用。自的翻译程序,互相不通用。语言处理程序 汇编程序 汇编程序是将汇编语言编制的程序(源程序)翻译成机器语言汇编程序是将汇编语言编制的程序(源程序)翻译成机器语言程序(目标程序)的工具。程序(目标程序)的工具。汇编语言汇编语言源程序源程序汇编程序汇编程序机器语机器语言程序言程序汇编程序的具体翻译工作步骤:汇编程序的具体翻译工作步骤:用机器操作码代替符号化的操作符。用机器操作码代替符号化的操作符。用数值地址代替符号名称。用数值地址代替符号名称。将常数翻译为机器的内部表示。将常数翻译为机器的内部表示。分配指令和数据的存储单元。分配指令和数据的存储单元。语言处理程序 高级语言翻译程序 1)解

10、释方式解释方式 解释方式的翻译工作由解释程序来完成。解释程序对源程序进解释方式的翻译工作由解释程序来完成。解释程序对源程序进行逐句分析,若没有错误,将该语句翻译成一个或多个机器语行逐句分析,若没有错误,将该语句翻译成一个或多个机器语言指令,然后立即执行这些指令;若解释时发现错误,会立即言指令,然后立即执行这些指令;若解释时发现错误,会立即停止,报错并提醒用户更正代码。解释方式不生成目标程序。停止,报错并提醒用户更正代码。解释方式不生成目标程序。数据数据高级语言高级语言源程序源程序解释程序解释程序计算结果计算结果高级语言程序到运行结果的过程高级语言程序到运行结果的过程编译编译执行执行链接链接源程

11、序源程序目标目标程序程序可执数可执数行程据行程据序序程程序序库库高级语言翻译程序编译方式 翻译工作由编译程序完成。如同笔译在纸上记录翻译后的结果。翻译工作由编译程序完成。如同笔译在纸上记录翻译后的结果。编译程序对整个源程序经过编译处理,产生一个与源程序等价编译程序对整个源程序经过编译处理,产生一个与源程序等价的目标程序;目标程序还可能要调用一些其他语言编写的程序的目标程序;目标程序还可能要调用一些其他语言编写的程序和程序库中的标准子程序,通过连接程序将目标程序和有关的和程序库中的标准子程序,通过连接程序将目标程序和有关的程序库组合成一个完整的可执行程序。执行速度快,修改源程程序库组合成一个完整

12、的可执行程序。执行速度快,修改源程序后都必须重新编译。一般高级语言(序后都必须重新编译。一般高级语言(C/C+C/C+、PASCALPASCAL、FORTRANFORTRAN、COBOLCOBOL等)都是采用编译方式。等)都是采用编译方式。目标程序目标程序 源程序源程序可执行程序可执行程序编译程序编译程序连接程序连接程序数据数据计算结果计算结果.C .OBJ .EXE 例例1.1 1.1 求两个数的和。求两个数的和。main()main()intint a,b,suma,b,sum;a=3;b=4;a=3;b=4;sum=sum=add(a,badd(a,b););printf(sumprin

13、tf(sum=a+ba+b=%=%dn,sumdn,sum););intint add(intadd(int x,intx,int y)y)intint z;z;z=z=x+yx+y;return(zreturn(z););不引入函数的方案不引入函数的方案:例例1.1 1.1 求两个数的和。求两个数的和。#include#include main()main()intint a,b,suma,b,sum;a=3;b=4;a=3;b=4;sum=sum=a+ba+b;printf(sumprintf(sum=a+ba+b=%=%dn,sumdn,sum););1.3 程序设计方法简介算法的概念算

14、法的概念一、算法一、算法:广义地说广义地说,为解决一个问题方法和步为解决一个问题方法和步骤。骤。二、算法分类二、算法分类:数值算法和非数值算法。数值算法和非数值算法。三、学习程序设计的要领三、学习程序设计的要领:为了有效地进行程为了有效地进行程序设计序设计,应至少具有两方面的知识应至少具有两方面的知识:(1)(1)掌握一门语言的语法规则掌握一门语言的语法规则;(2)(2)掌握解题的方法和步骤。掌握解题的方法和步骤。算法分类算法分类四、程序四、程序:程序程序=算法算法+数椐结构数椐结构+程序设计方法程序设计方法+语言语言工具和环境工具和环境概括地说一个程序应包括两方面的内容概括地说一个程序应包括

15、两方面的内容:(1)(1)对数椐的描述。对数椐的描述。数椐类型和数椐的组织数椐类型和数椐的组织形式形式;(2)(2)对操作的描述。对操作的描述。即操作步骤即操作步骤,也就是算也就是算法法(algorithm)(algorithm)。例例1 1、A,BA,B两个变量的内容交换两个变量的内容交换,需要需要引入中间量引入中间量C C1 1、CA;CA;2 2、AB;AB;3 3、BC;BC;算法举例例例2 2、求、求1+2+3+1001+2+3+100的值。的值。第一步第一步:sum0;:sum0;第二步第二步:i0i0;第三步第三步:ii+1ii+1;第四步第四步:sumsum+sumsum+i

16、i;第五步第五步:如果如果i100i100,则转入第三步则转入第三步;第六步第六步:输出输出sumsum的值的值;第七步第七步:结束。结束。例例3_13_1、求、求1/1+1/2+1/31/1+1/2+1/3+1/99+1/99+1/1001/100的值。的值。算法如下算法如下:1 1、sum=0;sum=0;2 2、i=0;i=0;3 3、i=i+1;i=i+1;/循环循环4 4、sum=sum+(1/i);sum=sum+(1/i);/循环循环5 5、if(i100)if(i100)gotogoto 3 3、;6 6、end.end.算法举例算法举例例例3_13_1、求、求1/1-1/2+

17、1/3-1/1-1/2+1/3-+1/99-1/100+1/99-1/100的值。的值。算法如下算法如下:1 1、sign=-1;sign=-1;2 2、sum=0;sum=0;3 3、i=0;i=0;4 4、i=i+1;i=i+1;/循环循环5 5、sign=(-1)sign=(-1)*sign;sign;/循环循环6 6、sum=sum=sum+sum+signsign*(1/i);(1/i);/循环循环7 7、if(i100)if(ib?bc?ac?输出输出c输出输出b输出输出c输出输出a开始开始 tfttff传统的程序流程图传统的程序流程图特点特点:绘制简单绘制简单,描述直观描述直观,

18、之前广泛使用。之前广泛使用。缺点缺点:1.程序流程图不易表示算法或程序的层次结构。程序流程图不易表示算法或程序的层次结构。2.用箭头表示的控制流可能引起随意的转移控制。用箭头表示的控制流可能引起随意的转移控制。3.可能诱使人们过早地考虑局部程序的控制结构可能诱使人们过早地考虑局部程序的控制结构而忽视全局的程序结构。而忽视全局的程序结构。4.不易表示数据结构和程序模块之间的关系。不易表示数据结构和程序模块之间的关系。N-S 图图即结构化程序设计流程图即结构化程序设计流程图,提供了描述三种基本逻提供了描述三种基本逻辑结构的图形工具辑结构的图形工具,与传统的程序流程图对照描述如下与传统的程序流程图对

19、照描述如下:1、顺序结构、顺序结构A模块模块B模块模块A模块模块B模块模块 (a)(b)图图 1.3 顺序结构顺序结构N-S 图图2、选择结构、选择结构(分支结构分支结构)(a)流程图表示流程图表示 (b)N-S图表示图表示A模块模块B模块模块判断条件判断条件成立吗?成立吗?判断条件判断条件成立吗?成立吗?成立成立 不成立不成立A模块模块B模块模块图图 1.4 选择结构选择结构成立成立不成立不成立N-S 图图由分支结构派生出来的多分支结构由分支结构派生出来的多分支结构(a)流程图表示流程图表示 (b)N-S图表示图表示图图 1.5 多分支结构多分支结构A1块块k=A2块块An块块K=?K1 K

20、2 KnA1块块 A2块块 An块块k1k2kn.3.3.循环结构循环结构(a)流程图表示流程图表示 (b)N-S图表示图表示图图 1.6 当型循环结构当型循环结构当型循环结构当型循环结构:先判断循环条件是否满足先判断循环条件是否满足,当条件满足当条件满足,执行执行一遍循环体一遍循环体,再判断循环条件再判断循环条件,仍满足再执行一遍循环仍满足再执行一遍循环体体直到不满足条件直到不满足条件,则退出循环则退出循环,执行循环体后的下一执行循环体后的下一语句。若第一次判断条件就不满足语句。若第一次判断条件就不满足,则一次也不执行循环体。则一次也不执行循环体。循环条件满足吗?循环条件满足吗?循环体循环体

21、循环体循环体循环条件循环条件满足吗?满足吗?不满足满足N-S 图图N-S 图图(a)流程图表示流程图表示 (b)N-S图表示图表示图图 1.7 直到型循环结构直到型循环结构直到型循环结构直到型循环结构:先执行一遍循环体先执行一遍循环体,再判断循环条件是否满足再判断循环条件是否满足,如不如不满足再执行一遍循环体满足再执行一遍循环体直到条件满足直到条件满足,则退出循环则退出循环,执行循环体执行循环体后的下一语句。这种循环结构至少要执行一遍循环体。后的下一语句。这种循环结构至少要执行一遍循环体。循环体循环体 直到循环条件满足为止直到循环条件满足为止不满足满足循环体循环体循环条件循环条件满足吗?满足吗

22、?常用算法描述常用算法描述下面给出一个算法的下面给出一个算法的N-S图举例图举例 描述求描述求n!的值的算法的值的算法F=n!=1*2*3*.*(n-1)*n开始开始F=1,i=0输入输入 ni n?i=i+1 F=F*i输出输出 F结束结束图图 1.8 求求 n!的值的的值的 N-S 图图常用算法描述常用算法描述描述求描述求 的算法。设的算法。设a0开始开始输入输入a、b、cd=b2-4ac输出输出x1、x2输出两个虚根输出两个虚根x1、x2结束结束d0?TTFFd0?adbx21+-=adbx22-=02=+cbxaxabx21-=12xx=iadabx221-+-=iadabx222-=

23、三种基本控制结构三种基本控制结构一、一、gotogoto语句的危害语句的危害二、三种基本结构二、三种基本结构1 1、顺序结构顺序结构2 2、选择结构选择结构:单分枝、双分枝、多分枝单分枝、双分枝、多分枝3 3、循环结构循环结构:当型、直到型当型、直到型三种基本控制结构三种基本控制结构三种基本控制结构三种基本控制结构三、三种基本结构的特点三、三种基本结构的特点:1 1、结构内每一部分都有、结构内每一部分都有机机会被会被执行到执行到2 2、结构内不存在、结构内不存在 死循环死循环 三种基本控制结构三种基本控制结构三种控制结构流程图三种控制结构流程图ABAB 流线式流线式 NS 式式顺序结构流程图顺

24、序结构流程图T FPAB选择结构流程图选择结构流程图PABTFAPFTAPAPTFAP循环结构流程图循环结构流程图当型循环当型循环结构结构直到循环直到循环结构结构结构化程序设计方法(1)topdown(1)topdown及及downtopdowntop(2)(2)逐步求精逐步求精(3)(3)模块化设计模块化设计(4)(4)结构化编码结构化编码开始开始定义问题定义问题建立数学模型建立数学模型确定算法确定算法绘制框图绘制框图编写程序编写程序上机调试上机调试成功否成功否?试运行试运行书写程序文档书写程序文档结束结束成功否成功否?计算机解题步骤计算机解题步骤 YYNN结构化程序三种基本逻辑结构结构化程

25、序三种基本逻辑结构 N-S图图顺序结构顺序结构分支结构分支结构循环结构循环结构a块块b块块条件成立条件成立?成立成立 不成立不成立a 块块b 块块当型当型:条件成立条件成立直到条件成立直到条件成立直到型直到型:a 块块a 块块 结构化程序流程图结构化程序流程图(也称也称N-S图图)格式格式 功能功能 if(表达式表达式)语句语句 if(表达式表达式)语句语句1 else 语句语句2 if(表达式表达式1)语句语句1 else if(表达式表达式2)语句语句2 else if(表达式表达式n)语句语句n else 语句语句n+1 -表达式值非表达式值非0?表达式值非表达式值非0?表达式值非表达式

26、值非0?表达式值非表达式值非0?表达式表达式1值非值非0?表达式表达式2值非值非0?表达式表达式3值非值非0?表达式表达式n值值非非0?语句语句语句语句 语句语句 1语句语句2语句语句1语句语句2语句语句2语句语句n+1语句语句3语句语句n语句语句1YNYYYYYYY NNNNNN.条件语句条件语句 70年代后年代后,软件开发的手段和方法越来越不软件开发的手段和方法越来越不能适应开发大型系统软件的要求能适应开发大型系统软件的要求,因而出现因而出现了了软件危机软件危机,由此产生了面向对象的程序由此产生了面向对象的程序设计语言。设计语言。1983年美国年美国Bell实验室的实验室的B.Strous

27、trup在在C语言基础上语言基础上,扩充引进了面向对象的概念扩充引进了面向对象的概念,推出了推出了C+语言。语言。它与它与C语言完全兼容语言完全兼容,是目前使用最为广泛是目前使用最为广泛的一种面向对象的程序设计语言。的一种面向对象的程序设计语言。面向对象的程序设计中的一些基本概念面向对象的程序设计中的一些基本概念10/13/2022502.1 C语言数据类型简介语言数据类型简介2.2 常量常量2.3 变量变量2.4 运算符和表达式运算符和表达式退出2.1 C语言数据类型简介语言数据类型简介基本类型 构造类型派生类型整型整型intint结构体结构体structstruct数组类型数组类型字符型字

28、符型charchar共用体共用体(联合联合)型型unionunion指针类型指针类型实型实型floatfloat枚举型枚举型enumenum双精度型双精度型doubledouble用户定义类型用户定义类型typedeftypedef 空值型空值型voidvoid返 回数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作2.2 常量常量是指在程序运行过程中其值不能被改变的量。常量是指在程序运行过程中其值不能被改变的量。2.2.1 数值常量数值常量2.2.2 字符常量和字符串字符常量和字符串2.2.3 标识符命名的常量标识符命名的常量2.2.4 换码序列常量换码序列常量 返 回2

29、.2.1 数值常量1、整型常量、整型常量(简称为整数简称为整数)u 三种形式三种形式:十进制整型常量、八进制整型常十进制整型常量、八进制整型常量量(以以0开头的开头的07数字串数字串)、十六进制整型常、十六进制整型常量量(以以0X或或0 x开头的开头的09/af/AF字符串字符串);u 每种形式常量可表示成短常量和长常量每种形式常量可表示成短常量和长常量(在在整型常量后面紧跟整型常量后面紧跟L或或l)。2、实型常量实型常量(简称为浮点常量或实数简称为浮点常量或实数)u 两种形式两种形式:十进制小数形式和指数形式十进制小数形式和指数形式(用用E或或e表示表示)返 回例:12 30例:0123 0

30、400例:0X123 -0 x11例:12L -9l例:0.123 123.例:345e+2 .5e-22.2.2 字符常量和字符串 1、字符常量、字符常量u 用用单引号单引号括起来括起来,可以用作整数常量可以用作整数常量,可参与算可参与算术运算。术运算。u 特例特例:单引号单引号,反斜线反斜线2、字符串、字符串u 用用双引号双引号括起来的零个或多个字符序列。括起来的零个或多个字符序列。u 特例特例:字符串中的双引号字符串中的双引号,字符串中的反斜线字符串中的反斜线u 存储存储:编译时自动在字符串结尾加一个转义字编译时自动在字符串结尾加一个转义字符符0作为字符串结束标志作为字符串结束标志,即长

31、度为即长度为n个字个字符的字符串占符的字符串占n+1个字节空间。个字节空间。例例2.2 字符常量和字符串输出举例。字符常量和字符串输出举例。main()printf(%c,%sn,a,a);例例2.1 字符常量举例。字符常量举例。main()char ch;ch=b;printf(%c,%d,ch,ch);返 回b,98a,a2.2.3 标识符命名的常量(符号常量)u 一般用一般用大写字母大写字母表示表示,而变量一般用小写而变量一般用小写字母表示。符号常量使用之前必须预先字母表示。符号常量使用之前必须预先定义定义,其定义格式为其定义格式为#define 标识符 常量 例例:#define PI

32、 3.14159 注注:不是语句不是语句,后无后无;u 优点优点:清晰易懂清晰易懂;易于修改。易于修改。例例2.3 标识符命名的常量举例。标识符命名的常量举例。#define PI 3.1415926main()float radius,circum,area;scanf(%f,&radius);circum=2*PI*radius;area=PI*radius*radius;printf(circumference is%fn,circum);printf(area is%fn,area);返 回3 circumference is 18.849556 area is 28.2743342.

33、2.4 换码序列常量换码序列常量(转义字符转义字符)u是特殊字符常量。以一个反斜杠是特殊字符常量。以一个反斜杠开头开头的字符序列的字符序列,只代表某个特定的只代表某个特定的ASCIIASCII码字符。用码字符。用单引号单引号括起。括起。整型(短整型)-长整型-实型-双精度型-有符号型-无符号型返 回intintfloatfloatdoubledoublefloatdouble10+a +f*i -d/e例 int i;float f;double d;long e;u强制转换类型:(数据类型名数据类型名)表达式表达式例:(double)a (int)x+y2.3.4 存储类型和变量的作用域1、

34、局部变量和全局变量u局部变量(内部变量):在函数内部或复合在函数内部或复合语句内部定义的变量语句内部定义的变量,作用域是从定义的作用域是从定义的位置起到函数体或复合语句结束止。位置起到函数体或复合语句结束止。u全局变量(外部变量):在函数外部定义的在函数外部定义的变量。作用域是从变量定义的位置起到变量。作用域是从变量定义的位置起到本源文件结束止。本源文件结束止。注注:同一源文件中同一源文件中,若局部变量与全局变量若局部变量与全局变量同名同名,则全局变量被屏蔽。则全局变量被屏蔽。2、存储类型u 自动变量(auto):auto可省略可省略,局部变量局部变量,内存的内存的堆栈区堆栈区,不能赋初值。不

35、能赋初值。u 寄存器变量(register):保存在寄存器中保存在寄存器中,可说明可说明局部变量和形式参数局部变量和形式参数,使用最频繁使用最频繁,只能是只能是int 或或char。u 静态变量(static):内存的数据区内存的数据区,可说明局部变可说明局部变量和全局变量量和全局变量,随文件存在而存在。随文件存在而存在。u 外部变量(extern):内存的应用程序区内存的应用程序区,只能说只能说明全局变量明全局变量,随程序存在且活动。随程序存在且活动。注注:内存分为内存分为堆栈区堆栈区(auto)、系统程序区系统程序区、应用程应用程序区序区(extern)和和数据区数据区(static)。例

36、例2.7存储类型和作用域举例。存储类型和作用域举例。#include file2.c int a=10;extern int add();main()int b,c;scanf(%d,&b);c=add(b);printf(%d+%d=%dn,a,b,c);返 回2010+20=30extern int a;int add(x)register int x;int y;y=a+x;return(y);file1.cfile2.c全局变量局部变量自动变量全局变量外部变量局部变量寄存器变量局部变量自动变量2.4 运算符和表达式 2.4.1 运算符和表达式运算符和表达式 2.4.2 赋值运算符和表达

37、式赋值运算符和表达式 2.4.3 算术运算符和表达式算术运算符和表达式 2.4.4 逗号运算符和表达式逗号运算符和表达式 2.4.5 关系运算符和表达式关系运算符和表达式 2.4.6 逻辑运算符和表达式逻辑运算符和表达式 2.4.7 条件运算符和表达式条件运算符和表达式 2.4.8 位运算符和表达式位运算符和表达式 2.4.9 运算符的结合律和优先级运算符的结合律和优先级返 回2.4.1 运算符和表达式1、C运算符运算符 算术运算符算术运算符:+-*/%-(取负取负)+-关系运算符关系运算符:=!=位运算符位运算符:&|逻辑运算符逻辑运算符:!&|赋值运算符赋值运算符:=复合赋值符号复合赋值符

38、号+=-=*=/=%=条件运算符条件运算符:?:逗号运算符逗号运算符:,指针运算符指针运算符:*&求字节数运算符求字节数运算符:sizeof 强制类型转换运算符强制类型转换运算符:类型类型 分量运算符分量运算符:.-下标运算符下标运算符:其他其他:()函数调用运算符函数调用运算符 学习运算符应注意学习运算符应注意(1)运算符功能运算符功能(2)与运算量关系与运算量关系-要求运算量个数要求运算量个数:单目、双目、三目单目、双目、三目-要求运算量类型要求运算量类型(3)运算符优先级别运算符优先级别:1515个级别个级别(4)结合方向结合方向:自左至右、自右至左自左至右、自右至左(5)结果的类型结果

39、的类型-(负号)&+-*%?:2、表达式、表达式:是由数据和运算符组合而成的式子。是一种复合数据,定义如下:常量、变量和函数是一个表达式;运算符与表达式的组合是一个表达式。返 回优先级优先级运算符运算符结合规则结合规则1 ()-.从左至右从左至右2!+-*&sizeof从右至左从右至左3*/%从左至右从左至右4+-从左至右从左至右5从左至右从左至右6 =从左至右从左至右7=!=从左至右从左至右8&从左至右从左至右9从左至右从左至右10|从左至右从左至右11&从左至右从左至右12|从左至右从左至右13?:从右至左从右至左14=+=-=*=/=%=&=|=.从左至右从左至右2!+-*&sizeof

40、从右至左从右至左3*/%从左至右从左至右4+-从左至右从左至右5从左至右从左至右6 =从左至右从左至右7=!=从左至右从左至右8&从左至右从左至右9从左至右从左至右10|从左至右从左至右11&从左至右从左至右12|从左至右从左至右13?:从右至左从右至左14=+=-=*=/=%=&=|=.从左至右从左至右2!+-*&sizeof从右至左从右至左3*/%从左至右从左至右4+-从左至右从左至右5从左至右从左至右6 =从左至右从左至右7=!=从左至右从左至右8&从左至右从左至右9从左至右从左至右10|从左至右从左至右11&从左至右从左至右12|从左至右从左至右13?:从右至左从右至左14=+=-=*

41、=/=%=&=|=.从左至右从左至右2!+-*&sizeof从右至左从右至左3*/%从左至右从左至右4+-从左至右从左至右5从左至右从左至右6 =从左至右从左至右7=!=从左至右从左至右8&从左至右从左至右9从左至右从左至右10|从左至右从左至右11&从左至右从左至右12|从左至右从左至右13?:从右至左从右至左14=+=-=*=/=%=&=|=关系关系 赋值运算符赋值运算符 =!=u 关系表达式:用关系运算符将两个表达用关系运算符将两个表达式连接起来的式子。值式连接起来的式子。值是是1 1或或0 0。表达式1 关系运算符 表达式22.4.5 关系运算符和关系表达式关系运算符和关系表达式a+b

42、 .从左至右从左至右2!+-*&sizeof从右至左从右至左3*/%从左至右从左至右4+-从左至右从左至右5从左至右从左至右6 =从左至右从左至右7=!=从左至右从左至右8&从左至右从左至右9从左至右从左至右10|从左至右从左至右11&从左至右从左至右12|从左至右从左至右13?:从右至左从右至左14=+=-=*=/=%=&=|=b:%dn,ab);printf(ab:%dn,a=b:%dn,a=b);printf(a=b:%dn,ab:0a=b:0a 关系关系&|&|赋值赋值 -逻辑运算真值表逻辑运算真值表(p43(p43表表2.11)2.11)2.4.6 逻辑运算符和逻辑表达式ab!a!b

43、a&ba|b真假真假假假真真真假假假假假真真假假真真真假真真优先级优先级运算符运算符结合规则结合规则1 ()-.从左至右从左至右2!+-*&sizeof从右至左从右至左3*/%从左至右从左至右4+-从左至右从左至右5从左至右从左至右6 =从左至右从左至右7=!=从左至右从左至右8&从左至右从左至右9从左至右从左至右10|从左至右从左至右11&从左至右从左至右12|从左至右从左至右13?:从右至左从右至左14=+=-=*=/=%=&=|=b)&(n=cd)/m值为值为0,n值为值为1u逻辑表达式逻辑表达式:用逻辑运算符连接运算量用逻辑运算符连接运算量,并产生一个并产生一个逻辑值。逻辑值是逻辑值。

44、逻辑值是1或或0。注注:逻辑运算结果中逻辑运算结果中,1表示真表示真,0表示假表示假;而判断时而判断时,非非0表示真表示真,0表示假。表示假。&和和|一旦能够确定表达式的值一旦能够确定表达式的值,就不再继续运算就不再继续运算下去。下去。u条件运算符条件运算符:?:u条件表达式条件表达式:含有条件运算符的表达式。三目运算符。含有条件运算符的表达式。三目运算符。表达式表达式1?表达式?表达式2:表达式表达式3 -执行过程执行过程:先表达式先表达式1,为非为非0,则执行表达式则执行表达式2;为为0,表表达式达式3。2.4.7 条件运算符和条件表达式条件运算符和条件表达式ab?a:ba=(b=0)?c

45、*d:c/d;if(b=0)a=c*d;else a=c/d;例例2.13用条件表达式求出输入的两个整用条件表达式求出输入的两个整型数中较小者。型数中较小者。main()int a,b;scanf(a=%d,b=%d,&a,&b);printf(The min is%d,(ab)?a:b);返 回a=3,b=4The min is 3u 位运算表达式:用位运算符连接运算量而组成用位运算符连接运算量而组成的表达式。对运算量以二进制位为单位操作。的表达式。对运算量以二进制位为单位操作。u 位运算符:&|2.4.8 位运算符和位运算表达式位运算符和位运算表达式逻辑位运算符逻辑位运算符移位位运算符移位

46、位运算符优先级优先级运算符运算符结合规则结合规则1 ()-.从左至右从左至右2!+-*&sizeof从右至左从右至左3*/%从左至右从左至右4+-从左至右从左至右5从左至右从左至右6 =从左至右从左至右7=!=从左至右从左至右8&从左至右从左至右9从左至右从左至右10|从左至右从左至右11&从左至右从左至右12|从左至右从左至右13?:从右至左从右至左14=+=-=*=/=%=&=|=从右至左从右至左15,从左至右从左至右abaa&ba|bab000110111 1、逻辑位运算、逻辑位运算&|逻辑位运算真值表逻辑位运算真值表(p45(p45表表2.12)2.12)1 1 0 0 0 0 0 1

47、 0 1 1 1 0 1 1 0 例例2.14逻辑位运算。逻辑位运算。main()int a,b;scanf(a=%x,b=%x,&a,&b);printf(a=%xn,a);printf(a&b=%xn,a&b);printf(a|b=%xn,a|b);printf(ab=%x,ab);a=0 xb9,b=0 x83a=0 xff46a&b=0 x81a|b=0 xbbab=0 x3a2、移位位运算 :有符号数有符号数,左复制符号位左复制符号位 无符号数无符号数,左补左补0 0例:a=0 x1b;b=a2;0 xfe 即-21 1 1 1 1 1 1 0 1 1 1 1 1 0 0 0补补1

48、 1舍去舍去例:b=248;b=b2;0 x3e 即62 舍去舍去0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 0补补0 0例例2.15移位位运算。移位位运算。#define S1 1#define S2 3main()int a;scanf(a=%d,&a);printf(%d%d=%dn,a,S1,aS1);printf(%d%d=%dn,a,S2,aS2);printf(%d%d=%dn,a,S1,aS1);printf(%d%d=%dn,a,S2,a1=133=031=63 .从左至右从左至右2!+-*&sizeof从右至左从右至左3*/%从左至右从左至右4+-从左至右从左至右5从左至右从左至右6 =从左至右从左至右7=!=从左至右从左至右8&从左至右从左至右9从左至右从左至右10|从左至右从左至右11&从左至右从左至右12|从左至右从左至右13?:从右至左从右至左14=+=-=*=/=%=&=|=从右至左从右至左15,从左至右从左至右返 回Thank you!

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

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

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


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

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


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