《C语言程序设计案例式教程》课件 第3章 运算符与表达式_第1页
《C语言程序设计案例式教程》课件 第3章 运算符与表达式_第2页
《C语言程序设计案例式教程》课件 第3章 运算符与表达式_第3页
《C语言程序设计案例式教程》课件 第3章 运算符与表达式_第4页
《C语言程序设计案例式教程》课件 第3章 运算符与表达式_第5页
已阅读5页,还剩88页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章运算符与表达式《C语言程序设计案例式教程(AI助学)》学习目标/Target掌握算术运算符的使用方法,能够使用算术运算符完成表达式的算术运算。

掌握赋值运算符的使用方法,能够使用赋值运算符完成变量的赋值。掌握关系运算符的使用方法,能够使用关系运算符完成表达式的比较运算。掌握条件运算符的使用方法,能够使用条件运算符完成表达式的条件判断。学习目标/Target掌握逻辑运算符的使用方法,能够使用逻辑运算符完成表达式的逻辑运算。

熟悉运算符的优先级,能够说出常见运算符的优先级。了解位运算符的作用,能够说出各位运算符的作用。掌握sizeof运算符的使用方法,能够使用sizeof运算符计算数据和数据类型所占的内存空间大小。章节概述/Summary第2章讲解了C语言的基础知识,但是只凭这些基础知识还无法完成复杂的C语言程序编写。第2章的基本数据类型如同数学中的基本数字,如果要对数字进行运算,还需要掌握运算符与表达式的相关知识。本章将对C语言的运算符、表达式和运算符的优先级进行详细讲解。目录/Contents010203【案例3-1】算术运算【案例3-2】鱼与熊掌不可兼得【案例3-3】优先级目录/Contents040506【案例3-4】交换【案例3-5】有容乃大使用AIGC工具分析表达式计算过程【案例3-1】算术运算符01案例描述算术运算在日常生活学习工作中都经常会用到,本案例要求编写程序实现简单的算术运算,具体要求如下。(1)从键盘输入两个数。(2)分别对这两个数执行加、减、乘、除、取模和自增自减运算,并将结果输出至控制台。知识需求在数学中,进行算术运算需要使用算术运算符,在计算机编程中,要实现算术运算,同样需要使用算术运算符。算术运算完成之后,需要将计算结果赋值给结果变量,赋值需要使用到赋值运算符。

要实现算术运算,需要使用算术运算符。

要实现赋值运算,需要使用赋值运算符。算术运算符赋值运算符掌握运算符与表达式,能够说出常见的运算符类型及其作用。学习目标知识讲解1.运算符与表达式知识讲解1.运算符与表达式运算符是告诉编译器执行特定算术或逻辑操作的符号,它们针对一个或一个以上的操作数进行运算。运算符类型作用算术运算符用于进行四则运算赋值运算符用于将等号右边操作数的值赋给等号左边的操作数关系运算符用于比较表达式,并返回一个真值或假值条件运算符用于进行条件判断逻辑运算符用于根据表达式的值返回真值或假值位运算符用于进行数据的位运算sizeof运算符用于获取数据、数据类型所占内存大小知识讲解1.运算符与表达式运算符是用来操作数据的,因此,参与运算的数据被称为操作数,使用运算符将操作数连接起来的式子称为表达式。(1)表达式主要是由运算符和操作数构成的,不同运算符构成的表达式作用不同。(2)任何一个表达式都有一个值。掌握算术运算符的使用方法,能够使用算术运算符完成表达式的算术运算。学习目标知识讲解2.算术运算符与算术表达式知识讲解C语言中的算术运算符与数学中的算术运算符的作用是一样的,但其组成与数学中的算术运算符稍有不同。2.算术运算符与算术表达式运算符含义范例结果+正号+33-负号b

=4;-b-4+加5+510-减6-

42*乘3*412/除5/51知识讲解2.算术运算符与算术表达式运算符含义范例结果%取模(即求余数)7%52++自增(前)a=2;b=++aa=3;b=3--自减(前)a=2;b=--aa=1;b=1++自增(后)a=2;b=a++a=3;b=2--自减(后)a=2;b=a--a=1;b=2知识讲解2.算术运算符与算术表达式根据运算符操作的数据个数,可以将运算符分为单目运算符、双目运算符等。单目运算符:运算符只操作一个数据,如++、-b。双目运算符:运算符操作数据有两个,如+、%。知识讲解2.算术运算符与算术表达式算术运算示例://假设a=10,b=20,c=3c=a+b //结果为30a++ //结果为11b=--c //结果为2a%b+c-- //结果为13①先计算a%b,结果为10。②再计算10+c,结果为13。③再执行c--,表达式执行完毕,c的值为2。知识讲解2.算术运算符与算术表达式算术运算符在使用时有几点需要注意。算术运算符遵循“先乘除后加减”的原则。1在进行自增(++)和自减(--)运算时,如果运算符放在操作数的前面,则先进行自增或自减运算,再进行其他运算。反之,则先进行其他运算,再进行自增或自减运算。2知识讲解2.算术运算符与算术表达式自增自减运算示例:intnum1=1; intnum2=2; intres=num1+num2++;printf("num2=%d"+num2);printf("res=%d"+res);①计算num1+nun2,变量nun1,num2的值不变。②将第一步运算结果赋值给变量res,此时res值为3。③num2进行自增,其值为3。知识讲解2.算术运算符与算术表达式整数之间相除,结果为整数。如果除法运算中有浮点数,结果为浮点数。3除法运算示例:3500/1000*1000 //结果为3000执行顺序:(1)3500/1000=3(2)3*1000=3000知识讲解2.算术运算符与算术表达式在进行取模运算时,运算结果的正负取决于被模数(%左边的数)的符号,与模数(%右边的数)的符号无关。4取模运算示例:(-5)%3=-25%(-3)=2知识讲解2.算术运算符与算术表达式多学一招标题运算符的结合性:指同一优先级的运算符在表达式中操作的结合方向,即当一个运算对象两侧运算符的优先级别相同时,运算对象与运算符的结合顺序。大多数运算符结合方向:自左向右a–b+c;掌握赋值运算符的使用方法,能够使用赋值运算符完成变量的赋值。学习目标知识讲解3.赋值运算符与赋值表达式知识讲解赋值运算符的作用是将常量、变量或表达式的值赋给变量。3.赋值运算符与赋值表达式运算符含义范例结果=赋值a=3;b=2a=3;b=2+=加等于a=3;b=2;a+=ba=5;b=2-=减等于a=3;b=2;a-=ba=1;b=2*=乘等于a=3;b=2;a*=ba=6;b=2/=除等于a=3;b=2;a/=ba=1;b=2%=模等于a=3;b=2;a%=ba=1;b=2知识讲解3.赋值运算符与赋值表达式在使用赋值运算符时需要注意以下两点。1在C语言中可以通过一条赋值语句对多个变量进行赋值。为多个变量连续赋值示例:intx,y,z;x=y=z=5; 错误示例:intx=y=z=5; //错误为三个变量同时赋值知识讲解3.赋值运算符与赋值表达式在使用赋值运算符时需要注意以下两点。2除“=”以外,其他都是特殊赋值运算符,以“+=”为例。赋值运算示例:intx=2;x+=3;①将x的值和3的执行相加。

②将相加的结果赋值给变量x。巩固前面所学知识,能够利用前面所学知识实现案例3-1。学习目标案例实现1.案例设计在实现案例时,遵循如下步骤。分别使用+、-、*、/、%、++和--运算符实现两个变量的相应算术运算02定义两个变量num1和num2,调用scanf()函数从键盘输入数据为两个变量赋值01案例实现2.完整代码代码实现本案例中可以实现的效果图如下。

案例实现【案例3-2】鱼与熊掌不可兼得02案例描述“鱼,我所欲也;熊掌,亦我所欲也。二者不可得兼,舍鱼而取熊掌者也。”鱼和熊掌不可兼得通常用于比喻事情无法两全其美。在我们的一生当中,常常会遇到两难选择,大而言之,利与义难以兼得,小而言之,享乐与学习难以两全。当我们身处两难抉择时,要学会思考分析,摒弃眼前利益,立足于长远目标。案例描述本案例要求编写一个程序,实现鱼与熊掌的选择,具体要求如下。(1)从键盘输入两个整数。(2)比较两个数的大小,如果第一个数较大,就在控制台输出“您选择了熊掌”;否则,就在控制台输出“您选择了鱼”。知识需求在计算机程序中比较两个数大小,同样要使用比较运算符,比较运算符在C语言中也称为关系运算符。除了比较两个数大小,还要对比较结果进行判断,比较结果的判断需要使用条件运算符。

要实现关系运算,需要使用关系运算符。

要实现条件判断,需要使用条件运算符。关系运算符条件运算符掌握关系运算符的使用方法,能够使用关系运算符完成表达式的比较运算。学习目标知识讲解1.关系运算符与关系表达式知识讲解1.关系运算符与关系表达式关系运算符用于对两个数据进行比较,其结果是逻辑值(真或假)。“真”用非“0”数字来表示,“假”用数字“0”来表示。运算符含义范例结果==等于4==30(假)!=不等于4!=31(真)<小于4<30(假)>大于4>31(真)<=小于等于4<=30(假)>=大于等于4>=31(真)知识讲解1.关系运算符与关系表达式关系运算示例:inta=10,b=20,c=3;a>b //假,值为0a==c //假,值为0b!=c<=a //真,值为1假,值为0假,值为0真,值为1掌握条件运算符的使用方法,能够使用条件运算符完成表达式的条件判断。学习目标知识讲解2.条件运算符与条件表达式知识讲解2.条件运算符与条件表达式在编写代码时往往会用到条件判断,例如判断a>b,当a>b成立时进行某一个操作,当a>b不成立时进行另一个操作。在这种情况下就需要使用条件运算符,C语言提供了条件运算符“?:”。表达式1?表达式2:表达式3;先计算表达式1。若表达式1的值为真(非0),则将表达式2的值作为整个表达式的取值。若表达式1的值为假(0),将表达式3的值作为整个条件表达式的取值。知识讲解2.条件运算符与条件表达式条件运算示例:inta=6,b=3;a>b?a*b:a+b;条件表达式知识讲解2.条件运算符与条件表达式条件运算符需要三个表达式,因此,条件运算符又称为三目运算符。注意条件运算符中的“?”和“:”是成对使用的,不能分开单独使用。条件运算符可以进行嵌套,其结合方向为自右向左。条件运算符的优先级低于关系运算符和算术运算符,但高于赋值运算符。巩固前面所学知识,能够利用前面所学知识实现案例3-2。学习目标案例实现案例实现1.案例设计根据案例需求,案例实现可以遵循以下步骤。010203123定义两个变量num1、num2。调用>运算符比较num1与num2的大小。如果比较结果为真,输出您选择了熊掌,如果比较结果为假,输出您选择了鱼。案例实现2.完整代码本案例中可以实现的效果图如下。代码实现【案例3-3】优先级03案例描述在日常生活、学习和工作中,经常会使用时间管理四象限法则,把所有待做的事情按重要和紧急程度进行排序,优先做重要且紧急的事情,不重要、不紧急的事情在最后做。→有序、合理地安排待做的事情,才能保证学习、生活平稳有序。案例描述在C语言中,各种运算符都有优先级,如果一个表达式中有多个运算符,则表达式会按照运算符的优先级依次进行运算,优先执行优先级高的运算,再执行优先级低的运算。在本案例中,需要计算表达式“2

>

5

&&

2

||

3

<

4

-

!0”的值。知识需求 2>5&&2||3<4-!0关系运算符逻辑运算符算术运算符谁先计算?排优先级掌握逻辑运算符的使用方法,能够使用逻辑运算符完成表达式的逻辑运算。学习目标知识讲解1.逻辑运算符与逻辑表达式知识讲解1.逻辑运算符与逻辑表达式逻辑运算符用于判断复合条件的真假,其结果仍为“真”或“假”。运算符含义范例结果!非!a如果a为假,则!a为真;如果a为真,则!a为假&&与a

&&

b只有a和b都为真时,结果才为真;只要a和b中有一个为假,结果为假||或a

||b只有a和b都为假时,结果才为假;只要a和b中有一个为真,结果为真知识讲解1.逻辑运算符与逻辑表达式逻辑运算示例:inta=10,b=20,c=0;!a a&&b b||c!a&&b!a||b优先级:!>&&>||结果,值为0a和b都为真,结果为真,即值为1结果为真,即为1结果为假,即值为0结果为真,即值为1知识讲解1.逻辑运算符与逻辑表达式逻辑运算符“&&”运算符和“||”运算符的优先级低于关系运算符。如果“&&”运算符左边的值为假,就不再对其右边的表达式进行计算,整个表达式的结果为假。&&运算符的短路||运算符的短路如果“||”运算符左边的值为真,就不再对其右边的表达式进行计算,整个表达式的结果为真。熟悉运算符的优先级,能够说出常见运算符的优先级。学习目标知识讲解2.运算符的优先级知识讲解在对一些比较复杂的表达式进行计算时,要明确表达式中所有运算符参与运算的先后顺序,这种顺序称作运算符的优先级。2.运算符的优先级优先级运算符说明结合性1++、--自增(后)、自减(后)自左向右1()圆括号自左向右1[]数组索引自左向右1.访问结构体或联合体成员对象自左向右1->访问结构体或联合体成员对象指针自左向右2++、--自增(前)、自减(前)自右向左知识讲解2.运算符的优先级优先级运算符说明结合性2+、-正号、负号自右向左2!、~逻辑非、按位取反自右向左2(type)强制类型转换自右向左2*间接取指针指向的值(解引用)自右向左2&取地址自右向左2sizeof获取数据或数据类型所占内存的字节数自右向左知识讲解2.运算符的优先级优先级运算符说明结合性3*、/、%乘、除、取模自左向右4+、-加号、减号自左向右5<<、>>位左移、位右移自左向右6<、<=小于、小于等于自左向右6>、>=大于、大于等于自左向右7==、!=等于、不等于自左向右知识讲解2.运算符的优先级优先级运算符说明结合性8&按位与自左向右9^按位异或自左向右10|按位或自左向右11&&逻辑与自左向右12||逻辑或自左向右13?:条件运算符自右向左14=赋值自右向左知识讲解2.运算符的优先级优先级运算符说明结合性14+=、-=相加后赋值、相减后赋值自右向左14*=、/=、%=相乘后赋值、相除后赋值、取模后赋值自右向左14<<=、>>=位左移后赋值、位右移后赋值自右向左14&=、^=、|=按位与运算后赋值、按位异或运算后赋值、按位或运算后赋值自右向左15,逗号自左向右知识讲解2.运算符的优先级优先级运算示例一:inta=2;intb=a+3*a;printf("%d",b);优先级运算示例二:inta=2;intb=(a+3)*a;printf("%d",b);先乘除后加减先执行小括号中的加法运算,相加结果再也a执行相乘运算知识讲解2.运算符的优先级运算优先级规则较多,但它们大致可以使用如下口诀概括:单算移关与,异或逻条赋。运算符优先级口诀

单算移关单目运算符算术运算符按位左移,按位右移关系运算符与按位与异或逻条按位异或按位或逻辑运算条件运算符赋赋值运算巩固前面所学知识,能够利用前面所学知识实现案例3-3。学习目标案例实现案例实现1.案例设计表达式2>5&&2||3<4-!0的运算顺序如下。1234计算“||”运算符左边的表达式,2>5结果为假,即0。第一次计算完成之后,“||”运算符左边表达式为0&&2,结果为假,即0。第二次计算完成之后,整个表达式为0||3<4-!0。计算“||”运算符右边的表达式,先计算!0,结果为真,即1。案例实现1.案例设计567“||”运算符右边的表达式变为3<4-1,先计算4-1,结果为3。“||”运算符右边的表达式变为3<3,结果为假,即0。整个表达式变为0||0。案例实现2.完整代码本案例中可以实现的效果图如下。代码实现【案例3-4】交换04案例描述假设定义了两个变量:inta和b。从键盘输入两个整数为变量a、b赋值,在不使用第3个变量的情况下,交换变量a和b的值,并将交换后的a、b变量输出到控制台。知识需求在计算机中,所有的数据最终都是以二进制形式存储的,对数据操作其实就是对二进制的0和1符号进行操作。350000010100000011【结论】交换a和b两个变量的值,其实就是操作a和b两个变量二进制位上的0和1。操作二进制位数据,需要用到位运算符。二进制二进制了解位运算符的作用,能够说出各位运算符的作用。学习目标知识讲解位运算符知识讲解位运算符位运算符是针对二进制数的每一位进行运算的符号,它是专门针对数字0和1进行操作的。运算符含义范例结果&

0&000&101&111&00|

0|000|111|111|01知识讲解位运算符运算符含义范例结果~取反~01~10^

异或

0^000^111^101^01<<左移00000010<<20000100010010011<<201001100>>右移01100010>>20001100000101010>>200001010知识讲解位运算符位运算符&位运算符“&”对参与运算的两个二进制数进行与运算,如果两个数的同一二进制位上的值都为1,则该位的运算结果为1,否则为0。00000110&00001011———————00000010示例:对6和11进行与运算,6对应的二进制数为00000110,11对应的二进制数为00001011。运算过程知识讲解位运算符位运算符|位运算符“|”对参与运算的两个二进制数进行或运算,只要两个数的同一二进制位上有一个值为1,该位的运算结果就为1,否则为0。00000110|00001011———————00001111示例:将6和11进行或运算。运算过程知识讲解位运算符位运算符~位运算符“~”只针对一个操作数进行取反操作,如果二进制位上的值是0,则取反值为1;反之则取反值为0。~00000110—————————11111001示例:对6进行取反运算。运算过程知识讲解位运算符位运算符^位运算符“^”对参与运算的两个二进制数进行异或运算,如果两个数的同一二进制位上的值相同,则值为0,否则为1。00000110^00001011———————00001101示例:对6与11进行异或运算。运算过程知识讲解位运算符位运算符<<位运算符“<<”将操作数所有二进制位上的数向左移动。在进行运算时,右边的空位上补0,将左边移走的部分舍去。00001011<<1———————00010110示例:数字11用二进制表示为00001011,对它进行左移运算。运算过程知识讲解位运算符位运算符>>位运算符“>>”将操作数所有二进制位上的数向右移动。在进行运算时,左边的空位上根据原数的符号位补0或者1(原数是负数就补1,原数是正数就补0)。00001011>>1———————00000101示例:数字11用二进制表示为00001011,对它进行右移运算。运算过程巩固前面所学知识,能够利用前面所学知识实现案例3-4。学习目标案例实现案例实现1.案例设计(1)^运算符在执行位运算操作时,相同为0,否则为1。(2)在交换a、b变量的值时,可以执行a^b,这个结果是个中间量。(3)使用a异或a^b结果会得到b,使用b异或这个结果会得到a。案例实现1.案例设计假如a=3,b=5,则它们的交换过程如下所示。a=00000011^b=00000101结果:00000110a=00000011^00000110结果:00000101=500000110^a=00000101结果:00000011=3案例实现2.完整代码本案例中可以实现的效果图如下。代码实现【案例3-5】有容乃大05案例描述古语有“将军额头能跑马,宰相肚子能撑船”,意在表明心胸宽广之人方能成就大事。人之心胸有宽窄,在C语言中,数据类型容量也各不相同,本案例要求计算并输出基本数据类型的“容量”大小。知识需求C语言提供了sizeof运算符,它可以快速计算出不同数据类型、变量、常量所占内存的大小。sizeof数据类型变量常量占内存大小掌握sizeof运算符的使用方法,能够使用sizeof运算符计算数据和数据类型所占的内存空间大小。学习目标知识讲解sizeof运算符sizeof运算符可以获取某一数据或数据类型在内存中所占的字节数。sizeof(数据类型)或sizeof(变量名)知识讲解sizeof运算符sizeof运算符应用示例:sizeof(int); //获取int类型所占内存的字节数sizeof(char*); //获取char类型指针所占内存的字节数inta=10; //定义int类型变量doubled=2.3;//定义double类型变量sizeof(a); //获取变量a所占内存的字节数sizeof(d); //获取变量d所占内

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论