C语言教程第4章课件.ppt





《C语言教程第4章课件.ppt》由会员分享,可在线阅读,更多相关《C语言教程第4章课件.ppt(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章 运算符与表达式第一节第一节 运算符与表达式概述运算符与表达式概述第二节第二节 算术运算符与算术表达式算术运算符与算术表达式第三节第三节 关系运算符与关系表达式关系运算符与关系表达式第四节第四节 逻辑运算符与逻辑表达式逻辑运算符与逻辑表达式第五节第五节 其他运算符的应用其他运算符的应用第六节第六节 运算符的优先级与结合性运算符的优先级与结合性第七节第七节 程序举例程序举例本章小结本章小结习题四习题四运算符是C语言中用于描述数据运算的特殊符号,表达式是基本数据对象和运算符的结合描述。第一节 运算符与表达式概述一、运算符一、运算符运算符是表示运算类型和规则的特定符号。C语言中的运算符按其在表
2、达式中与运算对象的关系(即连接运算对象的个数),可分为单目运算符、双目运算符和三目运算符;按它们在表达式中的作用,可分为12种。具体的运算符及其含义如表4.1所示。表4.1 运算符及其含义二、表达式二、表达式在C语言中,表达式是通过各种运算符把多个运算对象组合起来而形成的式子,运算对象包括常量、变量和函数。表达式主要有算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式和逗号表达式等。表达式无论长短,最终应该计算出一个确定的值,其结果的类型取决于表达式的类型及表达式中混合运算的类型转换。例如:int num1,num2=15;float f1,f2=2.15;char ch1,ch2=a
3、;num1=f2*ch2-15;f1=f2*ch2-15;ch1=f2*ch2-15;上例中,表达式结果的类型取决于表达式的类型,如num1=f2*ch2-15,其结果是整型;f1=f2*ch2-15,其结果是实型。C语言中的运算符范围很广,除了控制语句和输入输出外的基本操作都作为运算符处理。其中以算术运算符最重要,本节将重点介绍。第二节 算术运算符与算术表达式一、算术运算符一、算术运算符算术运算符用于对数据进行算术运算。C语言中的算术运算符及其含义如表4.2所示。表4.2 算术运算符及其含义对于算术运算符应注意以下几点:(1)“+”和“”运算符既可以作为加法、减法运算符,也可以作为正、负运算
4、符。(2)在使用“/”运算符时,要注意数据类型,如果操作数都是整数,则结果为两数相除的商;如果操作数都是实数,则结果是实数。(3)“%”运算符又称为求余运算符,它的操作数都是整数,结果是两数相除的余数。(4)算术运算符的优先级,可以从以下3点理解。1)先进行乘除运算,再进行加减运算,结合方向是自左至右。2)取负和自增自减运算符的优先级相同,结合方向是自右至左。3)取负和自增自减运算符的优先级高于加减乘除运算符。二、算术表达式二、算术表达式C语言中的算术表达式是由算术运算符、常量、变量、函数及圆括号组成的。关于算术表达式,应注意以下两点:(1)双目运算符两侧运算对象的数据类型必须一致,其结果也应
5、与运算对象的数据类型一致。如果数据类型不一致,则系统将自动按照转换规律对其进行转换,然后再进行运算。(2)两个整数相除,其结果为整数,如5/2=2,1/2=0;两个整数求模运算,其结果应为这两个整数相除的余数,如5%2=1,1%2=1。例4.1 求任意两个数相除的结果及余数。程序#includemain()int num1,num2,num3,num4;printf(“Please input two numbers.n”);printf(“num1=”);scanf(“%d”,&num1);printf(num2=);scanf(“%d”,&num2);num3=num1/num2;num4
6、=num1%num2;printf(“%d%c%d=%dn”,num1,47,num2,num3);printf(“%d%c%d=%dn”,num1,37,num2,num4);输入Please input two numbers.num1=15num2=4输出分析程序中首先输入两个整型数据num1和num2;然后通过求余运算和求模运算,求出两数相除的商和余数;最后输出运算结果。程序中求余和求模运算符是通过其ASCII码输出的。例4.2 算术运算符优先级实例。程序#includemain()int num1,num2,num3,num4,num5;printf(“Please input a
7、number.n”);printf(“num1=”);scanf(“%d”,&num1);num2=-num1+;num3=-+num2;num4=-num3;num5=num1+num2*num3-num4;printf(“num3=%dnnum4=%dnnum5=%dn”,num3,num4,num5);输入Please input a number.num1=15输出关系运算用于判断关系表达式中运算符左右运算对象的大小,关系的成立是建立在关系表达式结果的基础上的。关系表达式的结果称为逻辑值,即真和假。在C语言中,用非零数表示真,用0表示假。例如,关系表达式12的值为假,即0。第三节 关系
8、运算符与关系表达式一、关系运算符一、关系运算符关系运算实际上是逻辑比较运算,它是逻辑运算的一种,用来比较两个数据的大小。常见的关系运算符及其含义如表4.3所示。表4.3 关系运算符及其含义关系运算符,=的优先级相同,且高于=和!=;=,!=的优先级相同。优先级相同时,关系运算符的结合方向是自左至右。例如,“12=0”等价于“(12)=0”,其值为真,即1;“2=1!=0”等价于“(2=1)!=0”,其值为假,即0;“x=1=2”等价于“x=(1=2)”,先判断表达式“1=2”得1,然后再将1赋予变量x,因此x的值为1。二、关系表达式二、关系表达式关系表达式是由关系运算符连接构成的表达式,其功能
9、是判断关系运算符左右运算对象的大小关系,关系成立与否根据关系表达式的结果进行判断,关系表达式常用于结构语句的条件判断。其一般格式如下:其中,表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式等。例如:41,bh,bh,a+bc+d等都是合法的关系表达式。但是在关系运算符=,=,!=中不能有空格。例如:26=0和5=4!=0的值。程序#includemain()int num1,num2;num1=56=0;num2=56=0=%dn”,num1);printf(“5=4!=0=%dn”,num2);输出例4.4 关系运算综合实例。程序#includemain()int num1,num
10、2,num3,num4;float f1,f2;printf(“Input two float numbers:”);scanf(“%f,%f”,&f1,&f2);num1=f1=f2;num2=f1=%.2f=%dn”,f1,f2,num1);printf(“%.2f=f2的值赋予num1;在程序第11行中,将比较形式及其结果输出,“%.2f”表示该实型数据以保留两位小数的形式输出。在C语言中,逻辑表达式主要用于对关系表达式之间的关系进行逻辑判断,逻辑运算结果有两种,即非零表示真,0表示假,如a&b,a|b,!a等。第四节 逻辑运算符与逻辑表达式一、逻辑运算符一、逻辑运算符逻辑运算符用来对关
11、系表达式或逻辑表达式进行逻辑运算。常见的逻辑运算符及其运算规则如 表4.4所示。表4.4 逻辑运算符及其运算规则在使用逻辑运算符时应注意以下两点:(1)逻辑运算符的优先级从高到低依次是逻辑非(!)、逻辑与(&)、逻辑或(|)。逻辑非的优先级高于加、减、乘、除运算符;与取负和自增自减运算符优先级相同;逻辑与的优先级低于关系运算符。例如:!a*b+!c*d/*等价于(!a)*b)+(!c)*d)*/ab|cd&!eb)|(cd)&(!e)0/*等价于97|9765,结果为1*/例4.5 有3个人A,B,C,每人说一句话如下:A说:B在说谎。B说:C在说谎。C说:A和B都在说谎。试写出能确定谁在说谎
12、的逻辑表达式。分析假设整型变量a,b,c分别表示A,B,C 3个人,其值为1表示该人说真话,为0表示该人说假话。A说:B在说谎。有两种可能:一是A说的是真话,此时B确实在说谎,可以用逻辑表达式表示为A=1&B=0等价于A&!B;二是A在说谎话,此时B说的是真话,可以用逻辑表达式表示为A=0&B=1等价于!A&B。因此,由A说的话可得到逻辑表达式:A&!B|!A&B。同理,由B说的话可得到逻辑表达式:B&!C|!B&C。同理,由C说的话可得到逻辑表达式:C&!A&!B|!C&A&B。由于这3个逻辑表达式之间是逻辑与关系,因此可得谁在说谎的逻辑表达式如下:(A&!B|!A&B)&(B&!C|!B&
13、C)&(C&!A&!B|!C&A&B)例4.6 阅读下列程序,请输出m,n及o的值。程序#includemain()int num1,num2,num3,num4;int m,n,o;num1=1;num2=2;num3=3;num4=4;m=n=1;o=(m=num1num2)&(n=num3num4);printf(“m=%dnn=%dnp=%dn”,m,n,o);输出分析在程序中,逻辑表达式“(m=num1num2)&(n=num3num4)”应该是把关系表达式“num1num2”的值(为0)赋予m,把关系表达式“num3num4”的值(为0)赋予n,然后把“m&n”的值(为0)赋予o。
14、但是在实际运算时,首先进行关系表达式“num1num2”运算,此时m=0(通常0&a(aR)的值依然为0),因此,此时o的值也为0,赋值运算(n=num3num4)就不必进行了,即变量n的值仍为初值1。二、按位逻辑运算符二、按位逻辑运算符按位逻辑运算就是把整型数据转换成二进制数据,然后再执行逻辑运算。常见的按位运算符有与(逻辑乘)、或(逻辑加)、非(逻辑否定)和异或4种。例4.7 求33和50的与、或、非及异或值。算法首先应把33和50转换成二进制数。十进制数转换成二进制数,采用的是“除2取余法”。其过程是先将十进制数除以2,得到一个商数和一个余数,再将商数除以2,又得到一个商数和余数,依次类
15、推,直至商数等于零为止,每次得到的余数就是对应二进制数的各位数字。值得注意的是第一次得到的是二进制数的最低位,最后一次得到的是二进制数的最高位。如把33转换成二进制数,具体过程如下:最后结果为(33)10=(100001)2。同理,(50)10=(110010)2。逻辑与运算,通常用“”或“”来表示,其运算规则是11=1,10=0,01=0,00=0。例如:(33)10(50)10=(100001)2(110010)2=(100000)2=(32)10。逻辑或运算,通常用“+”或“”来表示,其运算规则是11=1,10=1,01=1,00=0。例如:(33)10(50)10=(100001)2(
16、110010)2=(110011)2=(51)10。逻辑非运算,通常用“”表示,其运算规则是=1,=0。例如:异或运算,通常用“”表示,其运算规则是11=0,10=1,01=1,00=0。例如:(33)10(50)10=(100001)2(110010)2=(010011)2=(19)10三、逻辑表达式三、逻辑表达式 逻辑表达式是由逻辑运算符连接构成的表达式,其一般格式如下:或例如:!a,!(a+b),a+b&cd等。逻辑表达式的值是一个逻辑量“真”或“假”,C语言中用1表示“真”,用0表示“假”。例4.8 逻辑表达式实例。程序#includemain()int num1,num2,num3,
17、num4;printf(“Please input two numbers:”);scanf(“%d,%d”,&num3,&num4);num1=num3num4&num3+!num4;num2=!num3|num4;if(num1=1)printf(“%d%d&%d+!%d=Tn”,num3,num4,num3,num4);elseprintf(“%d%d&%d+!%d=Fn”,num3,num4,num3,num4);if(num2=1)printf(“!%d|%d=Tn”,num3,num4);else printf(“!%d|%d=Fn”,num3,num4);输入Please inp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 教程 课件

限制150内