第4章 选择结构.docx

上传人:b****8 文档编号:23734083 上传时间:2023-05-20 格式:DOCX 页数:12 大小:124.88KB
下载 相关 举报
第4章 选择结构.docx_第1页
第1页 / 共12页
第4章 选择结构.docx_第2页
第2页 / 共12页
第4章 选择结构.docx_第3页
第3页 / 共12页
第4章 选择结构.docx_第4页
第4页 / 共12页
第4章 选择结构.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

第4章 选择结构.docx

《第4章 选择结构.docx》由会员分享,可在线阅读,更多相关《第4章 选择结构.docx(12页珍藏版)》请在冰豆网上搜索。

第4章 选择结构.docx

第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语句。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1