《c语言程序设计》第3章-算术运算表达式课件_第1页
《c语言程序设计》第3章-算术运算表达式课件_第2页
《c语言程序设计》第3章-算术运算表达式课件_第3页
《c语言程序设计》第3章-算术运算表达式课件_第4页
《c语言程序设计》第3章-算术运算表达式课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

第3章简单的算术运算和表达式主讲:李小霞

lxx1818@126.com

第3章简单的算术运算主讲:李小霞

lxx1818@126.C基本类型整型字符型实型(浮点型)floatdoubleshortintlongshortlongunsignedintunsignedshortunsignedlongcharunsignedcharlongdoubleC基本类型整型字符型实型(浮点型)floatdoublesh本章学习内容算术运算符增1和减1运算符表达式与赋值中的自动类型转换强制类型转换运算符常用的标准数学函数本章学习内容算术运算符运算符(Operator)详见附录C常见的运算符算术运算符赋值运算符类型强转关系运算符逻辑运算符增1和减1位运算符运算符(Operator)详见附录C3.1.1算术运算符和表达式Addition(+)Subtraction(-)Multiplication(*)Division(/)Modulus(%)ArithmeticOperators3.1C运算符和表达式3.1.1算术运算符和表达式Addition(+)Subt除法(Division)Example:W/Z浮点数除法W

和Z

中至少有一个浮点数整数除法W和Z

均为整数截断结果中的小数部分11/5=211.0/5=2.2除法(Division)Example:W/Z浮点数除法求余(Modulus)说明:

参加运算的操作数必须是整数,即该运 算不能应用于float和double。注意!例:11%5=1-11%5=-1

11%-5=111.0%5=?求余(Modulus)说明:注意!例:11%5=1

优先级(OrderofPrecedence)

High: */%

Low: +-不同优先级时的运算顺序:——从高到低相同优先级时的运算顺序:——算术运算符为左结合(从左到右)算术表达式

(ArithmeticExpression)优先级(OrderofPrecedence)算术表达式【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和关键是如何分离个位、十位、百位数字?153/100=1153-1*100=5353/10=5153%10

=3【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和思考与练习3-1:修改上面程序,对任意一个四位数求其个十百千位上的数字。【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和关系运算符与逻辑运算符关系运算符 > >= < <= == !=

例: i=5; lim=6; i<lim-1

说明:关系运算符的优先级比算数运算符低关系运算符与逻辑运算符关系运算符关系运算符与逻辑运算符逻辑运算符

&& || !

例:判断闰年

if((year%4==0&&year%100!=0)||year%400==0) printf(“%disaleapyear\n”,year); else printf(“%disnotaleapyear\n”,year);关系运算符与逻辑运算符逻辑运算符思考与练习3-2:运行下面程序,并思考C语言中何值为“真”,何值为“假”,以及逻辑非“!”的用法。#include<STDIO.H>voidmain(){ intvalid=0; scanf("%d",&valid); if(!valid) { printf("true\n"); printf("valid=%d\n",!valid); } else { printf("false\n"); printf("valid=%d\n",!valid); } return;}思考与练习3-2:赋值语句

(AssignmentStatement)三种赋值形式:Simple——简单赋值Multiple——多重赋值Shorthand——简写的复合赋值赋值语句

(AssignmentStatement)三种赋变量的赋值简单赋值(SimpleAssignment):

变量=

表达式;

例:i=1; p=5*i;变量的赋值简单赋值(SimpleAssignment):变量的赋值多重赋值(MultipleAssignment):变量1=

变量2=

表达式; 例:i=j=0;变量的赋值多重赋值(MultipleAssignment)Syntax:

变量x=变量x

运算符op

表达式;

变量x

运算符op=表达式;

3.1.2复合的赋值运算符

(CombinedAssignmentOperators)若赋值号左边的变量重复出现在右边,则可进行缩写。Syntax:3.1.2复合的赋值运算符

(CombiExample:num=num+5; num+=5;3.1.2复合的赋值运算符OperationExamplesofexpressionDescription+=num+=5;num=num+5;-=num-=5;num=num–5;*=num*=5;num=num*5;/=num/=5;num=num/5;%=num%=5;num=num%5;Example:3.1.2复合的赋值运算符Operation已知inta=3;执行a+=a-=a*a后,变量a的值?a+=a-=a*aa+=a-=9a+=-6

a=-123-6-12执行a+=a-=a*=a后,变量a的值?a+=a-=a*=aa+=a-=9a+=0

a=03900已知inta=3;3-6-12执行a+=a-3.1.3自增1和自减1运算符

(IncrementandDecrement)

n++,n--,++n,--n++让参与运算的变量加1,--让参与运算的变量减1作为后缀(postfix)运算符时,先使用n的值,然后再将n的值加/减1设n的值为5,则m=n++;执行后的结果m是多少?m=n;n++;3.1.3自增1和自减1运算符

(Incrementand3.1.3增1和减1运算符

(IncrementandDecrement)

n++,n--,++n,--n++让参与运算的变量加1,--让参与运算的变量减1作为后缀(postfix)运算符时,先取n的值,然后加/减1作为前缀(prefix)运算符时,先加/减1,然后取n的值m=++n;n++;

m=n;3.1.3增1和减1运算符

(IncrementandD表达式与赋值中的自动类型转换相同类型数据的运算结果,还是该类型不同类型数据的运算结果,是两种类型中取值范围大的那种long

double>double>float>long>int>short>chardoublefloatlongunsignedintchar,short低高表达式与赋值中的自动类型转换相同类型数据的运算结果,还是该类表达式与赋值中的自动类型转换【例3.6】下面程序演示了赋值中的类型转换表达式与赋值中的自动类型转换【例3.6】下面程序演示了赋值doublefloatlongunsignedintchar,short低高思考与练习:

为什么不同类型数据的运算结果,是两种类型中取值范围大的那种?doublefloatlongunsignedintchar思考与练习3-3:运行下面程序,观察编译时是否会出现警告,若有警告,请思考问题出在哪里,并解决问题。#include<STDIO.H>voidmain(){ inta=3; floatb=4.56; a=b; printf("a=%d\n",a); return;}思考与练习3-3:Example:

intx=10; floaty; y=(float)x;

(float)10

10.000000x10y??10.0000003.4自动类型转换与强制类型转换运算符强转(Casting)可以消除从大到小的警告

通过下面方式把表达式的值转为任意类型

(类型)表达式不改变xExample:(float)1010.000000x1Example:

inttotal,number; floataverage; … average=total/number;

15/2

7total15number2average??7.000000两个整数运算的结果还是整数,不是浮点数3.4自动类型转换与强制类型转换运算符Example:15/27total15numberExample:

inttotal,number; floataverage; … average=(float)total/number;

15.000000/2

7.500000total15number2average??7.5000003.4自动类型转换与强制类型转换运算符Example:15.000000/27.50000思考与练习3-4:

分析下面程序的输出结果,运行程序并将运行结果与分析结果相对照。思考与练习3-4:

分析下面程序的输出结果,运行程序并将运行常用的标准数学函数p40表3-5常用的标准数学函数p40表3-5思考与练习3-5:

在VisualC++6.0的安装路径下查找文件math.h,找到后打开该文件,请认真查看math.h文件中有哪些内容,找到表3-5中的数学函数声明部分。思考与练习3-5:【例3.8】计算三角形面积area=sqrt(s*(s-a)*(s-b)*(s-c))area=sqrt(s(s-a)(s-b)(s-c))s=0.5*(a+b+c)s=1.0/2*(a+b+c)s=(a+b+c)/2.0s=(float)(a+b+c)/2s=1/2*(a+b+c)s=(float)((a+b+c)/2)

注意!【例3.8】计算三角形面积area=sqrt(s*【例3.8】计算三角形面积Inputa,b,c:3,4,5↙area=6.000000【例3.8】计算三角形面积Inputa,b,c:3,4,课后习题:3.1—3.4要求:3.2—3.4作业要有流程图和程序,另需上机实验。课后习题:3.1—3.4QuestionsandanswersQuestionsandanswers第3章简单的算术运算和表达式主讲:李小霞

lxx1818@126.com

第3章简单的算术运算主讲:李小霞

lxx1818@126.C基本类型整型字符型实型(浮点型)floatdoubleshortintlongshortlongunsignedintunsignedshortunsignedlongcharunsignedcharlongdoubleC基本类型整型字符型实型(浮点型)floatdoublesh本章学习内容算术运算符增1和减1运算符表达式与赋值中的自动类型转换强制类型转换运算符常用的标准数学函数本章学习内容算术运算符运算符(Operator)详见附录C常见的运算符算术运算符赋值运算符类型强转关系运算符逻辑运算符增1和减1位运算符运算符(Operator)详见附录C3.1.1算术运算符和表达式Addition(+)Subtraction(-)Multiplication(*)Division(/)Modulus(%)ArithmeticOperators3.1C运算符和表达式3.1.1算术运算符和表达式Addition(+)Subt除法(Division)Example:W/Z浮点数除法W

和Z

中至少有一个浮点数整数除法W和Z

均为整数截断结果中的小数部分11/5=211.0/5=2.2除法(Division)Example:W/Z浮点数除法求余(Modulus)说明:

参加运算的操作数必须是整数,即该运 算不能应用于float和double。注意!例:11%5=1-11%5=-1

11%-5=111.0%5=?求余(Modulus)说明:注意!例:11%5=1

优先级(OrderofPrecedence)

High: */%

Low: +-不同优先级时的运算顺序:——从高到低相同优先级时的运算顺序:——算术运算符为左结合(从左到右)算术表达式

(ArithmeticExpression)优先级(OrderofPrecedence)算术表达式【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和关键是如何分离个位、十位、百位数字?153/100=1153-1*100=5353/10=5153%10

=3【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和思考与练习3-1:修改上面程序,对任意一个四位数求其个十百千位上的数字。【例3.1】计算并输出一个三位整数的个位、十位和百位数字之和关系运算符与逻辑运算符关系运算符 > >= < <= == !=

例: i=5; lim=6; i<lim-1

说明:关系运算符的优先级比算数运算符低关系运算符与逻辑运算符关系运算符关系运算符与逻辑运算符逻辑运算符

&& || !

例:判断闰年

if((year%4==0&&year%100!=0)||year%400==0) printf(“%disaleapyear\n”,year); else printf(“%disnotaleapyear\n”,year);关系运算符与逻辑运算符逻辑运算符思考与练习3-2:运行下面程序,并思考C语言中何值为“真”,何值为“假”,以及逻辑非“!”的用法。#include<STDIO.H>voidmain(){ intvalid=0; scanf("%d",&valid); if(!valid) { printf("true\n"); printf("valid=%d\n",!valid); } else { printf("false\n"); printf("valid=%d\n",!valid); } return;}思考与练习3-2:赋值语句

(AssignmentStatement)三种赋值形式:Simple——简单赋值Multiple——多重赋值Shorthand——简写的复合赋值赋值语句

(AssignmentStatement)三种赋变量的赋值简单赋值(SimpleAssignment):

变量=

表达式;

例:i=1; p=5*i;变量的赋值简单赋值(SimpleAssignment):变量的赋值多重赋值(MultipleAssignment):变量1=

变量2=

表达式; 例:i=j=0;变量的赋值多重赋值(MultipleAssignment)Syntax:

变量x=变量x

运算符op

表达式;

变量x

运算符op=表达式;

3.1.2复合的赋值运算符

(CombinedAssignmentOperators)若赋值号左边的变量重复出现在右边,则可进行缩写。Syntax:3.1.2复合的赋值运算符

(CombiExample:num=num+5; num+=5;3.1.2复合的赋值运算符OperationExamplesofexpressionDescription+=num+=5;num=num+5;-=num-=5;num=num–5;*=num*=5;num=num*5;/=num/=5;num=num/5;%=num%=5;num=num%5;Example:3.1.2复合的赋值运算符Operation已知inta=3;执行a+=a-=a*a后,变量a的值?a+=a-=a*aa+=a-=9a+=-6

a=-123-6-12执行a+=a-=a*=a后,变量a的值?a+=a-=a*=aa+=a-=9a+=0

a=03900已知inta=3;3-6-12执行a+=a-3.1.3自增1和自减1运算符

(IncrementandDecrement)

n++,n--,++n,--n++让参与运算的变量加1,--让参与运算的变量减1作为后缀(postfix)运算符时,先使用n的值,然后再将n的值加/减1设n的值为5,则m=n++;执行后的结果m是多少?m=n;n++;3.1.3自增1和自减1运算符

(Incrementand3.1.3增1和减1运算符

(IncrementandDecrement)

n++,n--,++n,--n++让参与运算的变量加1,--让参与运算的变量减1作为后缀(postfix)运算符时,先取n的值,然后加/减1作为前缀(prefix)运算符时,先加/减1,然后取n的值m=++n;n++;

m=n;3.1.3增1和减1运算符

(IncrementandD表达式与赋值中的自动类型转换相同类型数据的运算结果,还是该类型不同类型数据的运算结果,是两种类型中取值范围大的那种long

double>double>float>long>int>short>chardoublefloatlongunsignedintchar,short低高表达式与赋值中的自动类型转换相同类型数据的运算结果,还是该类表达式与赋值中的自动类型转换【例3.6】下面程序演示了赋值中的类型转换表达式与赋值中的自动类型转换【例3.6】下面程序演示了赋值doublefloatlongunsignedintchar,short低高思考与练习:

为什么不同类型数据的运算结果,是两种类型中取值范围大的那种?doublefloatlongunsignedintchar思考与练习3-3:运行下面程序,观察编译时是否会出现警告,若有警告,请思考问题出在哪里,并解决问题。#include<STDIO.H>voidmain(){ inta=3; floatb=4.56; a=b; printf("a=%d\n",a); return;}思考与练习3-3:Example:

intx=10; floaty; y=(float)x;

(float)10

10.000000x10y??10.0000003.4自动类型转换与强制类型转换运算符强转(Casting)可以消除从大到小的警告

通过下面方式把表达式的值转为任意类型

(类型)表达式不改变xExample:(float)1010.000000x1Example:

inttotal

温馨提示

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

评论

0/150

提交评论