第四章 分支结构的C程序设计课件

上传人:我*** 文档编号:139023500 上传时间:2020-07-19 格式:PPT 页数:38 大小:219KB
返回 下载 相关 举报
第四章 分支结构的C程序设计课件_第1页
第1页 / 共38页
第四章 分支结构的C程序设计课件_第2页
第2页 / 共38页
第四章 分支结构的C程序设计课件_第3页
第3页 / 共38页
第四章 分支结构的C程序设计课件_第4页
第4页 / 共38页
第四章 分支结构的C程序设计课件_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《第四章 分支结构的C程序设计课件》由会员分享,可在线阅读,更多相关《第四章 分支结构的C程序设计课件(38页珍藏版)》请在金锄头文库上搜索。

1、第四章 分支结构的C程序设计,C 程序设计,山西大同大学 物电学院,2,本章主要内容,4.1 分支结构中的表达式 4.2 if语句 4.1.1 if语句的一般形式 4.1.2 if语句的嵌套 4.3 switch语句 4.2.1 switch语句的一般形式 4.2.2 break语句 4.4 分支结构程序设计举例,3,重点难点、教学手段及教学课时,重点难点: if语句 switch语句,教学手段: 多媒体CAI课件演示文本编辑器 板书计算 TC集成化环境实验,教学课时:2学时,4,在其它高级语言中,分支结构中的表达式仅指关系表达式和逻辑表达式,比较简单。而语言中要复杂得多,可以是任何有效的表达

2、式,如算术表达式、赋值表达式、字符表达式、条件表达式,还可以是任意类型的数据,如整形、实型、字符型、指针类型等。,4.1 分支结构中的表达式,5,4.1.1 语言中的逻辑值,表达式的值非,则表示逻辑真; 表达式的值为,则表示逻辑假。,即:只要值不是0就表示真,如1、.、a,都表示真值。 值只有是、(字符的ASCII值为)才表示假。,4.1.2 关系表达式,所谓关系表达式是指:用关系运算符将两个表达式连接起来,进行关系运算的式子。,关系表达式的值:是逻辑值“真”或“假”,用1和0表示。,所以关系表达式的值还可以参与其它种类的运算,例如算 术运算、逻辑运算等。例如,假设num1=3,num2=4,

3、num3=5, 则:num1num2的值为0;(num1num2)+num3的值为6。,4.1 分支结构中的表达式,6,所谓逻辑表达式是指:用逻辑运算符将一个或者多个表达式连接起来,进行逻辑运算的式子。,逻辑表达式的值也是一个逻辑值(非“真”即“假”)。,逻辑表达式求解,在值已能确定的情况下不一定求到最后。 如: (1)表达式a if(a=b)”,这里“a=b”不是关系表达式,而是赋值表达式,a为5,表达式取a的值,为真。 3. 字符表达式 如定义“char c=3;” 则 if (c) 、if (B) 使用的都是字符表达式,其值同样是0为假,非0为真。 还有其它形式的表达式,如逗号表达式,其

4、逻辑值的取法与上述相同。,4.1.4 其它形式的表达式,9,4.2.1 if语句的简单形式,if语句的简单格式 if (表达式) 语句,功能: 计算表达式的值,如果是一个非0值(即逻辑真),就执行内嵌语句,否则(即逻辑假)跳过内嵌语句,顺序执行后续语句。,10,if语句的算法:,例如: if (x0) m+; if ( ab ) c=a; a=b; b=c; ,11,4.2.2 ifelse结构,ifelse结构的形式 if (表达式) 语句1 else 语句2 功能: 计算表达式的值,如果它的值是一个非0值(逻辑真),就执行内嵌语句1,之后跳过内嵌语句2,执行后续语句;否则跳过内嵌语句1,执

5、行内嵌语句2,之后执行后续语句。,12,ifelse语句的算法:,例如: if (x0) m+; else m-; if ( ch= a ,13,4.2.3 else if 语句,else if语句一般格式 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式m) 语句m else 语句 n 功能: 依次计算并判断表达式i,为非0时执行后面的语句,都为0时,执行语句n 无论执行完那个语句分支,都转到后续语句,14,else if 语句的算法,流程图,表达式m ?,15,else if 语句的算法,N-S结构图,例如: if (a0) x= -1 ; els

6、e if (a=0 ) x= 0 ; else x=1 ;,16,if语句的简单应用,【例4.1】输入一个字符,如果是大写字母,则将其转换为小写字母输出,否则直接输出。,输入:用 getchar 或 scanf 函数 ch是否为大写字母: ch=A ch=getchar( ); if (ch=A ,程序运行情况如下: G g,可使用条件表达式代替,putchar(ch=A putchar ( n),18,4.2.4 if语句的嵌套,如果if的内嵌语句中又使用了一个if语句,则构成if语句的嵌套。,【例4.2】比较两个整数的关系。 #include main( ) int x, y; print

7、f (Enter integer X and Y:); scanf (%d%d, ,应该正确判断: if的内嵌语句 if和else的配对,提倡缩格书写 有利于阅读程序,19,if语句嵌套的形式,简单if语句的嵌套形式 if (表达式) if 语句 双重(或多重)分支if语句的嵌套形式 if (表达式) if 语句 else if 语句,可以是各种形式的if语句,可以是各种形式的if语句,如果是简单if语句, 必须用“ ”括起,20,例如:, if (c=50) printf(50=50) printf(50150n); if (c=50) printf(50=c=100n); else pri

8、ntf(c50n),与哪个if 配对?,21,再例如:,if(ab) if(ac) if(ad) m=1; else m=2; else m=3;,问题:哪一个 else 和哪一个 if 相匹配?,规则:在嵌套的ifelse语句中,else总是与上面的离它最近的尚未配对的if 配对。,22,举例,【例4.3】输入一个数,判断它是奇数还是偶数,如果是奇数则进一步判断它是否为5的倍数。,23,程序:,#include “stdio.h” main( ) int x; scanf (%d, ,24,学习if语句的难点,if else 语句的配对 正确用表达式描述条件 例如:当x大于5小于10时令x自

9、增 if ( 5x10 ) x+;,正确判断内嵌语句 例如:if(xy) x=x+3; y=y-2; else x=x-3; y=y+2;,if (x5 , , ,25,熟悉常用的if 表达式形式,例如有定义:int a,b=0; a等于什么值时,执行b=2 ;语句? if (a=0) b=2; if (a=1) b=2; if (a!=0) b=2; if (a=1) b=2; if (a=0) b=2; if (a) b=2; if (!a) b=2;,等价于,等价于,26,4.3 switch语句,switch语句的一般形式 switch (表达式) case 常量表达式1: 语句序列1

10、 case 常量表达式2: 语句序列2 case 常量表达式n: 语句序列n default : 语句序列n+1 功能: 计算表达式的值,与常量表达式的值比较,等于第i个值时,顺序执行语句序列i、i+1、 、 n+1 若与所有常量表达式值都不相等,执行语句序列n+1。,27,switch语句的算法描述,N-S结构图,例如: switch (a) case 5: printf( ,当a等于5,输出: default: printf($); case 5: printf( ,switch与break语句结合才能实现 程序的分支,break; break; break;,29,switch语句的简单

11、应用,【例4.4】已知x=100,y=15,要求输入一个算术运算符(+、-、* 或 / ),并对x和y进行指定的算术运算。,思路: 设x和y为float型变量并赋初值; 输入的运算符op为char型变量; 根据op的值(为+、-、*、/)进行x和y的相加、相减、相乘、相除运算(选择分支); 还要考虑到输入字符不是+、-、* 或 / 时的情况,30,程序:,#include stdio.h main( ) float x=100,y=15,z; char op; op=getchar( ); switch (op) case +: z=x+y; break; case -: z=x-y; bre

12、ak; case *: z=x*y; break; case /: z=x/y; break; default: z=0; if(int)z!=0) printf(%f%c%f=%fn,x,op,y,z); else printf (%c is not an operatorn,op); ,实型数通常不使用z=0或z!=0的比较 可用if(int)z) 代替,31,注意:,switch语句的书写格式:语句体本身必须用花括号括起;case和default后面如果有多条语句,则可以不必使用花括号;case和常量表达式之间必须有空格;default可以写在语句体的任何位置,也可以省略不写 break

13、语句可以改变case的语句标号作用,终止后续case语句序列的执行。 switch语句和break语句结合,可以实现程序的选择控制(break语句还可以在循环语句中使用) 允许switch嵌套使用,但同一个switch语句中,任意两个case的常量表达式值不能相同。,32,4.4 分支结构程序设计举例,【例4.5】求一元二次方程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

14、=(-b-sqrt(d)/(2*a) 当d 0时,方程有两个虚根: x1=jp+ipi x2=jp-ipi,实部 jp=-b/(2*a) 虚部 ip=sqrt(-d)/(2*a),33,算法:,34,程序:,#include math.h #include stdio.h main( ) float a,b,c,d,x1,x2,lp,ip; scanf(%f%f%f, ,35,程序(续):,else if (d1e-6) /* 不相等的实根 */ x1=(-b+sqrt(d)/(2*a); x2=(-b-sqrt(d)/(2*a); printf(has two real roots:n) ;

15、 printf(x1=%8.4f, x2=%8.4fn,x1,x2); else /* 虚根 */ lp=-b/(2*a);ip=sqrt(-d)/(2*a); printf(has two complex roots: n); printf(x1=%8.4f+%8.4fin,lp,ip); printf(x2=%8.4f-%8.4fin,lp,ip); ,36,举例(续):,【例4.6】输入年份,判别该年是否为闰年。,思路:年份year为闰年的条件为 能够被4整除,但不能被100整除的年份; 能够被400整除的年份。 只要满足任意一个就可以确定它是闰年。 例如: 1996年、2000年是闰年 1998年、1900年不是闰年,设定标志变量leap,只要符合其中一个条件的就是闰年,令 leap =1;否则令 leap=0,37,算法:,year%4=0 scanf(%d, ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号