《《表达式与语句》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《表达式与语句》PPT课件.ppt(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C语言程序设计表达式与语句第三章第三章C语言程序设计本章学习目标q掌握掌握C C语言基本运算符的使用语言基本运算符的使用q理解运算符的优先级理解运算符的优先级q熟练掌握熟练掌握C C语言基本表达式的使用语言基本表达式的使用q熟练掌握熟练掌握C C语言基本语句的使用语言基本语句的使用q学会简单顺序程序的设计学会简单顺序程序的设计 q掌握掌握Visual C+Visual C+环境下的顺序程序执行过程环境下的顺序程序执行过程的跟踪,以及变量值的观察的跟踪,以及变量值的观察C语言程序设计C语言的表达式C语言程序设计Z=(X*2)+(5 Y)C语言的表达式操作数操作数操作数操作数表达式表达式表达式表达
2、式表达式表达式运算符运算符C语言程序设计C语言的表达式q表达式由操作数和运算符的组合而成q表达式中的操作数可以是变量、常量或者子表达式q表达式的主要类型有:q 算术表达式q 赋值表达式q 关系表达式q 逻辑表达式q 条件表达式q 逗号表达式C语言程序设计算术表达式1单目运算符单目运算符运运算算符符名称名称运算运算规则规则运算运算对象对象运算运算结果结果举举 例例x的值的值a的的值值取负取负取负取负值值整型整型或实型或实型整型整型或实型或实型a1;xa;x1a1增增1(前缀前缀)先增先增值后值后引用引用整型、整型、字符型字符型或实型或实型变量变量整型、整型、字符型字符型或实型或实型变量变量a1;
3、xa;x2a2增增1(后缀后缀)先引先引用后用后增值增值a1;xa;x1a2减减1(前缀前缀)先减先减值后值后引用引用a1;xa;x0a0减减1(后缀后缀)先引先引用后用后减值减值a1;xa;x1a0C语言程序设计增1和减1运算符m=n+;m=n;n+;m=+n;n+;m=n;C语言程序设计Example:j=+i-2i5similar to i=i+1;j=i 2;j?46前缀(前缀(前缀(前缀(PrefixPrefix )增增增增1 1和减和减和减和减1 1运算符运算符运算符运算符C语言程序设计Example:j=i+-2i5similar to j=i 2;i=i+1;后缀(后缀(Pos
4、tfixPostfix)增增1 1和减和减1 1运算符运算符j?36C语言程序设计int a=3;printf(%d,-a+);a3similar to printf(%d,-a);printf(%d,-a);a=a+1;a=a+1;后缀(后缀(PostfixPostfix)增增1 1和减和减1 1运算符运算符4C语言程序设计课堂练习 语句 k值 j值 j=3;k=+j;j=3;k=j+;c值 a值 a=3;b=5;c=(+a)*b;a=3;b=5;c=(a+)*b;printf输出 j值 j=3;printf(“%d”,+j);j=3;printf(“%d”,j+);k=4 j=4k=3 j
5、=44 j=43 j=4c=20 a=4c=15 a=4注:注:+、-运算符只能用于变量运算符只能用于变量,而不能用于常量或表达式。而不能用于常量或表达式。C语言程序设计算术表达式2双目运算符双目运算符运算符运算符名称名称运算规则运算规则运算对象运算对象运算结果运算结果举举 例例表达式值表达式值*乘乘乘法乘法整型或整型或实型实型整型或整型或实型实型2.5*3.07.5/除除除法除法2.5/50.5%模(求余)模(求余)整数取余整数取余整型整型整型整型10%31加加加法加法整型或整型或实型实型整型或整型或实型实型2.51.33.8减减减法减法2.51.31.2注意:注意:双目运算符优先级:双目运
6、算符优先级:*、/、%同级,、同级,并且前者高于后者。同级,、同级,并且前者高于后者。双目运算符优先级低于单目运算符。双目运算符优先级低于单目运算符。C语言程序设计课堂练习 算术运算 运算结果 说明 6/4 6/4.0 6%4 6%-4 -6%41 整数相除的结果仍为一个整数整数相除的结果仍为一个整数求余运算:操作数必须是整数,余数的符号同被除数求余运算:操作数必须是整数,余数的符号同被除数求余运算:操作数必须是整数,余数的符号同被除数求余运算:操作数必须是整数,余数的符号同被除数1.5 实数相除的结果仍为一个实数实数相除的结果仍为一个实数2 余数为正余数为正2 余数为正余数为正-2 余数为负
7、余数为负C语言程序设计【作业一】计算并输出一个三位整数的个位、十位和百位数字之和(写在作业本上)关键是如何分离个位、十位、百位数字?关键是如何分离个位、十位、百位数字?153%10=3153 /100=1153-1*100=53 53/10=5C语言程序设计赋值表达式注意:注意:赋值运算符的优先级比较低,仅高于逗号运算符。它没有相等的意义赋值运算符的优先级比较低,仅高于逗号运算符。它没有相等的意义。运算符运算符名名 称称运算规则运算规则运算对象运算对象运算结果运算结果举举 例例表达式值表达式值赋值赋值给变量赋值给变量赋值任何类型任何类型任何类型任何类型a2;2C语言程序设计Example:nu
8、m=num+5;num1515+52020C语言程序设计算术表达式复合运算符复合运算符注意:注意:复合运算符中复合运算符中5个运算符同级,但低于双目运算符个运算符同级,但低于双目运算符。1a3;a2;ab aab自反减自反减5a3;a2;整型或实型整型或实型整型或实整型或实型型ab aab自反加自反加1a3;a%2;整型整型整型整型a%b aa%b自反模自反模%1a3;a/2;a/b aa/b自反除自反除/6a3;a*2;整型或实型整型或实型整型或实整型或实型型a*b aa*b自反乘自反乘*表达式值表达式值举例举例运算结果运算结果运算对象运算对象运算规则运算规则名称名称运算符运算符C语言程序设
9、计Example:num+=5;similar to num=num+5C语言程序设计已知 int a=3;执行 a+=a-=a*a 后,变量a的值?a+=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 0C语言程序设计算术表达式强制类型转换运算符强制类型转换运算符注意:注意:强制类型转换运算符高于双目运算符,但低于取负运算。强制类型转换运算符高于双目运算符,但低于取负运算。运算符运算符名名 称称运算规则运算规则运算对象运
10、算对象运算结果运算结果举举 例例表达式值表达式值(类型类型)类型类型转换转换转换为指定类转换为指定类型型整型或整型或实型实型整型或整型或实型实型float x3.4;(int)x;3C语言程序设计Example:int x=10;float y;y=(float)x;(float)10(float)10 10.00000010.000000 x10y?10.000000不改变不改变不改变不改变x xC语言程序设计Example:int total,number;float average;average=total/number;15/215/2 7 7total15number2averag
11、e?7.000000两个整数运算的结果两个整数运算的结果还是整数,不是浮点数还是整数,不是浮点数C语言程序设计Example:int total,number;float average;average=(float)total/number;15.000000/215.000000/2 7.5000007.500000total15number2average?7.500000C语言程序设计课堂练习#include void main()int n1=1,n2=2;float n3=3.5,n4=2.5,s;s=(float)(n1+n2)/2+(int)n3%(int)n4;printf(
12、s=%fn,s);C语言程序设计关系表达式注意:注意:关系运算符的优先级低于算术运算符关系运算符的优先级低于算术运算符。运算符运算符名名 称称运算规则运算规则运算运算对象对象运算运算结果结果举举 例例表达式值表达式值小于小于满足则真满足则真结果为结果为1,不,不满足则为假,满足则为假,结果为结果为0整型、整型、字符型字符型或实型或实型逻辑值逻辑值(1或或0)a3;b4;ab;1小于小于等于等于a3;b4;ab;1大于大于a3;b4;ab;0大于大于等于等于a3;b4;ab;0等于等于a3;b4;ab;0!不等于不等于a3;b4;a!b;1C语言程序设计课堂练习 算术运算 运算结果 1!=2 8
13、=A)&(ch=A)&(ch=1)&(b+=5)(0=1)(0=1)&(b&(b+=5)=5)0&0&(b(b+=5)=5)0 0a0b5c15d17逻辑运算符的短路运算逻辑运算符的短路运算逻辑运算符的短路运算逻辑运算符的短路运算尽量使用最少的操作数来确定表达式的值,这就尽量使用最少的操作数来确定表达式的值,这就意味着表达式中的某些操作数可能不会被计算意味着表达式中的某些操作数可能不会被计算 C语言程序设计逻辑表达式#include void main()int x,y,z;x=y=z=1;+x|+y&+z;printf(x=%d,y=%d,z=%dn,x,y,z);x=y=z=1;+x&+y
14、|+z;printf(x=%d,y=%d,z=%dn,x,y,z);x=y=z=1;+x&+y&+z;printf(x=%d,y=%d,z=%dn,x,y,z);C语言程序设计条件表达式运算符运算符名称名称运算规则运算规则运算运算对象对象运算结果运算结果举举 例例表达式值表达式值?条件条件表达式表达式1为真,为真,结果为表达式结果为表达式2的值,否则的值,否则为表达式为表达式3的的值值表达式表达式表达式表达式1为真,为真,结果为表达式结果为表达式2的值,否则的值,否则为表达式为表达式3的的值值maxab?a:b;若若ab,则则maxa,否则否则maxb注意:注意:条件运算符优先级低于逻辑运算符
15、,但高于赋值运算符。条件运算符优先级低于逻辑运算符,但高于赋值运算符。条件运算符条件运算符“?”和和“:”是一对运算符,不能分开单独使用。是一对运算符,不能分开单独使用。表达式表达式表达式表达式1?1?1?1?表达式表达式表达式表达式2:2:2:2:表达式表达式表达式表达式3 3 3 3C语言程序设计#include main()int a,b,max;printf(Input a,b:);scanf(%d,%d,&a,&b);printf(max=%d,max);max=a b?a:b;阅读理解下面程序阅读理解下面程序阅读理解下面程序阅读理解下面程序C语言程序设计逗号表达式注意:注意:逗号运
16、算符的优先级最低。逗号运算符的优先级最低。在只允许出现一个表达式的地方出现多个表达式时,常采用逗号表达式的在只允许出现一个表达式的地方出现多个表达式时,常采用逗号表达式的形式形式。运算运算符符名称名称运算运算规则规则运算运算对象对象运算运算结果结果举举 例例表达表达式值式值,逗号逗号最后一个表最后一个表达式的值达式的值表达式表达式最后一个表达最后一个表达式的值式的值a3*8,a529C语言程序设计1 1当当a=10,b=0a=10,b=0时,计算逗号表达式时,计算逗号表达式b=(a+=5,a+5)b=(a+=5,a+5)的值的值。20202 2表达式表达式(x(x2,y2,y5,y5,y,x,
17、xy)y)的值是的值是 。8 8课堂练习:写出逻辑表达式C语言程序设计各种数据类型之间的转换假定m为float型,n为int型,分析表达式:19+a-2.5+m/n运算后的数据类型。表示必定的转换 表示运算对象不同类型时的转换C语言程序设计C语言的语句qC语言规定,语句以分号“;”为结束标志qC语言的语句主要有:q 表达式语句q 空语句q 复合语句q 函数调用语句q 控制语句C语言程序设计表达式语句表达式的后面加一个分号就构成了一个语句。表达式的后面加一个分号就构成了一个语句。最常用的表达式语句是赋值表达式组成的赋值语句。最常用的表达式语句是赋值表达式组成的赋值语句。语言中有使用价值的表达式语
18、句主要有三种:语言中有使用价值的表达式语句主要有三种:(1)赋值语句,如)赋值语句,如zxy;(2)自增减运算符构成的表达式语句,如)自增减运算符构成的表达式语句,如i;(3)逗号表达式语句,如)逗号表达式语句,如a1,b2;C语言程序设计空语句仅有一个分号的语句称为空语句。仅有一个分号的语句称为空语句。C语言程序设计复合语句由一对花括号括起来的若干语句称为复合语句由一对花括号括起来的若干语句称为复合语句,又称为语句块。又称为语句块。例如:例如:#include void main()int a=10,b=20,s;int a=30,c;/复合语句中定义的变量复合语句中定义的变量a只在复合语句
19、中有效只在复合语句中有效 c=a*3;printf(a=%d,c=%dn,a,c);s=a+b;/复合语句中的复合语句中的a变量失效,变量变量失效,变量a=10 printf(a=%d,b=%d,s=%d,a,b,s);C语言程序设计函数调用语句它是由一个函数调用加上一个分号组成的一个语句。它是由一个函数调用加上一个分号组成的一个语句。例如例如:scanf(%2d%*2d%2d,&m,&n);printf(x+y+z=%dn,x+y+z);putchar(n);C语言程序设计编写简单C语言程序【示范实例示范实例3-2】编写程序实现下述功能:从键盘输入相向行编写程序实现下述功能:从键盘输入相向行
20、驶的两车之间的距离和它们各自的速度,计算它们需要多少驶的两车之间的距离和它们各自的速度,计算它们需要多少时间才能相遇,在屏幕上输出计算结果。时间才能相遇,在屏幕上输出计算结果。解题思路:用实型变量解题思路:用实型变量s存放初始距离,用实型变量存放初始距离,用实型变量v1和和v2存存放两车的速度,根据距离、速度和时间的关系计算所需要的放两车的速度,根据距离、速度和时间的关系计算所需要的数据。因此,具体操作步骤如下:数据。因此,具体操作步骤如下:(1)显示提示信息;)显示提示信息;(2)从键盘输入)从键盘输入s、v1、v2的值;的值;(3)计算)计算v1v2,得到中间结果,得到中间结果v;(4)计
21、算)计算s/v,结果赋给,结果赋给t;(5)输出计算结果)输出计算结果t。C语言程序设计编写简单C语言程序/*源文件名:源文件名:ch3_02.c 功能:计算时间功能:计算时间*/#include void main()float s,v1,v2,v,t;printf(请输入距离请输入距离(km)和两个速度和两个速度(km/h):);scanf(%f,%f,%f,&s,&v1,&v2);v=v1+v2;t=s/v;printf(需要需要%.0f小时才能相遇小时才能相遇n,t);C语言程序设计编写简单C语言程序【示范实例示范实例3-3】编写程序实现下述功能:依次输入两个整数编写程序实现下述功能:
22、依次输入两个整数给变量给变量x、y,然后实现两数交换,依次输出交换后的,然后实现两数交换,依次输出交换后的x、y值。值。解题思路:交换两数需要借助于第三个变量来完成,因此,定解题思路:交换两数需要借助于第三个变量来完成,因此,定义三个同类型变量,两个变量用于存放数据,第三个变量用义三个同类型变量,两个变量用于存放数据,第三个变量用作临时中间变量。具体操作步骤如下:作临时中间变量。具体操作步骤如下:(1)显示提示信息;)显示提示信息;(2)从键盘输入)从键盘输入x、y的值;的值;(3)输出交换前变量的值;)输出交换前变量的值;(4)借助于第三个变量,通过三个赋值语句实现两数交换;)借助于第三个变
23、量,通过三个赋值语句实现两数交换;(5)输出交换后的结果。)输出交换后的结果。C语言程序设计编写简单C语言程序/*源文件名:源文件名:ch3_03.c 功能:交换两数功能:交换两数*/#include void main()int x,y,temp;printf(请输入两个整数:请输入两个整数:);scanf(%d,%d,&x,&y);printf(交换前变量的值:交换前变量的值:x=%d,y=%dn,x,y);temp=x;x=y;y=temp;printf(交换后变量的值:交换后变量的值:x=%d,y=%dn,x,y);【思考与验证】上面程序中变量temp能不能省掉?为什么?C语言程序设计
24、演示演示:使用Visual C+6.0程序过程的跟踪C语言程序设计常见错误列举(1)对于)对于float型变量使用型变量使用%运算符。运算符。(2)对表达式进行强制类型转换时漏掉了圆括号。)对表达式进行强制类型转换时漏掉了圆括号。(3)赋值号)赋值号“”左边使用表达式。左边使用表达式。(4)对算术表达式使用和运算符。)对算术表达式使用和运算符。(5)对算术表达式取地址。)对算术表达式取地址。(6)在关系表达式中误用来表示。)在关系表达式中误用来表示。(7)两个关系表达式连用。)两个关系表达式连用。(8)将)将&、误写为误写为&、。、。(9)用!)用!表示不大于。表示不大于。(10)在、)在、!、运算符中间多了空格。、运算符中间多了空格。C语言程序设计小结qC语言基本运算符的使用q运算符的优先级qC语言基本表达式的使用qC语言基本语句的使用q简单顺序程序的设计 qVisual C+环境下的顺序程序执行过程的跟踪,以及变量值的观察