版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 5 章 选择结构程序设计n 关系运算符和关系表达式关系运算符和关系表达式n 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n If语句语句n条件运算符条件运算符n switch 语句语句0. 本章内容本章内容2 2 1. 关系运算符和关系表达式关系运算符和关系表达式n关系运算关系运算比较运算比较运算 例例 :a3是一比较运算是一比较运算, 当当a=5, a3成立成立,结果称为结果称为“真真”;否则;否则, 当当 a=1,a3不成立不成立,结果称为结果称为“假假”。n关系运算符种类关系运算符种类 = = = !=n关系运算符优先次序关系运算符优先次序n, , =为同一优先级,为同一优先级,=
2、=, !=为同一为同一优先级,优先级, 但前者高于后者。但前者高于后者。n关系运算符的优先级低于算术运算符,高关系运算符的优先级低于算术运算符,高于赋值运算符。于赋值运算符。3 3 1. 关系运算符和关系表达式关系运算符和关系表达式4 4 算术运算符算术运算符赋值运算符赋值运算符关系运算符关系运算符高高低低例例 ca+b c(a+b) ab!=c (ab)!=c a= =bc a= =(bc a=(bc)1. 关系运算符和关系表达式关系运算符和关系表达式n关系表达式关系表达式n用关系运算符将两个表达式用关系运算符将两个表达式(算术、关系、逻算术、关系、逻辑、赋值、字符等表达式辑、赋值、字符等表
3、达式)连接起来的式子。连接起来的式子。例如:ab, a+bb+c, (a=3)(b=5) , a b , (ab)(bb)= =c b+cb f=abc6 6 成立成立 1 不成立不成立 0 则则ab值为值为1, 所以所以d=1. ab为为1, abc为为0,所以所以f=0.【例【例1】当】当a=3, b=2, c=1时判断下面表达式的值时判断下面表达式的值以下选项中,当以下选项中,当x为大于为大于1的奇数时,值为的奇数时,值为0的表达式的表达式:A ) x%2=1 B ) x/2 C ) x%2!=0 D ) x%2=02. 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n逻辑运算符种类逻辑运
4、算符种类n& (与与) (或或) ! (非非)n逻辑运算符意义见真值表逻辑运算符意义见真值表7 7 a b !a a&b a|b 0 0 1 0 0 0 非非0 1 0 1 非非0 0 0 0 1非非0 非非0 0 1 12. 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n逻辑运算符优先次序逻辑运算符优先次序n!(非非)优先于优先于&(与与),&优先于优先于 。即。即: !& n&和和低于所有关系运算,低于所有关系运算,!高于所有算术运算符高于所有算术运算符8 8 算术运算符算术运算符赋值运算符赋值运算符关系运算符关系运算符(高)(高)(低)(低)& 和和 |!(非)!(非)例例: !a&b
5、xy & c (!a)&b) (xy)&c)2. 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n逻辑表达式逻辑表达式n用逻辑运算符将关系表达式、逻辑表达式连接用逻辑运算符将关系表达式、逻辑表达式连接起来的式子起来的式子逻辑表达式。逻辑表达式。n逻辑表达式的结果值规定为逻辑表达式的结果值规定为1或或0. 1 结果为真结果为真 (成立成立) 0 结果为假结果为假 (不成立不成立)例例:a=4 则则 !a 值为值为0.此处只要此处只要a 0,为真为真.则则!a值为值为0. a=4, b=5 a&b为为1 a=4, b=5 a b为为1 a=4, b=5 !a b为为1 4&0 2 为为1.在逻辑运算
6、中在逻辑运算中,非非0值参加逻辑运算时值参加逻辑运算时被看成被看成1处理处理9 9 2. 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式n一个逻辑表达式中的逻辑运算符并不是一定全一个逻辑表达式中的逻辑运算符并不是一定全部执行部执行.(短路运算)(短路运算) a&b&c. 则当则当a=0(假假)时时, b,c不需判断。当不需判断。当a=1,b=0,则不需判则不需判c. a b c. 当当a=1时时,b, c均不必判别。均不必判别。 已定义已定义 char ch$; int i=1, j; 执行执行 j = !ch & i+ 以后,以后,i 的值为的值为_ 。n已知已知x,y,z均为整型变量,且值均
7、为均为整型变量,且值均为1,则执行,则执行语句语句+x|+y&+z;后,表达式后,表达式x+y的值为:的值为: A)1 B)2 C)3 D)41010 13. If 语句语句nIf语句的语句的3种形式种形式n形式形式1:语句格式语句格式 : if(表达式)语句(表达式)语句A; 例:if (xy) printf( %d, x);功能:当表达式值非功能:当表达式值非0时时, 执行语句执行语句A,否则不执行语句否则不执行语句A.其流程图其流程图:1111 表达式表达式语句语句A0 03. If 语句语句【例【例2】计算一个整数的绝对值】计算一个整数的绝对值1212 abs=-aabs=a输出abs
8、输入整数aa 0NY开始结束main() int a,abs; printf(enter one number:); scanf(%d,&a); abs=a; if(a0) printf(%d is plus number!n,a);运行结果:enter one number: 2626 is plus number!输出a输入整数aa 0NY开始结束3. If 语句语句n形式形式2:语句格式语句格式 : if(表达式)语句(表达式)语句A; else 语句语句B; 例:if (xy) printf( %d, x); else printf( %d, y);功能:当表达式值非功能:当表达式值非
9、0时时, 执行语句执行语句A,否则执行语句否则执行语句B.其流程图其流程图:1414 表达式表达式语句语句A0 0语句语句B3. If 语句语句【例【例4】例】例2计算一个整数的绝对值可改写为计算一个整数的绝对值可改写为:1515 main() int a,abs; printf(enter one number:); scanf(%d,&a); if(a0) abs=-a; else abs=a; printf(|%d|=%dn,a,abs);abs=aabs=-a输出abs输入整数aa 1) y=x; else y=0; printf(x=%5.2f,y=%5.2fn,x,y);y=0y=
10、x输出 x,y输入 xx 1NY开始结束101xxxy3. If 语句语句n形式形式3:语句格式语句格式 : if(表达式(表达式1)语句)语句1; else if (表达式(表达式2) 语句语句2; else if (表达式(表达式3) 语句语句3; . else if(表达式表达式n) 语句语句n; else 语句语句n+1; 对于一个问题可能需要从多方面进行判断,有多对于一个问题可能需要从多方面进行判断,有多种可能的情况进行处理种可能的情况进行处理1717 3. If 语句语句其流程图其流程图:1818 e e1 1语句语句1 1e e2 2语句语句2 2e en n语句语句n n语句语
11、句n+1n+1 Y YN NY YY YN NN N3. If 语句语句【例【例6】求分段函数值】求分段函数值:1919 101310111232xxxxxxxxY x1? x1? y=x y=x2 2+2x+1+2x+1 x=10?x=10? y=x y=x y=x y=x3 3-3x-1-3x-1yesyesnonononoyesyes3. If 语句语句程序代码程序代码:2020 #includestdio.hmain() float x,y; printf(enter x: ); scanf(%f,&x); if(x1.0) y=x*x+2*x+1; else if(x300 一等奖学
12、金一等奖学金 5000元元 总分总分=200 二等奖学金二等奖学金 3000元元 总分总分=100 三等奖学金三等奖学金 1000元元 总分总分b) t=a; a=b; b=t; printf (%5.2f, %5.2f,a,b);a,b值互换输出 a,b输入实数a,ba b NY开始结束运行结果是:运行结果是:3.6, 3.2 3.20, 3.603. If 语句语句【例【例9】输入三个数,按小大顺序输出。】输入三个数,按小大顺序输出。2323 main ( ) float a, b, c,t; scanf(%f,%f,%f, &a, &b,&c); if (ab) t=a; a=b; b=
13、t; if (ac) t=a; a=c; c=t; if (bc) t=b; b=c; c=t; printf(%5.2f,%5.2f,%5.2f,a,b,c);运行结果是:运行结果是: 3,7,11.00, 3.00, 7.003. If 语句语句nIf语句嵌套语句嵌套 nif 语句体中又包含一个或多个语句体中又包含一个或多个if语句,称为语句,称为if语语句的嵌套句的嵌套 n嵌套形式嵌套形式:2424 if (e1) if(e2) s1; else s2; else s3;if (e1) if(e2) s1; else s2;if (e1) s1; else if(e2) s2; else
14、 s3;3. If 语句语句2525 nif与与 else的配对的原则的配对的原则从最内层开始,从最内层开始,else总是与它前面最近的同一复合总是与它前面最近的同一复合语句内的不带语句内的不带else 的的if结合结合如果如果if和和 else的数目不统一,可以加明确配对的数目不统一,可以加明确配对关系关系 if ( ) if ( ) 语句语句1 else if ( ) 语句语句2 else 语句语句3必要时加必要时加 . if ( ) if ( ) 语句语句1 else3. If 语句语句2626 if (x) if(y) printf (“ yn”); else if (z) print
15、f(“zn”); else printf (“xn”); if (x) if(y) printf (“ yn”); else if (z) printf(“zn”); else printf(“xn”); 如果要实现例中书写形式的意图,可写成如下形式:如果要实现例中书写形式的意图,可写成如下形式:3. If 语句语句2727 【例【例10】阅读程序回答问题】阅读程序回答问题 #include main() int a,b,m,n; scanf(“%d%d”,&a,&b); m=n=1; if(a0) m=m+n; if(ab) n=2*m; else if(a=b) n=5; else n=m
16、+n; printf(“m=%d n=%dn”,m,n); 1)当输入为当输入为-1 2,程序的程序的 运行结果为多少运行结果为多少? m=1 n=22)当输入为当输入为1 0,程序的程序的 运行结果为多少运行结果为多少? m=2 n=33)为了输出为了输出n=4,变量变量a和和b应具应具 备的条件是什么备的条件是什么?0a= 90) printf(“A”); if (ave = 80 & ave = 70 & ave = 60 & ave = 69) printf(“D”); if (ave = 90) printf(“A”); else if (ave = 80) printf(“B”);
17、 else if (ave = 70) printf(“C”); else if (ave = 60) printf(“D”); else printf(“E”); 3. If 语句语句3131 习题习题 P111 ( 5.4 5.5 5.6 )学生练习学生练习4. 条件运算符和条件表达式条件运算符和条件表达式n判断条件不论是判断条件不论是“ 真真”是是“ 假假”, 均给均给同一变量赋值时,简化语句书写同一变量赋值时,简化语句书写n条件运算符为条件运算符为 ? : 三目运算符三目运算符 n形式形式: 表达式表达式1 ? 表达式表达式2 : 表达式表达式3n功能功能: n先判表达式先判表达式1,
18、 若非若非0,则条件表达式值为表达则条件表达式值为表达式式2的值的值,否则为表达式否则为表达式3的值。的值。n例例:max=ab? a:b; 当当ab max a 否则否则maxb 3232 4. 条件运算符和条件表达式条件运算符和条件表达式n条件运算符优先次序条件运算符优先次序n条件运算符优先于赋值运算符条件运算符优先于赋值运算符n条件运算符低于关系运算符和算术运算符条件运算符低于关系运算符和算术运算符n条件运算符结合性为从右至左条件运算符结合性为从右至左n注意注意n条件表达式不能取代一般的条件表达式不能取代一般的if语句语句,只有当只有当if 的两个分支为给同一变量赋值时才可替代的两个分支
19、为给同一变量赋值时才可替代ifn表达式表达式1、表达式、表达式2、表达式、表达式3可类型不同可类型不同n已知已知 char ch=C;则以下表达式的值是;则以下表达式的值是ch=(ch=A & ch=A & ch=A & ch=ZNY开始结束运行结果是:运行结果是:A a5. switch 语句语句n 语句格式语句格式n 功能功能n根据表达式的取值根据表达式的取值, 判断其与哪一个常量表达式相等。判断其与哪一个常量表达式相等。如如=表达式表达式i,则自语句则自语句i开始执行开始执行,直到语句直到语句n+1止。止。n若与所有常量表达式值不相等若与所有常量表达式值不相等,则从则从default后的
20、语句开后的语句开始执行。始执行。 3535 switch switch (表达式(表达式e e) case case 常量表达式常量表达式a1a1: 语句序列语句序列S1S1; break break; case case 常量表达式常量表达式a2a2: 语句序列语句序列S2S2; break break; case case 常量表达式常量表达式anan: 语句序列语句序列SnSn; break break; default default: 语句语句S; S; 5. switch 语句语句3636 例例:根据成绩等级打印百分数段根据成绩等级打印百分数段. switch (grade) ca
21、se A: printf (85100n); case B: printf (7084n); case C: printf (6069n); case D: printf (60n); break; case D: printf(60n); break; 5. switch 语句语句n 什么时候用一条什么时候用一条switch语句比用多条语句比用多条if语句更好?语句更好?n switch语句与语句与if语句不同语句不同 switch语句只能对等式进行测试语句只能对等式进行测试 if 语句可以计算关系表达式或逻辑表达式等语句可以计算关系表达式或逻辑表达式等n如果有两条以上基于同一个整型变量的条
22、件表达如果有两条以上基于同一个整型变量的条件表达式,那么最好使用式,那么最好使用switch语句语句3838 if(x=1) printf(”x is equal to one.n”); elseif(x=2) printf(”x is equal to two.n”); elseif(x=3) printf(”x is equal to three.n”); else printf(”x is not equal to one,two,three.n”);5. switch 语句语句3939 不如使用如下switch代码,它更易于阅读和维护: switch(x) case 1:printf(
23、”x is equal to one.n”); break; case 2:printf(”x is equal to two.n”); break; case 3:printf(”x is equal to three.n”); break; default:printf(”x is not equal to one,two,three.n”); 5. switch 语句语句n switch嵌套语句嵌套语句n在在switch语句中,语句中,每个每个case后面可后面可以出现另一个以出现另一个switch语句,从语句,从而形成嵌套而形成嵌套switch语句语句4040 阅读下面程序:计算结果阅
24、读下面程序:计算结果 #include #include mainmain()() int a=2 int a=2,b=7b=7,c=5c=5; switch switch(a0a0) case 1:switch case 1:switch(b0b0) case 1case 1:printf(printf(“ ”);break);break; case 2 case 2:printf(printf(“! !”);break);break; case 2:switch case 2:switch(c=5c=5) case 0case 0:printf(printf(“* *”);break; )
25、;break; case 1 case 1:printf(printf(“# #”);break; );break; default default:printf(printf(“$ $”);break; );break; default default:printfprintf(“& &”); ; printf printf(“nn”); ; 运行结果是:运行结果是:#&5. switch 语句语句【例【例13】编写一个程序,完成两个数的四则运算】编写一个程序,完成两个数的四则运算(数与运算符由键盘给入)(数与运算符由键盘给入) 分析分析调用输入函数输入操作数和运算符调用输入函数输入操作数和
26、运算符四则运算规则四则运算规则4141 5. switch 语句语句4242 #includemain() float x,y; char op; printf(ntype in your expression:); scanf(%f%c%f,&x,&op,&y); switch(op) case +: printf(%6.2f%c%6.2f=%6.2fn,x,op,y,x+y); break; case -: printf(%6.2f%c%6.2f=%6.2fn,x,op,y,x-y); break; case *: printf(%6.2f%c%6.2f=%6.2fn,x,op,y,x*y
27、); break; case /: if(y=0) printf(error!n); else printf(%6.2f%c%6.2f=%6.2fn,x,op,y,x/y);break; default: printf(espression error!n); 4343 小测试小测试 n1:下述程序段中,无语法错误的是:下述程序段中,无语法错误的是A)int a=2,b=0; switch(a) case b+1:a-;break; case b=5: a+=10;break; B)char x=A,y=1; switch(x) case A:y+;break; case -1: y=5; C
28、)int a,b=5; switch(b) case b0:a=1;break; case b=0: a=0;break; D)#define M 10 int a=1,b=0; switch(a) case M:b+=5;break; case 10: b=1;break; B4444 小测试小测试2.2.以下程序的运行结果是:以下程序的运行结果是: main( ) int x1=3, x2=0, x3=0; if (x1=x2+x3) printf(* * * *); else printf(# # # #); A.输出:输出:* * * * B.输出:输出:# # # # C.存在语法错
29、误存在语法错误 D.无输出结果无输出结果3.下面程序段所表示的数学下面程序段所表示的数学 函数关系是:函数关系是: x=-1; if (a!=0) if (a0) x=1; else x=0; -1 (a0) 1 (a0) 0 (a0) 0 (a0) -1 (a0) 0 (a0)BC4545 4.为了避免在嵌套的条件语句为了避免在嵌套的条件语句if-else中产生二义性,中产生二义性,C语言规定:语言规定:else总总是与是与 A.缩排位置相同的缩排位置相同的if配对配对 B.其之前最近且不带其之前最近且不带else的的if配对配对 C.其之前最近的其之前最近的if配对配对 D.第一个第一个i
30、f配对配对 5.若执行以下程序时从键盘上输入若执行以下程序时从键盘上输入3 4,则输出结果是,则输出结果是 main( ) int a,b,s; scanf(%d%d,&a,&b); s=a; if (ab) s=b; s*=s; printf(%dn,s); A. 14 B. 16 C. 18 D. 20 BB小测试小测试6.6.输入三个数,找出并打印最小数输入三个数,找出并打印最小数 7.编写一个程序根据用户输入的三角形的三边判定三角形的编写一个程序根据用户输入的三角形的三边判定三角形的类型并求其面积类型并求其面积 小测试小测试4646 n 六题算法分析六题算法分析n设设3个数分别是个数分别是a、b和和cn将将a、b中较小者赋值给中较小者赋值给minn用用min与与c进行比较,取其中较小者重新赋值给进行比较,取其中较小者重新赋值给minn将将min作为最后结果输出作为最后结果输出main() main() int a,b,c int a,b,c; printf printf(“input
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郑州地铁2025年小型机维保服务合同范本版本范文解析
- 某网球俱乐部财务审计管理方案
- 手术室护理程序方案
- 2025年河南省体育彩票管理中心公开招聘合同制聘用人员50人考试笔试模拟试题及答案解析
- 2025山东现代农业发展投资有限责任公司招聘14人笔试考试参考题库及答案解析
- 水力学航道疏浚方案设计
- 焊接设备维修方案
- 2025重庆经济技术开发区管理委员会办公室公益岗招聘4人考试笔试参考题库附答案解析
- 水力学水库测量方案
- 2025云南昆明市石林彝族自治县第十期城镇公益性岗位招聘6人笔试考试备考试题及答案解析
- 高原蔬菜种植培训课件
- 2024年~2025年历年林草局面试真题及答案解析
- 机械装备制造课件
- 房地产开发项目质量、安全、进度和文明施工保证措施
- 跨境民族文化传播机制-洞察及研究
- 2025年青海西宁事业单位招聘考试卫生类医学检验专业知识试卷
- 新版2025年GCP临床试验伦理规范考试题及答案
- 城市轨道交通智能调度系统研究报告
- 2025年贵州综合评标专家库评标专家考试经典试题及答案一
- 沥青混凝土供货方案及保障措施
- 内蒙古:行业用水定额(DB15-T 385-2020)
评论
0/150
提交评论