- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4.3运算符和表达式讲述
运算符和表达式
lyh
目标
1. 算术运算
2. 关系运算
3. 逻辑运算
4. 赋值运算
5. 自增自减运算
6. 逗号运算
7. 长度运算
8. 条件运算
9. 位运算
10. 类型转换
算术运算
单目运算符
+(正)、-(负)
双目运算符
+(加)、-(减)、*(乘)、/(除)、%(模)
%运算要求两个操作数是整数
优先级
单目运算符优先级高于双目运算符
结合性
单目运算符服从右结合,单目运算符服从左结合
算术运算举例
整数除法
printf(%d,7/8*8); 输出结果:0
除数为0
printf(%d,1/0); divide or mod by zero
printf(%f,1/0.0); divide or mod by zero 或者 inf
模运算
printf(%d,101%7); 输出结果:3
printf(%d,101%(-7)); 输出结果:3 由实现定义
案例:武功秘籍
小平到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。
他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上 。
小平只想练习该书的第a页到第b页的武功(ab),又不想带着整本书。
请问他至少要撕下多少张纸带走?
武功秘籍算法分析
目标
1. 算术运算
2. 关系运算
3. 逻辑运算
4. 赋值运算
5. 自增自减运算
6. 逗号运算
7. 长度运算
8. 条件运算
9. 位运算
10. 类型转换
关系运算
关系运算符
优先级
运算符
名称
结合性
单双目
6
大于
左结合
双目
6
=
大于等于
左结合
双目
6
等于
左结合
双目
6
=
小于等于
左结合
双目
7
==
等于
左结合
双目
7
!=
不等于
左结合
双目
关系表达式
关系表达式的一般形式
表达式1关系运算符表达式2
举例
for(i=0; i100 ; i++)
if(rooster+ hen+ chick ==100)
while(new_value - old_valuethreshold_value)
案例:谁打破了玻璃
玻璃被小平,侯哥,萝卜,虎三中一个人打破了,下面有三个人说的是真话,一个人说的是假话,判断是谁干的。
小平:不是我做的。
猴哥:是萝卜做的。
萝卜:是虎三做的。
虎三:他在说谎!。
谁打破了玻璃算法分析
step1. 枚举打破玻璃的依次是小平,侯哥,萝卜,虎三
用 A,B,C,D代表小平,侯哥,萝卜,虎三
for(person=A; person = D; person++)
step2. 枚举说真话的逻辑表达式
小平说真话: person!=A
侯哥说真话: person==C
萝卜说真话: person==D
虎三说真话: person!=D
if( (person!=A)
+ (person==C)
+ (person==D)
+ (person!=D) == 3 )
目标
1. 算术运算
2. 关系运算
3. 逻辑运算
4. 赋值运算
5. 自增自减运算
6. 逗号运算
7. 长度运算
8. 条件运算
9. 位运算
10. 类型转换
逻辑运算
逻辑运算符
优先级
运算符
名称
结合性
单双目
2
!
逻辑非
右结合
单目
11
逻辑与
左结合
双目
12
||
逻辑或
左结合
双目
逻辑表达式的一般形式
表达式1双目逻辑运算符表达式2
单目逻辑运算符表达式
逻辑运算的规则
逻辑运算真值表
a
b
ab
a||b
!a
0
0
0
0
1
0
非0
0
1
1
非0
0
0
1
0
非0
非0
1
1
0
a b
当表达式a的为0时,不再执行和判断表达式b的值。
a || b
当表达式a的为1时,不再执行和判断表达式b的值。
逻辑表达式举例
判断year是否是闰年
if((year%4==0 year%100!=0) || year%400==0)
判断直角三角形
if(a0 b0 c0 a*a+b*b==c*c)
判断两个小数是否相等
if(a-b1e-6 a-b-1e-6)
if(!(ab) !(ab))
案例:输出能被11整除且不含有重复数字的所有三位数,并统计其个数。
算法分析
三位数num获取百位,十位,个位
a= num/100; b=num/10%10; c=num%10;
不含重复数字
if(a!=b a!=c b!=c)
能被11整数
if(num%11==0)
源代码
int i,a,b,c,n=0;
for(i=100; i=999; i++) /* 遍历所有三位数 */
{
c=i%10; b=i/10%10; a= i/100; /*分解
文档评论(0)