第4章 选择结构.docx
- 文档编号:23734083
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:12
- 大小:124.88KB
第4章 选择结构.docx
《第4章 选择结构.docx》由会员分享,可在线阅读,更多相关《第4章 选择结构.docx(12页珍藏版)》请在冰豆网上搜索。
第4章选择结构
第4章选择结构
章节分析:
所谓选择结构就是根据某种条件的成立与否而采用不同的程序段进行处理的程序结构。
教学内容:
1、if语句
2、switch语句
教学重点:
1、if语句的嵌套
2、switch语句
教学难点
1、if语句的嵌套
2、switch语句
课时分配:
8课时
导入新课:
回顾旧课,复习上节课内容。
顺序结构程序设计是C语言结构化程序设计中最简单的方法。
在大多数程序中都会包含选择程序设计,它的作用是,根据所指定的条件是否满足,决定从给定的两组操作选择其一。
几乎所有实用的程序都包含循环,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。
因此熟练掌握选择结构和循环结构的概念及使用是程序设计的最基本的要求。
第一讲
一、条件判断表达式
1、关系运算符
关系运算符用于确定两个数据之间是否存在着某种关系。
关系运算符共有6个,其名称和符号表示如下表所示。
其中关系运算符<、<=、>、>=的运算优先级相同,高于关系运算符==和!
=,==和!
=的运算优先级别相同。
用关系运算符将两个表达式(算术、关系、逻辑或赋值表达式)连接起来构成关系表达式。
当关系表达式成立时,其值为1,当关系表达式不成立时,其值为0。
总体上讲,关系运算符的优先级低于算术运算符,高于赋值运算符。
2、逻辑运算符
当判断条件不唯一时,就需要将两个关系表达式用逻辑运算符连接起来构成逻辑表达式,最终形成完整的条件判断表达式。
逻辑运算符“!
”的结合方向为右结合,逻辑运算符“&&”和“||”的结合方向为左结合。
运算规则:
逻辑运算符“!
”执行非运算,对操作数进行逻辑取反操作;逻辑运算符“&&”执行与运算,即两个操作数都为真时,结果才为真;逻辑运算符“||”执行或运算,即两个操作数都为假时,结果才为假。
逻辑值的运算规则可以用真值表来说明,如下表所示。
二、if语句
1、if语句的一般格式
if(表达式)
{语句组1;}
[else
{语句组2;}]
2、if语句的执行流程
(1)缺省else子句(图4-2(a))当“表达式”的值:
非0(逻辑真),执行语句组;否则,直接转向执行下一条。
【例1】输入3个整数,输出其中的最大值。
#include
voidmain()
{inta,b,c,max;/*max中放最大值*/
printf("inputa,b,c:
\n");
scanf("%d%d%d",&a,&b,&c);
max=a;/*先假设a是最大的数*/
if(max
if(max printf("maxis%d\n",max); } (2)指定else子句(图(b)) 3、if语句的嵌套 if语句的嵌套是在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。 else子句与if的匹配原则是: else子句与它上面、距它最近、且尚未匹配的if语句配对。 说明: (1)在程序语句组中,可以将不可或缺的若干语句,用{}把它们括起来,这样的语句体称为复合语句。 复合语句在逻辑上等价于一条语句,复合语句内部还可嵌套复合语句。 建议: 将内嵌的if语句,使用复合语句来表现,这样有利于程序的阅读。 (2)if后面的“表达式”: 除关系(逻辑)表达式外,也允许是整型、实型、字符型等其它类型的数据。 (3)在语句组1和语句组2中,每个语句后面的分号不可少。 【例2】解方程ax2+bx+c=0。 分析: (1)若b2-4ac>0,方程有两个不等的实根; (2)若b2-4ac=0,方程有两个相等的实根; (3)若b2-4ac<0,方程有两个复根。 main() {floata,b,c,delta,x1,x2,realpart,imagepart; printf(″请输入a,b,c: \n″); scanf(″%f,%f,%f″,&a,&b,&c); if(fabs(a)<=1e-6) printf(″这是一次方程x=%f\n″,-c/b); else {delta=b*b-4*a*c; if(fabs(delta)<=1e-6) printf(″有两个相等的实根: x1=x2=%8.4f\n″,-b/(2*a)); elseif(delta>1e-6) {x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf(″有两个不等的实根: x1= %8.4f和x2=%8.4f\n″,x1,x2);} else { realpart=-b/(2*a); imagepart=sqrt(-delta)/(2*a); printf(″有两个虚根: ″); printf(″%8.4f+%8.4fi\n″, realpart,imagepart); printf(″%8.4f-%8.4fi\n″, realpart,imagepart); } } } 4、条件运算符和条件表达式 条件运算符是C语言中惟一的三目运算符,其一般格式为: 表达式1? 表达式2: 表达式3 执行过程是: 先求解表达式1,当值为非0(真)时,表达式 2的值就是整个条件表达式的值;否则表达式3的值是整个条 件表达式的值。 例如: 若x=3,y=4则下式 x>y? x: y的值为4 条件运算符的优先级低于算术运算符、关系运算符和逻 辑运算符。 条件运算符的结合性为自右至左。 例如: a>b? a: c>d? c: d相当于a>b? a: (c>d? c: d) 小结: 本次课主要讲解了If语句的单分支、多分支及if语句的嵌套,通过例题讲解让同学们理解各种语句的使用方法并利用if语句解决实际问题。 作业: 1、从键盘输入三个整数,并按从大到小的顺序输出。 2、从键盘输入一个整数,判断这个整数是奇数还是偶数。 3、从键盘输入一个年份,判断是否为闰年。 第二讲 复习回顾: 上次课讲到了if语句的单分支、双分支及If语句的嵌套(多分支)情况,本节课学习使用switch语句完成多分支结构。 一、switch语句 用if语句只能进行两路选择,但在实现多路选择时须使用多个if语句,因此用if语句解决多路问题非常不方便,这时可利用switch语句实现多条件多分支程序设计。 1、一般形式 switch(表达式) { case常量表达式1: 语句组1;break; case常量表达式2: 语句组2;break; ...... case常量表达式n: 语句组n;break; default: 语句组n+1; } 2、执行流程——指定break语句 (1)当“表达式”的值与某个case后面的“常量表达式”的值相同时,就执行该case后面的语句(组);当执行到break语句时,转向执行switch语句的下一条语句。 (2)如果没有任何一个case后面的“常量表达式”的值与“表达式”的值匹配,则执行default后面的语句(组)。 然后,再执行switch语句的下一条。 3、执行流程——缺省break语句 case后面的常量表达式仅起语句标号作用,并不进行条件判断。 缺省break语句时,系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,其执行流程如右图所示: 【例3】给一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。 90分以上为'A',80-89分为'B',70-79分为'C',60-69分为'D',60分以下为'E'。 程序如下: main() {intg; printf("Enteramark: "); scanf("%d",&g);/*g中存放学生的成绩*/ printf("g=%d: ",g); switch(g/10) { case10: case9: printf("A\n"); case8: printf("B\n"); case7: printf("C\n"); case6: printf("D\n"); default: printf("E\n"); } } 程序分析: 当执行以上程序输入一个85分的学生成绩后,接着执行 switch语句,首先计算switch后一对括号中的表达式: 85/10, 它的值为8; 然后寻找与8吻合的case 8分支,开始执行其后 的各语句。 程序的输出结果如下: g=85: B C D E 在输出与85分相关的B之后,又同时输出了与85分毫不相 关的等级C、D、E,这显然不符合原意。 如果想只输出我们 输入的分数与相应的等级,在每条case语句后面加break语句 即可。 后面我们将具体介绍break语句的作用。 说明: (1)switch是关键字,switch语句后面用花括号括起来的部分称为switch语句体。 (2)紧跟在switch后一对括号的“表达式”可以是整型表达式及后面将要学习的字符型或枚举型表达式等。 表达式两边的一对括号不能省略。 (3)case也是关键字,与其后面的常量表达式合称case语句标号。 常量表达式的类型必须与switch后的表达式类型相同。 各case语句标号的值应该互不相同。 (4)default也是关键字,起标号的作用,代表所有case标号之外的那些标号。 default标号可以出现在语句体中任何标号位置上。 在switch语句体中也可以没有default标号。 (5)case语句标号后的语句1、语句2等,可以是一条语句,也可以是若干条语句。 (6)必要时,case语句标号后的语句可以省略不写。 (7)在关键字case和常量表达式之间一定要有空格,例如case10,不能写成case10: 作业: 1、已知某公司员工的保底薪水为500,某月所接工程的利 润profit(整数)与利润提成的关系如下(单位: 元): profit≤1000没有提成; 1000<profit≤2000提成10%; 2000<profit≤5000提成15%; 5000<profit≤10000提成20%; 10000<profit提成25%。 算法设计要点: 将利润profit与提成的关系,转换成某些整数与提成的关系。 2、根据输入的数字输出相应的英文星期名称。 3、判断输入一个数的奇偶性。 小结 本章主要讲解选择结构,也就是根据条件的成立与否而执行不同的程序段,通常程序有两个分支,条件为“真”执行一个分支,为否执行另一个分支,如果有多个条件就要考虑选择结构的嵌套和switch语句。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第4章 选择结构 选择 结构