




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
运算符与表达式,讲课顺序: 1 运算符 2 运算符的优先级 3 表达式,2.6.1算术运算符和算术表达式 1算术运算符 +(加法)、(减法)、*(乘法)、/(除法)、%(取余) 注意: (1)a,b两个整数相除,商为整数,小数部分被舍弃。 例如,10/3=3 7/2=3(没有四舍五入) (2) a,b中至少有一个是实型的,则结果为实型。 例如,10.0/3=3.333333。,取余运算 a%b (b不为0),(1) a,b必须是整型数据,否则出错。,例: 6 % 2,5 % 2,,输出结果为:0 1,(2)若a或b有负数,则对a与b的绝对值取余,余数符号与a的符号相同 例: -7%5 余数为 -2 7%-5 余数为 2,考虑:输入一个三位数,输出个位、十位和百位上的数字 例如,输入:135,输出:5 3 1,考虑:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。,运算符的优先级和结合性,* / % + ,低,高,从左向右,2.算术表达式,用算术运算符和括号将常量、变量及函数连起来的式子。,例1 代数式 3x2+x-2,在计算机中,不能直接对代数式进行运算,而要将它转化成相应的算术表达式。,相应的算术表达式为:3*pow(x,2)+x-2 pow(x,2)是求幂的函数,例2 代数式,相应的算术表达式为:a/2-(6*y)/(5*x),2.6.2 赋值运算符及赋值表达式,1.赋值运算符:=,2.赋值表达式:变量=表达式,(1)计算= 右侧表达式的值 (2)将表达式的值赋给左侧的变量 (3)将变量的值作为赋值表达式的值,3.赋值表达式加分号变成赋值语句,例:n=5; n=n+1;,4.赋值运算符的优先级和结合性 优先级较低,从右向左,例:p=q=r=9;,p=q=(r=9),表达式的值为:9,例:n=5 或 sum = a+b,注意: 赋值号的左边不能是常量或表达式。 如5=b,a+b=c,是非法的。,考虑:交换两个变量的值,如果a=5,b=7,将程序处理后a=7,b=5,将程序代码补充: int a,b,t; scanf(“%d%d”,2.6.9逗号运算符和逗号表达式,先计算表达式1,再计算表达式2, 最后计算表达式n的值,逗号表达式 的值为表达式n 的值。,1.逗号运算符:,2.逗号表达式:表达式1,表达式2 ,.,表达式n,例:x=(3+5,4+6),赋值表达式的值为10,例:x=3+5, x+6,逗号表达式的值为14,3.逗号运算符的优先级最低,从左向右,2.6.3 自增(+)、自减(- -)运算符,作用:使 变量 的值增1或减1。运算符:+,- -,形式:+n,- -n, n+, n- -,区别: +n、- -n,先加(减)1,再对n运算 n+、n- -,先对n运算,再将n加1(减)1,则y=7,n=6 先把n的值给表达式y,n再自减1,例 有int n=7,y;,y=+n;,则y=8,n=8,n先自加1再把结果给表达式y,y=n+;,则y=7,n=8,先把n的值给表达式y,n再自加1,y=- -n;,则y=6,n=6,n先自减1再把结果给表达式y,y=n- -;,main() int i, j; i=5; j=5; printf(“%dn”, +i); printf(“%dn”, j+); printf(“%dn”, j); ,结果:6 5 6,说明: 自增、自减运算常用于循环语句(第4章)以及指针变量(第7章)中。它使循环控制变量加(或减)1,或使指针指向下(或上)一个地址。 (2)自增、自减运算符不能用于常量和表达式。 例如,5+、-(a+b)等都是非法的。,2.6.2 - 4.复合运算符,常用复合运算符主要5种:,+= -= *= /= %=,在赋值运算符前加上某些特定的运算符,例:,i+=j+8,i=i+(j+8),x*=j+4,x=x*(j+4),x/=j+4,x=x/(j+4),x-=j+4,x=x-(j+4),x%=j+4,x=x%(j+4),注意:复合运算符相当于赋值号后有一括号,实际上是自右至左进行运算的。,例1 如有int a=9, 计算a+=a+a和a*=2*a值。,例2 如有int a=9, 计算a+=a-=a+a和a+=a*=2*a,a+=a+a,a=a+(a+a),a=9+18,a=27,a*=2*a,a=a*(2*a),a=9*18,a=162,a-=a+a,a=a-(a+a),a=9-18,a=-9,a+=-9,a=a+(-9),a=-18,2.6.10 sizeof( )运算符,用来求变量或字符串所占的字节数。 如int a,b;则sizeof(b)=? 如float a;则sizeof(a)=? sizeof(int)=4(2), sizeof(char)=1, sizeof(double)=8,sizeof(“hello”)=?,2.6.5 关系运算符与关系表达式,比较两个量之间的关系: = = = !=,xy x=y x!=y,比较的结果,8 9 9 8,真 假,1 0,int x=2,y=6; x=(y3) y=(xy),x=1 y=0,例 1 以下程序的结果是,#include main() int x, y,z; x=4+59; printf(“%d,%d,%d”,x,y,z); ,1,1,0,关系运算符优先级低于算术运算符, = = != =,低,高,关系表达式,3x5 x=1时 x=4时,x在3和5之间时,表达式值为1,其他为0,(3x) 5 恒为 1,计算机执行,(3x) 5,(31) 5,0 5,1,(3x) 5,(34) 5,1 5,1,适用于2个量的比较,3个量如何进行比较?,2.6.6 逻辑运算符与逻辑表达式,3x5,x3 并且 x5,3x & x5,2.6.6 逻辑运算符与逻辑表达式,!(非) &(与) |(或),1.运算符:,X Y X & Y X| Y ! X !Y 真 真 1 1 0 0 真 假 0 1 0 1 假 真 0 1 1 0 假 假 0 0 1 1,2.运算法则如下(T为1, F为0),真值表,1 1 1 0 0 1 0 0,非0 非0 非0 0 0 非0 0 0,!2=?,=1,例 已知a=3,b=4,c=5,求以下表达式的值。 1.a+bc&(b=c) 2.a|b+c&b-c 3.!(ab)&!c,4.算术、关系、逻辑运符的优先级,=,+,&,+,-,&,|,( ),!,!,&,( ),逻辑表达式(表达式的值是1和0),用逻辑运算符连接关系表达式的式子称逻辑表达式。,例 用逻辑表达式表达下述数学式,(1) 080 (3)10x 30, 50 x 90,相应的逻辑关系表达:,(1) 0x & x10,(2) x180 (或 !(x=60 & x=80),(3) (x=10 & x=50& x=90),例1 用关系逻辑表式x8且x28,x8&x28,例2 表示字符y是否是大写字母字符,y=A&y=Z,例4 判别某年y是否闰年,闰年的条年为 (1)能被4整除,但不能被100整除 (2)能被4整除,且又能被400整除,(y%4=0&y%100!=0)|(y%4=0&y%400=0 ),例3 判别一个数x既是5的倍数又是9倍数,x%5=0&x%9=0,(y%4=0&y%100!=0)|(y%400=0 ),2.6.7 条件运算符,格式: 表达式1 ?表达式2 :表达式3,1.表达式1的值为真,则条件表达式的值为表达式2的值 2.表达式1的值为假,则条件表达式的值为表达式3的值 3.条件运算符的结合方向为“自右至左” 4.条件运符优先于赋值运算符,低于关系运算符,例:y=69?2*6:18 则y=,P68 从键盘输入整数a与b,如果a2+b2大于100,则输出百位以上的数字,否则输出a与b之和。,#include main() int a,b; printf(“please input a and b”); scanf(“%d%d”, ,2.8 C程序的类型转换,表达式中出现不同类型的数据时,系统将不同类型数据转换成同一种类型,才能进行运算。,1 自动转换,表达式的类型以最高类型为准。,两个float类型运算,先转换成double类型。,例:int a; char y; float b; z=a+y+b的类型为?,(double)a 将变量a的值转换成double型,等价于(double)(a) (int)(x+y) 将x+y的结果转换成int型 (float)5/2 5转换成实型,再除以2(=2.500000),等价于(float)(5)/2 (float)(5/2) 将5整除2的结果转换成实型(2.000000),2.强制类型转换,格式: (类型名)(表达式),习题1:设x=2.5,a=10,y=4.7,求表达式x+a%3*(int)(x+y)%2/4的值,求 (float)(a+b)/2+(int)x%(int)y的值,习题2:设a=2,b=3,x=3.5,y=2.5,考虑:对变量h中的值保留2位小数,并对第三位进行四舍五入,例如h=3.1415926,处理后h=3.14;若h=2.345,处理后h=2.35。,例2.5 鸡兔同笼,已知鸡兔总头数为h(Heads),总腿数为f(Feet),问鸡兔各有多少只?,1 算法分析:,(1)数学模型 设鸡为x只,兔为y只,由题意有: x+y=h (1) 2*x+4*y=f (2),(2)求解方程,找出x,y的具体求解公式:,2.10 顺序结构程序设计举例子,y=(f-2h)/2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年承包土地租赁合同2篇
- 劳务合同范本(官方版)6篇
- 学校股份合作协议8篇
- 2025年新湖北省网络购销合同2篇
- 可降解聚酯材料改性研究-洞察及研究
- 韶关市市区户外广告经营使用权合同3篇
- 中子星物质状态探索-洞察及研究
- 内置类型兼容性优化方法-洞察及研究
- 地质矿产竞赛试题及答案
- 华罗杯竞赛试题及答案
- 广西田林八渡金矿 资源储量核实报告
- 《消化性溃疡诊疗》课件
- CISA国际注册信息系统审计师认证备考试题库(600题)
- iso28000-2022供应链安全管理手册程序文件表单一整套
- DB21∕T 3149-2019 玉米秸秆还田机械化作业技术规程
- 报价函(工程项目招标文件资料)
- 【退休欢送会】课件
- 中小学幼儿园食堂食品安全培训课件
- 电力增容项目施工组织设计
- 重大(2023)版信息科技五年级上册教学设计
- 《语言学概论》教案(完整版)
评论
0/150
提交评论