C04分支结构.ppt_第1页
C04分支结构.ppt_第2页
C04分支结构.ppt_第3页
C04分支结构.ppt_第4页
C04分支结构.ppt_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言与程序设计,江汉大学数学与计算机科学学院 韩 海,分支结构,2,什么是逻辑型数据 如何表示某一判断是否正确(不存在“半对”) 自然语言用“是”和“否”、“对”和“错”、“Yes”和“No”等 PASCAL语言用“TRUE”和“FALSE” 标准C语言用整数1和0,没有设置专用的“逻辑类型” VC有类型bool和两个常量true和false,可以直接使用 大小比较 比较是一种特殊的计算:a b 比较的结果是“对”或“错”,即逻辑型数据 计算机可以存放某次比较的结果:x = ( a b ) ; 把“ab”的比较结果送到x之后,改变a、b的值不影响x的值,x记载“在那一时刻ab是否正确”,逻辑

2、值与大小比较,3,六个关系运算符 = = != 都是二元运算符 注意写法,尤其是后两个 关系表达式 由关系运算符连接两个操作数构成的计算式,计算结果是整数0或者整数1; “逻辑值”参与数值计算 例:int a , b , c , x , y; x = ( a b ) ; y = ( a+b c ) + ( a+c b ) + ( b+c a ) ; 关系运算符的优先级(查阅附录) 在上述两个例子中去掉所有括号,还正确吗?,关系运算符,4,设计行动计划 (1) 乘车上班:如果起晚了就打的,否则乘公汽 (2) 放松一下:如果中了奖就去游港澳,否则到东湖 (3) 晚自习:如果宿舍有电就在宿舍看书,否

3、则到教室 特点 都是行动计划,并不现在决定; 计划中含有“二选一”的内容; 根据行动时的具体情况进行“二选一” 编写程序就是设计行动计划 程序用来告诉计算机如何行动,写程序时计算机并不立即行动;“行动”就是“执行”(RUN);程序中需要考虑各种可能出现的情况。,如果就否则,5,顺序结构流程 分支结构流程,分支结构流程,步骤A,步骤C,步骤B,总体上是顺序结构,步骤B内是分支结构,6,说明: 逻辑表达式计算结果是“逻辑值”的计算式,关系表达式是一种逻辑表达式。 与上一页分支流程的对应关系 语法规定,格式要求,if语句基本格式,格式: if(逻辑表达式) 操作1; else 操作2;,7,Q:设a

4、、b中各存放一个整数,把大的放在c中,if语句示例,c=a;,ab,Y,N,c=b;,格式: if(逻辑表达式) 操作1; else 操作2;,a b,c = a ;,c = b ;,#include main( ) int a , b , c ; printf( Input 2 integers: ) ; scanf( %d%d , ,程序是交给计算 机的执行计划,8,Q:一元二次方程求根程序,增加无实数解时的处理,if语句中的复杂分支,求解,=0,Y,N,显示无解,d = b * b 4 * a * c ; if ( 逻辑表达式 ) 求解; else 显示无解;,d = 0,x1=(-b+

5、sqrt(d)/2/a; x2=(-b-sqrt(d)/2/a; printf(%f,%f,x1,x2);,printf(无解n);, ,9,没有else的if语句,交换,a b,Y,N,无操作,if ( 逻辑表达式 ) 交换a、b的值; else 无操作;,a b,t = a ; a = b ; b = t ;, ,;,Q:设a、b中各存放一个数据,写一段程序,经过处理后使得a中放大的、b中放小的。,10,Q:键盘输入三个整数,找出其中最大的一个。,连续使用if语句,#include main( ) int a , b , c , m , n ; 输入a、b、c 把a、b中大的一个放到m 把

6、m、c中大的一个放到n 显示n的值 ,scanf(%d%d%d,printf ( max=%dn , n ) ;,if ( a b ) m = a ; else m = b ;,if ( m c ) n = m ; else n = c ;,11,Q:键盘输入三个整数,找出其中最大的一个。,用没有else的if语句解决三数求大,#include main( ) int a , b , c , m ; printf ( Input 3 integers : ) ; scanf ( %d%d%d , ,12,if语句嵌套,Q:闰年判断问题,13,判断闰年的程序,#include main( ) i

7、nt y; scanf ( %d , else 进一步判断 ,if ( y % 100 != 0 ) printf ( %d年是闰年n , y ) ; else 再进一步判断,if ( y % 400 != 0 ) printf ( %d年不是闰年n , y ) ; else printf ( %d年是闰年n , y ) ;,14,逻辑值的扩展“非0即真”,现象: t = a b ; if ( a b )if ( t ) k = a ; k = a; elseelse k = b ; k = b ; 问题: 在右边的程序段中,如果隐去“t=ab;”的赋值,当t的值并非0或1时,计算机如何处理“

8、if ( t )”?,结论:非即真 表达式计算结果为条件不成立 表达式计算结果非条件成立,15,“非0即真”应用示例,设变量a、b、c、x中存放了正整数,则: t1 = x % a ;t2 = x % b ;t3 = x % c ; if ( t1 + t2 + t3 ) printf ( %d不是%d、%d和%d的公倍数n , x , a , b , c ) ; Q:if语句中的条件是如何处理的?,if语句的条件部分可以用语言描述成:如果x不能被a整除,或者x不能被b整除,或者x不能被c整除,则.。,16,逻辑运算1,与判断有关的描述 并且、而且、和、and、 或者、也行、 判断不对 对应的

9、逻辑运算 (1) 并且逻辑“与”运算 else printf ( 不能构成三角形n ); 其中的条件可以有多种写法:,a + b c else printf ( 不正常n ); 其中“t在限定区间内”的写法:,数学写法: 60 t 80,语言写法:60 t 结果:x被赋值为3,t被赋值为1,而y中仍然是2。,22,说明: 1、格式中的逻辑表达式必须有确定的计算结果 2、解释功能,计算机处理方式 3、示例: (1) 把变量a、b中较大的一个数放到c中 c = a b ? a : b ; Q:其中是否需要加括号? (2) 把变量a、b中较小的一个加1后放回原变量中 a b ? a+ : b+ ;

10、Q:比较两例的差别,条件表达式,格式: 逻辑表达式?表达式1:表达式2,23,多路分支预想的流程,24,用if语句实现多路分支,Q:输入成绩值,显示对应的分类(A、B、C、D、E) 改错: scanf(%d, ,25,switch语句,1、语法规定及流程说明 2、与“预期的多路分支”有怎样的不同?如何解决?,格式: switch(表达式) case 常量1:操作1; case 常量2:操作2; case 常量n:操作n; default:操作n+1; ,26,break语句,1、功能、用法说明 2、switch结构的通常用法: switch(表达式) case 常量1:操作1;break; case 常量2:操作2; break; case 常量n:操作n; break; default:操作n+1; ,格式: break;,27,switch语句应用示例1,Q:输入一个五分成绩值(A、B、C、D、E),显示其对应的分数段。 scanf(%c, 如果去掉所有的break,当输入是B时,显示如何?,28,switch语句应用示例2-问题,Q:输入年、月、日,该

温馨提示

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

评论

0/150

提交评论