《chap4(分支语句).ppt》由会员分享,可在线阅读,更多相关《chap4(分支语句).ppt(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4章章 分支结构分支结构条件结束输出开始语句B输入语句A不成立成立条件结束输出开始输入语句A不成立成立1)if 语句的一般形式语句的一般形式 if(表达式表达式)语句;语句;if(表达式表达式)语句语句1;else 语句语句2;其中:其中:“语语句句”和和“语语句句1”可可以以是是用用 括括起起来来的的复复合合语语句。句。“语语句句2”既既可可以以是是用用 括括起起来来的的复复合合语语句句,也也可可以是以是或或形式的形式的if 语句。语句。“语句语句1”后面的后面的“;”是必须的。是必须的。4.1 if 语句语句例例4.1 输入三个实数,按小到大顺序输出。输入三个实数,按小到大顺序输出。m
2、ain()float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(ab)t=a;a=b;b=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);2)if 语句的嵌套形式一语句的嵌套形式一 if(表达式1)else if(表达式2)else if(表达式3)else if(表达式n)else语句体1语句体2语句体3语句体n语句体n+1条件2语句体1语句体2语句体3语句体n语句n+1=0 0条件1条件n条件3=0=0=0=0 0 0 0流程:在在 if 语句中又包含一个或多个
3、语句中又包含一个或多个 if 语句称为语句称为 if 语语句的嵌套。句的嵌套。注:注:从最内层开始从最内层开始,else总是与它前面最近的未曾总是与它前面最近的未曾配对的配对的if 配对,除非用花括号改变其配对关系。配对,除非用花括号改变其配对关系。2)if 语句的嵌套形式二语句的嵌套形式二例例4.2 编程求编程求 的的值值。x的的值值从从键键盘盘输入。输入。main()int x,y;scanf(“%d”,&x);if(xb)max=a;else max=b;则可以用下面的条件运算符处理:则可以用下面的条件运算符处理:max=(ab)?a:b;同样,对如下同样,对如下 if 语句:语句:if
4、(ab)printf(“%d”,a);else printf(“%d”,b);也可用下面的语句代替:也可用下面的语句代替:printf(“%d”,ab?a:b);3)条件运算符条件运算符(p20)条条件件运运算算符符的的优优先先级级高高于于赋赋值值运运算算符符,低低于于关关系系运运算算符和算符和算 术运算符。如:术运算符。如:ab?a:b+1;/相当于相当于ab?a:(b+1)/条件运算符的结合方向为条件运算符的结合方向为“自右至左自右至左”。如:如:ab?a:cd?c:d /*相当于相当于ab?a:(cd?c:d)*/若若a=1,b=2,c=3,d=4,则条件表达式的值为则条件表达式的值为4
5、。仅仅在在if 语语句句内内嵌嵌的的语语句句为为赋赋值值语语句句时时,才才能能用用条条件件表表达式取代该达式取代该if语句。语句。条条件件表表达达式式中中的的操操作作对对象象可可以以是是不不同同的的类类型型,且且其其值值取较高取较高 的类型。如:的类型。如:x?a:b 当当x=0时,条件表达式的值为时,条件表达式的值为bxy?1:1.5 当当x y时,条件表达式的值为时,条件表达式的值为1.5,否,否则为则为1.0。条件运算符条件运算符“?:”是一个三目运算符,必须有三是一个三目运算符,必须有三个操作对象。个操作对象。例例4.3 求一元二次方程的解求一元二次方程的解。#include“math
6、.h”main()float a,b,c,d,x1,x2,p,q;scanf(“%f,%f,%f”,&a,&b,&c);printf(“The equation”);if(fabs(a)=1e-6)printf(“is not quadratic”);getchar();exit(-1);else d=b b-4 a c;if(fabs(d)1e-6)x1=(-b+sqrt(d)/(2 a);x2=(-b-sqrt(d)/(2 a);printf(“has distinct real roots:%8.4f and%8.4f n”,x1,x2);else p=-b/(2 a);q=sqrt(-
7、d)/(2 a);printf(“has complex roots:n”);printf(“%8.4f+%8.4f in”,p,q);printf(“%8.4f-%8.4f in”,p,q);4.2 switch 4.2 switch 语句语句用if或if/else或它们的嵌套也可使程序实现多路分支,但容易出现下面的问题:(1)可读性差(2)破坏结构解决问题的方法解决问题的方法:采用switch语句。switch(变量)case 常量表达式1:语句体1 case 常量表达式2:语句体2 case 常量表达式n:语句体n default :语句体(n+1)一般形式一般形式:(1)根据表达式的取
8、值,判断其与哪一个常量表达式相等。如=表达式i,则则自自语语句句i开始执行开始执行,直到语句直到语句n+1止。止。(2)若与所有常量表达式值不相等,则从default后的语句开始执行。功能功能:注注:default 可有可无。找入口例例:根据成绩等级打印百分数段.switch(grade)case A:printf(85100n);case B:printf(7084n);case C:printf(6069n);case D:printf(60n);default:printf(errorn);#include main()char grade;printf(please input a c
9、haracter:);scanf(%c,&grade);switch(grade)case A:printf(85-100n);case B:printf(70-84n);case C:printf(60-69n);case D:printf(60n);default:printf(Errorn);程序如下:程序如下:4_3_1运行结果为:运行结果为:A 程序运行结果不在预料之中!程序运行结果不在预料之中!产生错误的原因产生错误的原因:没有完全起到分支作用。85-10070-8460-6960Error switch 语句为多路分支选择语句。其一般形式如下:语句为多路分支选择语句。其一般形式如
10、下:switch(表达式表达式)case 常量表达式常量表达式1:语句语句1;break;case 常量表达式常量表达式2:语句语句2;break;case 常量表达式常量表达式n:语句语句n;break;defaul t :语句语句n+1;其中:其中:“表达式表达式”可以是任何类型的表达式。可以是任何类型的表达式。“常量表达式常量表达式”的值必须互不相同。的值必须互不相同。各个各个case出现的先后顺序对执行结果没有影响。出现的先后顺序对执行结果没有影响。执行完一个执行完一个case后面的语句后,后面的语句后,通过通过break语句结束该控制结构。语句结束该控制结构。若若所所有有的的“常常量
11、量表表达达式式”的的值值都都不不与与“表表达达式式”的的值值相相匹匹配配,就就执行执行default 后面的语句。后面的语句。多个多个case可以共用一组执行语句。可以共用一组执行语句。case后面若有多个语句,可以不用后面若有多个语句,可以不用 括起。括起。4.2 switch语句语句例例4.4 某商店按如下折扣优惠购货的顾客某商店按如下折扣优惠购货的顾客(演示演示4_4.c)试编程,输入购货金额试编程,输入购货金额M,求顾客应付金额求顾客应付金额S。4.3 程序范例程序范例见书见书p65p69本章习题本章习题P70 4.1 4.3 4.5 4.7 4.9P73 4.12 4.14 4.16 4.18 4.21P75 4.24 4.25 4.28 4.29