第4章 选择结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章选择结构
章节分析:
所谓选择结构就是根据某种条件的成立与否而采用不同的程序段进行处理的程序结构。
教学内容:
1、if语句
2、switch语句
教学重点:
1、if语句的嵌套
2、switch语句
教学难点
1、if语句的嵌套
2、switch语句
课时分配:8课时
导入新课:
回顾旧课,复习上节课内容。
顺序结构程序设计是C 语言结构化程序设计中最简单的方法。在大多数程序中都会包含选择程序设计,它的作用是,根据所指定的条件是否满足,决定从给定的两组操作选择其一。几乎所有实用的程序都包含循环,它和顺序结构、选择结构共同作为各种复杂程序的基本构造单元。因此熟练掌握选择结构和循环结构的概念及使用是程序设计的最基本的要求。
第一讲
一、条件判断表达式
1、关系运算符
关系运算符用于确定两个数据之间是否存在着某种关系。关系运算符共有6个,其名称和符号表示如下表所示。其中关系运算符<、<=、>、>=的运算优先级相同,高于关系运算符==和!=,==和!=的运算优先级别相同。
用关系运算符将两个表达式(算术、关系、逻辑或赋值表达式)连接起来构成关系表达式。当关系表达式成立时,其值为1,当关系表达式不成立时,其值为
1
0。总体上讲,关系运算符的优先级低于算术运算符,高于赋值运算符。
2、逻辑运算符
当判断条件不唯一时,就需要将两个关系表达式用逻辑运算符连接起来构成逻辑表达式,最终形成完整的条件判断表达式。
逻辑运算符“!”的结合方向为右结合,逻辑运算符“&&”和“||”的结合方向为左结合。
运算规则:逻辑运算符“!”执行非运算,对操作数进行逻辑取反操作;逻辑运算符“&&”执行与运算,即两个操作数都为真时,结果才为真;逻辑运算符“||”执行或运算,即两个操作数都为假时,结果才为假。逻辑值的运算规则可以用真值表来说明,如下表所示。
二、if语句
1、if语句的一般格式
if ( 表达式 )
{ 语句组1; }
[else
{ 语句组2; } ]
2、if语句的执行流程
(1)缺省else子句( 图4-2(a))当“表达式”的值:非0(逻辑真) ,执行语句组;否则,直接转向执行下一条。
【例1】输入 3 个整数,输出其中的最大值。
# include
void main( )
{ inta,b,c,max; /*max中放最大值*/
printf("input a,b,c:\n");
scanf("%d%d%d",&a,&b,&c);
max=a; /*先假设a是最大的数*/
if (max
if (max 2 printf("max is%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 (3)若 b2-4ac<0,方程有两个复根。 main() { float a,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) 4 printf(″有两个相等的实根:x1=x2= % 8.4f\n″,- b/(2*a)); else if(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) 5