1、算术运算符与表达式Teacher teaching designCONTENTS 目 录提出问题 引入新课基本的算术运算符自增、自减运算符仿真演练 体验探索明确考点 交流提升提出问题 引入新课PART 01提出问题 引入新课1、若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()A)1 B)2 C)2.0 D)2.5答案提示:C,请同学思考为什么?2、下列程序的输出结果是()main()float x;int y,z;x=9.8;y=(int)x+8.1;z=(int)(x+8.1);printf(%d%dn,z,y);思考提示:请强制转换语句中表达式整体与部分的变化?
2、基本的算术运算符PART 02基本的算术运算符【例1】main()int a,b,c,d;float x,y,z;a=1/3;b=-10/(-3);c=1%3;d=-10%(-3);x=1.0/3;y=-10/3.0;printf(n%d,%d,a,b);printf(n%d,%d,c,d);printf(%f,%fn,x,y);程序运行的结果为:0,31,-10.333333,-3.333333请思考分析输出结果?加法运算符“+”:加法运算符为双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有左结合性。减法运算符“-”:减法运算符即是双目运算又是单目运算,作单目运算时称为取负运算
3、,如,-5,-x等,具有左结合性。乘法运算符“*”:双目运算,具有左结合性。除法运算符“/”:双目运算具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。求余运算符“%”:双目运算符,要求参与运算的量均为整型。如,a%b,其值等于两数相除后的余数,符号与a相同。以上五种运算符中,*,/,%的优先级高于+,-;*,/,%优先级为3,+,-的优先级为4。自增、自减运算符PART 03自增、自减运算符+自增运算符(对变量加自增运算符(对变量加1)i+i+,+i-自减运算符(对变量减自减运算符(对变量减1)i i-,-i1、作用自增运算使单个变量的
4、值增,自减运算使单个变量的值减。2、用法与运算规则:自增、自减运算符都有两种用法。1)前置运算运算符放在变量之前:+变量、-变量先使变量的值增(或减1),然后再以变化后的值参与其它运算,即先增减,后运算。2)后置运算运算符放在变量之后:变量+、变量-变量先参与其它运算,然后再使变量的值增(或减1),即先运算,后增减。例如:A、k=1;j=+k;k先变成2,j=2 B、k=1;j=k+;k为1,j=1然后k为2。自增、自减运算符根据运行结果同学们仔细体会它们的区别。3、算术表达式和运算符的优先级、结合性1)先乘除后加减,结合方向为左结合性;2)取负符号“”和自增、自减运算符的优先级相同,结合方向
5、为右结合性;3)取负、自增、自减运算符的优先级别高于加减乘除运算符;4)自增、自减运算符不能对表达式进行运算。【例2】main()int x=15,y=9,i=13;x+;+y;printf(%d,%dn,x,y);printf(%dn,+i);printf(%dn,-i);printf(%dn,y+);printf(%dn,x-);printf(%d,%dn,x,y);程序运行的结果为:16,10 1413101615,11明确考点 交流提升PART 04明确考点 交流提升1、+、-、*、/运算符的使用main()float a=2,b=4,h=3,s1,s2;s1=(1/2)*(a+b)*
6、h;/*此语句如改为s1=(1.0/2)*(a+b)*h;时,s1的值又是多少*/s2=h/2*(a+b);printf(s1=%fns2=%fn,s1,s2);运行的结果为:2、求余运算符的使用mainint x=123;char c1,c2,c3;c1=x%10+0;c2=x/10%10+0;c3=x/100+0;printf(%c,%c,%cn,c3,c2,c1);运行的结果为:明确考点 交流提升3、+、-运算符的使用#include main()int i=4,a,b;a=i+;b=-i;printf(a=%d,i=%d,b=%d,a,b,i);运行的结果为:4、设整型变量i的值为3,
7、则计算表达式i-i后表达式的值为()A)0 B)l C)2 D)表达式出错仿真演练 体验探索PART 05仿真演练 体验探索1、分析下列程序并输出结果:#include main()int x=10;y=x+;printf(%d,%d,x+y,y+);2、下列程序的输出结果:main()int m=3,n=4,x;x=-m+;x=x+8/+n;printf(%dn,x);仿真演练 体验探索3、下列程序的输出结果:main()int x=2,y,z;y=(+x)+(x+)+(+x);z=(x-)+(-x)+(x-);printf(“x=%d,y=%d,z=%dn”,x,y,z);4、设有以下定义int a=0;double b=1.25;char c=A;#define d 2则下面语句中错误的是()A)a+;B)b+C)c+;D)d+;