4 分支结构程序设计.ppt_第1页
4 分支结构程序设计.ppt_第2页
4 分支结构程序设计.ppt_第3页
4 分支结构程序设计.ppt_第4页
4 分支结构程序设计.ppt_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、第四章 分支结构程序设计,回首坦途的路,例3:求方程 ax2 + bx + c = 0 的根。,求解过程: ax2 + bx + c = 0,x1 = (-b + dt ) / 2a x2 = (-b - dt ) / 2a,说明: 1、C中不能用上下标 2、求平方根需要使用数学函数库,问题分析: 设 b 24ac 0 , 输入 a , b, c 的值, 输出方程的根。,#include #include void main( ) float a, b, c, x1, x2, dt; printf (输入 a, b, c: ) ; scanf (%f %f %f, ,程序结构: 选择结构程序设

2、计(分支),条件语句( if ) 开关语句 ( switch ),if 语 句: 用 if 语句可以构成分支结构。 作用:判断所给定的条件满足与否,根据结果决定程序的流向。,一、if 语句的三种形式 . 简单分支(单分支) 格式 : if (表达式) 语句 ; 例1: if(xy) y=x;,工作过程图 :,main() int a,b,max; printf(n input two numbers: ); scanf(%d%d, ,例2:,格式:if (表达式) 语句; else 语句 2;,2. 双分支选择结构的一种最常用形式,工作过程图 :,例2: if(xy) printf(“ %d

3、”, x); else printf(“ %d ”, y);,main() int a, b; printf(input two numbers: ); scanf(%d%d, ,例2:,if (表达式) 语句1 else 语句2,if (表达式) 语句1,if (表达式) 语句 1; else if(表达式2) 语句 2; else if(表达式3) 语句 3; else if(表达式m) 语句 m; else 语句 n ;,3.多分支if的一种扩展形式,工作过程图:,例: if (num500) cost=.15; else if (num300) cost=.10; else if (n

4、um100) cost=.075; else if (num50) cost=.05; else cost=0;,#include stdio.h main() char c; printf(input a character: ); c=getchar(); if(c=0 ,例:,(1)三种形式的if语句中,if关键词后面均为表达式。通常为关系表达式或逻辑表达式。也可以是其它表达式,如赋值表达式,甚至也可以是一个变量。 例:if (a=5) 语句;或 if (b) 语句;均为合法用法,(2)if 后的条件判断表达式一定用圆括号括起来。,使用if语句时注意:,(3)三种形式中所用的为单个语句表

5、示, 具体实际若为一组语句一定用 括起来,组成语句块。但需注意 后不可用 “;”号。,例如:if (ab) a+; b+; else a=0;b=10;,复合语句 /语句块(Block),括住的若干条语句构成一个语句块 语句块内可以定义变量 变量必须在语句块的开头定义 变量仅在定义它的语句块内有效 同一个语句块内的变量不可同名,不同语句块可以同名 各司其职、下层优先 尽量不要在下层语句块内定义变量,也尽量不要定义同名变量,二、if 语句的嵌套:,一般形式: if (表达式1) else,if (表达式2) 语句1 内嵌 else 语句 2 if 语句,if 语句中又含有if 语句的形式称为 i

6、f 语句的嵌套。,if (表达式3) 语句3 内嵌 else 语句4 if 语句,说明: 每一个 if 与 else 相匹配,也可能不与 else 相匹配;但是每一个else 必须与一个 if 相匹配。 Else与if 匹配的原则是: 最后的else总是与它上面最近的if 配对。 多分支及分支嵌套应采用缩排方式,以增加程序的可读性。,if else 配对原则:,缺省 时,else总是和它上面离它最近的未配对的if配对,if (n6) if (nn6n”); else printf(“n=6n”);,分析如下程序段:,4.4程序举例,#include #include main() float

7、a,b,c,s,area; printf(“please input a,b,c:”); scanf(%f,%f,%f, ,例1: 输入三角形边长,判断能否构成三角形,若能求面积,否则 输出错误信息。,运行结果1: please input a,b,c:3,4,6 area= 5.33,运行结果2: please input a,b,c: 3,1,7 input errer,Switch 语句(开关语句),多路选择 switch语句是多分支选择语句,可用嵌套的if语句处理,但降低了可读性。 当分支数大于三种时,常采用开关语句简化程序设计。,一般形式:,switch ( 表达式) case 常量

8、表达式1: 语句组 1; break; case 常量表达式2: 语句组 2; break; . case 常量表达式n: 语句组 n; break; default: 语句组 ; break; ,执行过程:,例 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); ,运行结果:score为5时,输出: Very good! Good! Pass!

9、 Fail! data error!,使用switch语句需注意:,1、csae后面的各常量表达式的值不能相同。一般为整型、字符型或枚举型。每个case后面的常量表达式类型应与switch后括号内表达式类型一致 2、程序执行到switch语句时,先计算表达式的值,再自上而下寻找与该值匹配的case常量,找到后则执行此case后的语句。 对后续case直接执行,不再进行判断,直到遇break语句或 右花括号为止。 3、若 case后面的语句省略不写,则表示它与后续case执行相同的语句。,4、 csae后面的 常量表达式不能用一个区间表示,也不能出现 任何运算符。 例: csae 90=scor

10、e=100:语句; case 90100:语句;,5、case后面可以有多个语句 。 6、各case和default子句的先后顺序可随意。从执行效率的角度出发,通常将发生频率教高的情况放在前面。 default子句可以省略 7、常量表达式仅起一个语句标号作用。 8、switch语句和 break语句配合才构成真正意义上的分支。 break语句的作用是跳出switch结构。,switch和else-if的比较,else-if比switch的条件控制更强大一些 else-if可以依照各种逻辑运算的结果进行流程控制 switch只能进行=判断,并且只能是整数判断 switch比else-if更清晰

11、两者都要尽量避免用得过多、过长,尤其不要嵌套得太多 它们大大增加程序的分支,使逻辑关系显得混乱,不易维护,易出错,总结 :选择结构,二分支选择结构,多分支选择结构,【例】求一元二次方程ax2+bx+c=0的根。,思路:一元二次方程的根取决于系数a,b,c 求根公式:,判别式d = b2- 4ac 当 d = 0时,方程有两个相等的实根: x1=x2=-b/(2*a) 当d 0时,方程有两个不相等的实根: x1=(-b+sqrt(d)/(2*a) x2=(-b-sqrt(d)/(2*a) 当d 0时,方程有两个虚根: x1=jp+ipi x2=jp-ipi,实部 jp=-b/(2*a) 虚部 ip=sqrt(-d)/(2*a),#include math.h main( ) float a,b,c,d,x1,x2,lp,ip; scanf(%f%f%f, ,else if (d1e-6) /* 不相等的实根 */ x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(has two real roots:n

温馨提示

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

评论

0/150

提交评论