大学C语言教程第4章

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C语言程序设计基础教程第五节其他运算符的应用第六节运算符的优先级与结合性第七节程序举例本章小结习题四C语言程序设计基础教程运算符是C语言中用于描述数据运算的特殊符号,表达式是基本数据对象和运算符的结合描述。第一节运算符与表达式概述C语言程序设计基础教程一、运算符运算符是表示运算类型和规则的特定符号。C语言中的运算符按其在表达式中与运算对象的关系(即连接运算对象的个数),可分为单目运算符、双目运算符和三目运算符;按它们在表达式中的作用,可分为12种。具体的运算符及其含义如表4.1所示。C语言程序设计基础教程表4.1运算符及其含义C语言程序设计基础教程二、表达式在C语言中,表达式是通过各种运算符把多个运算对象组合起来而形成的式子,运算对象包括常量、变量和函数。表达式主要有算术表达式、关系表达式、逻辑表达式、赋值表达式、条件表达式和逗号表达式等。表达式无论长短,最终应该计算出一个确定的值,其结果的类型取决于表达式的类型及表达式中混合运算的类型转换。C语言程序设计基础教程例如:intnum1,num2=15;floatf1,f2=2.15;charch1,ch2=‘a’;num1=f2*ch2-15;f1=f2*ch2-15;ch1=f2*ch2-15;上例中,表达式结果的类型取决于表达式的类型,如num1=f2*ch2-15,其结果是整型;f1=f2*ch2-15,其结果是实型。C语言程序设计基础教程C语言中的运算符范围很广,除了控制语句和输入输出外的基本操作都作为运算符处理。其中以算术运算符最重要,本节将重点介绍。第二节算术运算符与算术表达式C语言程序设计基础教程一、算术运算符算术运算符用于对数据进行算术运算。C语言中的算术运算符及其含义如表4.2所示。表4.2算术运算符及其含义C语言程序设计基础教程对于算术运算符应注意以下几点:(1)“+”和“–”运算符既可以作为加法、减法运算符,也可以作为正、负运算符。(2)在使用“/”运算符时,要注意数据类型,如果操作数都是整数,则结果为两数相除的商;如果操作数都是实数,则结果是实数。(3)“%”运算符又称为求余运算符,它的操作数都是整数,结果是两数相除的余数。C语言程序设计基础教程(4)算术运算符的优先级,可以从以下3点理解。1)先进行乘除运算,再进行加减运算,结合方向是自左至右。2)取负和自增自减运算符的优先级相同,结合方向是自右至左。3)取负和自增自减运算符的优先级高于加减乘除运算符。C语言程序设计基础教程二、算术表达式C语言中的算术表达式是由算术运算符、常量、变量、函数及圆括号组成的。关于算术表达式,应注意以下两点:(1)双目运算符两侧运算对象的数据类型必须一致,其结果也应与运算对象的数据类型一致。如果数据类型不一致,则系统将自动按照转换规律对其进行转换,然后再进行运算。(2)两个整数相除,其结果为整数,如5/2=2,1/2=0;两个整数求模运算,其结果应为这两个整数相除的余数,如5%2=1,1%2=1。C语言程序设计基础教程例4.1求任意两个数相除的结果及余数。程序#includestdio.hmain(){intnum1,num2,num3,num4;printf(“Pleaseinputtwonumbers.\n”);printf(“num1=”);scanf(“%d”,&num1);printf(num2=);C语言程序设计基础教程scanf(“%d”,&num2);num3=num1/num2;num4=num1%num2;printf(“%d%c%d=%d\n”,num1,47,num2,num3);printf(“%d%c%d=%d\n”,num1,37,num2,num4);C语言程序设计基础教程}输入Pleaseinputtwonumbers.num1=15↙num2=4↙输出C语言程序设计基础教程分析程序中首先输入两个整型数据num1和num2;然后通过求余运算和求模运算,求出两数相除的商和余数;最后输出运算结果。程序中求余和求模运算符是通过其ASCII码输出的。C语言程序设计基础教程例4.2算术运算符优先级实例。程序#includestdio.hmain(){intnum1,num2,num3,num4,num5;printf(“Pleaseinputanumber.\n”);printf(“num1=”);C语言程序设计基础教程scanf(“%d”,&num1);num2=-num1++;num3=-++num2;num4=--num3;num5=num1+num2*num3-num4;printf(“num3=%d\nnum4=%d\nnum5=%d\n”,num3,num4,num5);C语言程序设计基础教程}输入Pleaseinputanumber.num1=15↙输出C语言程序设计基础教程关系运算用于判断关系表达式中运算符左右运算对象的大小,关系的成立是建立在关系表达式结果的基础上的。关系表达式的结果称为逻辑值,即真和假。在C语言中,用非零数表示真,用0表示假。例如,关系表达式12的值为真,即1,关系表达式12的值为假,即0。第三节关系运算符与关系表达式C语言程序设计基础教程一、关系运算符关系运算实际上是逻辑比较运算,它是逻辑运算的一种,用来比较两个数据的大小。常见的关系运算符及其含义如表4.3所示。表4.3关系运算符及其含义C语言程序设计基础教程关系运算符,=,,=的优先级相同,且高于==和!=;==,!=的优先级相同。优先级相同时,关系运算符的结合方向是自左至右。例如,“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。C语言程序设计基础教程二、关系表达式关系表达式是由关系运算符连接构成的表达式,其功能是判断关系运算符左右运算对象的大小关系,关系成立与否根据关系表达式的结果进行判断,关系表达式常用于结构语句的条件判断。其一般格式如下:C语言程序设计基础教程表达式关系运算符表达式其中,表达式可以是算术表达式、关系表达式、逻辑表达式、赋值表达式等。例如:41,bh,‘b’‘h’,a+bc+d等都是合法的关系表达式。但是在关系运算符=,=,==,!=中不能有空格。例如:2□=5,2!□=5,2=□=5等都是不合法的关系表达式,其中,□表示空格。C语言程序设计基础教程例4.3求关系表达式56==0和5=4!=0的值。程序#includestdio.hmain(){intnum1,num2;num1=56==0;num2=5=4!=0;C语言程序设计基础教程printf(“\‘56==0\’=%d\n”,num1);printf(“\‘5=4!=0\’=%d\n”,num2);}输出C语言程序设计基础教程例4.4关系运算综合实例。程序#includestdio.hmain(){intnum1,num2,num3,num4;floatf1,f2;printf(“Inputtwofloatnumbers:”);scanf(“%f,%f”,&f1,&f2);num1=f1=f2;C语言程序设计基础教程num2=f1=f2;num3=f1==f2;num4=f1!=f2;printf(“\‘%.2f=%.2f\’=%d\n”,f1,f2,num1);printf(“\‘%.2f=%.2f\’=%d\n”,f1,f2,num2);printf(“\‘%.2f==%.2f\’=%d\n”,f1,f2,num3);printf(“\‘%.2f!=%.2f\’=%d\n”,f1,f2,num4);C语言程序设计基础教程}输入Inputtwofloatnumbers:30,42.6↙输出C语言程序设计基础教程分析在程序第6行中,系统获得用户的输入f1=30,f2=42.6;在程序第7行中,将关系表达式f1=f2的值赋予num1;在程序第11行中,将比较形式及其结果输出,“%.2f”表示该实型数据以保留两位小数的形式输出。C语言程序设计基础教程在C语言中,逻辑表达式主要用于对关系表达式之间的关系进行逻辑判断,逻辑运算结果有两种,即非零表示真,0表示假,如a&&b,a||b,!a等。第四节逻辑运算符与逻辑表达式C语言程序设计基础教程一、逻辑运算符逻辑运算符用来对关系表达式或逻辑表达式进行逻辑运算。常见的逻辑运算符及其运算规则如表4.4所示。表4.4逻辑运算符及其运算规则C语言程序设计基础教程在使用逻辑运算符时应注意以下两点:(1)逻辑运算符的优先级从高到低依次是逻辑非(!)、逻辑与(&&)、逻辑或(||)。逻辑非的优先级高于加、减、乘、除运算符;与取负和自增自减运算符优先级相同;逻辑与的优先级低于关系运算符。C语言程序设计基础教程例如:!a*b+!c*d/*等价于((!a)*b)+((!c)*d)*/ab||cd&&!ef/*等价于(ab)||((cd)&&((!e)f))*/(2)在C语言中,1与非零整数及非‘\0’的字符型数据均可以表示真值;0与‘\0’表示逻辑假值。C语言程序设计基础教程例如:‘\0’&&!a/*等价于0&&!a,结果为0*/‘a’||‘a’‘\0’/*等价于97||9765,结果为1*/例4.5有3个人A,B,C,每人说一句话如下:A说:B在说谎。B说:C在说谎。C说:A和B都在说谎。试写出能确定谁在说谎的逻辑表达式。C语言程序设计基础教程分析假设整型变量a,b,c分别表示A,B,C3个人,其值为1表示该人说真话,为0表示该人说假话。A说:B在说谎。有两种可能:一是A说的是真话,此时B确实在说谎,可以用逻辑表达式表示为A==1&&B==0等价于A&&!B;二是A在说谎话,此时B说的是真话,可以用逻辑表达式表示为A==0&&B==1等价于!A&&B。C语言程序设计基础教程因此,由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&&C)&&(C&&!A&&!B||!C&&A&&B)C语言程序设计基础教程例4.6阅读下列程序,请输出m,n及o的值。程序#includestdio.hmain(){intnum1,num2,num3,num4;intm,n,o;C语言程序设计基础教程num1=1;num2=2;num3=3;num4=4;m=n=1;o=(m=num1num2)&&(n=num3num4);printf(“m=%d\nn=%d\np=%d\n”,m,n,o);}输出C语言程序设计基础教程分析在程序中,逻辑表达式“(m=num1num2)&&(n=num3num4)”应该是把关系表达式“num1num2”的值(为0)赋予m,把关系表达式“num3num4”的值(为0)赋予n,然后把“m&&n”的值(为0)赋予o。但是在实际运算时,首先进行关系表达式“num1num2”运算,此时m=0(通常0&&a(aR)的值依然为0),因此,此时o的值也为0,赋值运算(n=num3num4)就不必进行了,即变量n的值仍为初值1。C语言程序设计基础教程二、按位逻辑运算符按位逻辑运算就是把整型数据转换成二进制数据,然后再执行逻辑运算。常见的按位运算符有与(逻辑乘)、或(逻辑加)、非(逻辑否定)和异或4种。C语言程序设计基础教程例4.7求33和50的与、或、非及异或值。算法首先应把33和50转换成二进制数。十进制数转换成二进制数,采用的是“除2取余法”。其过程是先将十进制数除以2,得到一个商数和一个

1 / 98
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功