C语言程序设计第三章课件.pptx

上传人:莉*** 文档编号:87527237 上传时间:2023-04-16 格式:PPTX 页数:51 大小:497.33KB
返回 下载 相关 举报
C语言程序设计第三章课件.pptx_第1页
第1页 / 共51页
C语言程序设计第三章课件.pptx_第2页
第2页 / 共51页
点击查看更多>>
资源描述

《C语言程序设计第三章课件.pptx》由会员分享,可在线阅读,更多相关《C语言程序设计第三章课件.pptx(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、本章学习内容 算术运算符 增1和减1运算符 宏常量与 const常量 表达式与赋值中的自动类型转换 强制类型转换运算符 常用的标准数学函数第1页/共51页运算符(Operator)详见附录C常见的运算符算术运算符赋值运算符强制类型转换关系运算符逻辑运算符增和减位运算符第2页/共51页3.1C运算符和表达式(Operator and Expression)Example:W+Z操作数(Operand)运算符(Operator)操作数(Operand)何谓运算符和操作数?第3页/共51页3.1.1算术运算符和表达式Addition(+)Subtraction(-)Multiplication(*)

2、Division(/)Modulus(%)Arithmetic OperatorsArithmetic Operators第4页/共51页除法(Division)Example:W/Z浮点数除法(Floating Division)WW or Z Z or both are floats整数除法(Integer Division)WW and Z Z are integers第5页/共51页Example:an integeran integer the result is also an integer整数除法(Integer Division)11/5=2第6页/共51页Example:实

3、数除法(Floating Division)11.0/5=2.2a floatan integerthe result is a float第7页/共51页求余(Modulus)It returns the remainder that occurs after performing the division of 2 operandsRule:Operands must be integers注意!注意!第8页/共51页Example:11%5=1an integeran integerthe result is the remainder of 11/51152101remainderre

4、sult求余(Modulus)第9页/共51页Example:-11%5=-1an integeran integer-115-2-10-1remainderresultthe result is the remainder of-11/5求余(Modulus)第10页/共51页Example:11%-5=1an integeran integer11-5-210 1remainderresultthe result is the remainder of 11/-5求余(Modulus)第11页/共51页Example:11.0%5=?a floatan integerINVALID!求余(

5、Modulus)注意!注意!第12页/共51页当算术表达式包含两个或两个以上的算术运算符时 首先要确定运算顺序 所有的运算符都有一个优先级(Order of Precedence)算术表达式算术表达式(Arithmetic ExpressionArithmetic Expression)第13页/共51页 优先级(Order of Precedence)High:*/%Low:+-不同优先级时的运算顺序:从高到低相同优先级时的运算顺序:算术运算符为左结合(从左到右)算术表达式算术表达式(Arithmetic ExpressionArithmetic Expression)第14页/共51页Ex

6、ample:?48.52.5+6 44.52.5+6 2*2=算术表达式算术表达式(Arithmetic ExpressionArithmetic Expression)4.5第15页/共51页巧妙使用圆括号改变运算顺序从内往外运算Example:(9 (3+2)*3=?算术表达式算术表达式(Arithmetic ExpressionArithmetic Expression)第16页/共51页Example:(9 (3+2)*3=?5412(9 (3+2)*3=12算术表达式算术表达式(Arithmetic ExpressionArithmetic Expression)第17页/共51页赋

7、值语句(Assignment Statement)三种赋值形式:Simple简单赋值Multiple多重赋值Shorthand简写的复合赋值第18页/共51页算术混合运算 第19页/共51页【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和 关键是如何分离个位、十位和百位数字?关键是如何分离个位、十位和百位数字?153%10=3153 /100=1153 1*100=53 53/10=5第20页/共51页【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和#includemain()intx=153,b0,b1,b2,sum;b2=x/100;b1=(x-b2*100)/10

8、;b0=x%10;sum=b2+b1+b0;printf(b2=%d,b1=%d,b0=%d,sum=%dn,b2,b1,b0,sum);第21页/共51页变量的赋值简单赋值(Simple Assignment):变量 =表达式;多重赋值(Multiple Assignment):变量1 =变量2 =表达式;第22页/共51页Syntax:变量x =变量x 运算符op 表达式;变量x 运算符op =表达式;3.1.23.1.2复合的赋值运算符复合的赋值运算符(Combined Assignment Combined Assignment OperatorsOperators)这种形式看起来更直

9、观,且执行效率一般也更高一些这种形式看起来更直观,且执行效率一般也更高一些第23页/共51页Example:num=num+5;num1515+52020Example:num+=5;similar to num=num+5shorthand assignment operatorshorthand assignment operator3.1.23.1.2复合的赋值运算符复合的赋值运算符(Combined Assignment Combined Assignment OperatorsOperators)第24页/共51页已知 int a=3;执行 a+=a-=a*a 后,变量a的值?a+=

10、a-=a*a a+=a-=9 a+=-6 a=-123 3-6-6-12-12执行 a+=a-=a*=a 后,变量a的值?a+=a-=a*=a a+=a-=9 a+=0 a=03 3 9 9 0 0 0 0第25页/共51页OperationExamples of expressionDescription+=num+=5;num=num+5;-=num-=5;num=num5;*=num*=5;num=num*5;/=num/=5;num=num/5;%=num%=5;num=num%5;简写的复合赋值(简写的复合赋值(Shorthand Shorthand AssignmentAssign

11、ment)3.1.23.1.2复合的赋值运算符复合的赋值运算符(Combined Assignment Combined Assignment OperatorsOperators)第26页/共51页3.1.3增1和减1运算符(Increment and Decrement)n+,n-,+n,-n+让参与运算的变量加1,-让参与运算的变量减1作为后缀(postfix)运算符时,先取n的值,然后加/减1m=n+;m=n;n+;第27页/共51页3.1.3增1和减1运算符(Increment and Decrement)n+,n-,+n,-n+让参与运算的变量加1,-让参与运算的变量减1作为后缀(

12、postfix)运算符时,先取n的值,然后加/减1作为前缀(prefix)运算符时,先加/减1,然后取n的值m=+n;n+;m=n;第28页/共51页Example:j=+i-2i5similar to i=i+1;j=i 2;j?46前缀(前缀(PrefixPrefix )增增1 1和减和减1 1运算符运算符第29页/共51页Example:j=i+-2i5similar to j=i 2;i=i+1;后缀(后缀(PostfixPostfix)增增1 1和减和减1 1运算运算符符j?36第30页/共51页int a=3;printf(%d,-a+);a3similar to printf(%

13、d,-a);printf(%d,-a);a=a+1;a=a+1;后缀(后缀(PostfixPostfix)增增1 1和减和减1 1运算运算符符4第31页/共51页良好的程序设计风格提倡:在一行语句中,一个变量只能出现一次增1或者减1运算过多的增1和减1运算混合,不仅可读性差,而且因为编译器实现的方法不同,导致不同编译器产生不同的运行结果3.1.3增1和减1运算符(Increment and Decrement)第32页/共51页【例3.2】计算圆的周长和面积 circumference=33.300854area=88.247263#includemain()doubler=5.3;print

14、f(circumference=%fn,2*3.14159*r);printf(area=%fn,3.14159*r*r);第33页/共51页#includemain()doubler;printf(Inputr:);scanf(%lf,&r);printf(circumference=%fn,2*3.14159*r);printf(area=%fn,3.14159*r*r);【例3.3】计算圆的周长和面积 Input r:5.3circumference=33.300854 area=88.247263在程序中直接使用的常数称为幻数(Magic Number)第34页/共51页使用幻数存在的

15、问题?直接使用常数会有什么影响?程序的可读性变差容易发生书写错误当常数需要改变时,要修改所有引用它的代码,工作量大,还可能有遗漏解决方案:避免使用幻数把幻数定义为常量(宏常量、const常量)第35页/共51页3.2宏常量与宏替换#define 标识符 字符串宏常量(Macro Constant)也称符号常量一般采用全大写字母表示 宏定义不是语句,而是一种编译预处理命令第36页/共51页#includemain()doubler;printf(Inputr:);scanf(%lf,&r);printf(circumference=%fn,2*PI*r);printf(area=%fn,PI*r

16、*r);【例3.4】计算圆的周长和面积 宏替换宏替换第37页/共51页#include#definePI3.14159;#defineR5.3;main()printf(area=%fn,PI*R*R);printf(circumference=%fn,2*PI*R);相当于执行相当于执行#includemain()printf(area=%fn,3.14159;*5.3;*5.3;);printf(circumference=%fn,2*3.14159;*5.3;);语法错误语法错误计算圆的周长和面积 第38页/共51页#includemain()constdoublePI=3.14159;

17、doubler;printf(Inputr:);scanf(%lf,&r);printf(circumference=%fn,2*PI*r);printf(area=%fn,PI*r*r);constconst常量与宏常量相比的优点是什么?常量与宏常量相比的优点是什么?constconst常量有常量有数据类型数据类型某些集成化调试工具可以对某些集成化调试工具可以对constconst常量进行调试常量进行调试3.3 const常量【例例3.53.5】第39页/共51页表达式与赋值中的自动类型转换相同类型数据的运算结果,还是该类型不同类型数据的运算结果,是两种类型中取值范围大的那种long dou

18、ble double float long int short chardoublefloatlongunsignedintchar,short低高第40页/共51页表达式与赋值中的自动类型转换取值范围小的类型赋值给取值范围大的类型是安全的反之是不安全的若大类型的值在小类型能容纳的范围之内,则平安无事。但是浮点数转为整数,会丢失小数部分,而非四舍五入反之转换后的结果必然是错误的,具体结果与机器和实现方式有关避免如此使用,好的编译器会发出警告注意!注意!第41页/共51页表达式与赋值中的自动类型转换【例 3.6】下面程序演示了赋值中的类型转换第42页/共51页Example:intx=10;fl

19、oaty;y=(float)x;(float)10(float)10 10.00000010.000000 x10y?10.0000003.43.4自动类型转换与强制类型转换自动类型转换与强制类型转换运算符运算符 强转强转(CastingCasting)可以)可以消除从大到小的警告消除从大到小的警告 通过下面方式把表达式的值转为任意类型通过下面方式把表达式的值转为任意类型(类型类型)表达式表达式不改变不改变x x第43页/共51页Example:inttotal,number;floataverage;average=total/number;15/215/2 7 7total15number

20、2average?7.000000两个整数运算的结果还是整数,不是浮点数3.43.4自动类型转换与强制类型转换自动类型转换与强制类型转换运算符运算符第44页/共51页Example:inttotal,number;floataverage;average=(float)total/number;15.000000/215.000000/2 7.5000007.500000total15number2average?7.5000003.43.4自动类型转换与强制类型转换自动类型转换与强制类型转换运算符运算符第45页/共51页【例3.7】演示强制类型转换运算符的使用m/2=2(float)(m/2

21、)=2.000000(float)m/2=2.500000m=5第46页/共51页3.5 常用的标准数学函数 第47页/共51页【例3.8】计算三角形面积 area=sqrt(s*(s-a)*(s-b)*(s-c)area=sqrt(s(s-a)(s-b)(s-c)s=0.5*(a+b+c)s=1.0/2*(a+b+c)s=(a+b+c)/2.0s=(float)(a+b+c)/2s=1/2*(a+b+c)s=(float)(a+b+c)/2)注意!注意!第48页/共51页【例3.8】计算三角形面积 Input a,b,c:3,4,5area=6.000000第49页/共51页Questions and answers第50页/共51页感谢您的欣赏!第51页/共51页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁