第章 C语言选择结构.ppt
文本预览下载声明
第6章 选择结构 前几章介绍了C语言的几个基本要素(变量、常量、数据类型、语句、操作符和表达式),本章和第7章将介绍C语言中的基本程序结构。在第1章关于程序基础知识的介绍中,已经讨论了三种基本结构。 在前几章的范例中接触到的程序基本都属于顺序结构,本章将先讨论选择结构的使用。C语言提供了多种手段来实现选择结构:if语句、switch语句、条件表达式和逻辑表达式。它们各有优劣和适用的场景。通过本章的学习,需要掌握以下内容: 第6章 选择结构 if语句三种形式的使用; 使用switch语句实现多路选择结构; else if结构和switch语句的使用范围; 条件表达式的使用,以及与if语句的比较; 逻辑表达式的隐式选择。 6.1 if语句 if语句是C语言中实现选择结构最常用的方式。当if语句和else语句组合时候时,可以实现更灵活更复杂的选择结构。学会熟练地使用if语句是C编程的基础。本小节将讨论如何使用if语句来实现选择结构,已经使用中需要注意的问题。 6.1.1 使用if语句 if语句的功能是根据一个条件判断的结果选择执行某一分支。if语句可以分为两个部分:if头和if体。if头由关键字if和包含在括号中的表达式组成。if体由一个语句或一个复合语句组成。例如: if (判断表达式 ) { /* if头 */ 操作1; /* if体 */ 操作2; … } 6.1.1 使用if语句 if语句经常和else语句组合使用。else语句也由两部分:else头和else体。关键字if和关键字else搭配使用的标准形式如下: if (判断表达式 ) { 操作1; } else { /* else头*/ 操作2; /* else 体*/ } 合理地组合if语句和else语句,可以实现以下三种选择结构。 6.1.1 使用if语句 1.if结构 if ( 表达式 ) { 操作1; } 该结构的程序流程图如右图所示。 6.1.1 使用if语句 2.if-else结构 if ( 表达式 ) { 操作1; } else { 操作2; } if-else结构的程序执行流程图如右图所示。 6.1.1 使用if语句 3.else if结构 if ( 表达式1 ) { 执行操作1; } else if ( 表达式2 ){ 执行操作2; } else if ( 表达式3 ){ 执行操作3; … /*在这里允许有任意多个else if语句*/ } else { 执行操作4; } 该结构实现了多路分支结构,其中可以有任意多个else if语句,每一个else if都是一路程序分支。其程序流程图如下图所示。 6.1.1 使用if语句 else if结构实际上是if-else结构的变种,可以其改写为if-else结构(为了简化,程序只包含一个else if): if ( 表达式1 ) { 执行操作1; } else { /* 以下全部内容为第一个else的else体 */ if ( 表达式2 ){ 执行操作2; } else { if ( 表达式3 ) { 执行操作3; } else { 执行操作4; } } } 6.1.2 else和if的配对使用 关键字else与if的组合使用可以实现多种丰富的选择结构。但在当程序中使用else语句时,务必保证关键字else必须存在一个正确配对的if。当if体或else体中嵌套使用if语句的三种形式时,else和if的配对情况会变得复杂,若不细心处理,就有可能发生错误。 6.1.3 选择结构中的不平等分支 在一个选择结构中,如果有多个分支,而各分支的关系是不平等的,则按照思维逻辑的习惯可以将分支按重要性或优先级的顺序从高到低排放。而在if-else结构中,如果两个分支不是平等的,请按照逻辑思维习惯,把重要的或者正常的分支处理放在if体里,即当if头的选择表达式为真时进入的分支是重要的或者正常的;而次要的或者异常的分支处理放在else体。如果是多路分支选择结构,一般按分支的重要性依次向后排列。 6.1.4 判断表达式中的=与== 赋值操作符=与等于操作符==只相差一个等号,前者多写一个等号就变成后者,而后者少写一个等号也变成前者。这种错误在编程中十分常见。而且,这两种都是合法的写法,编译器无法自动检测。如果这种错误出现在if语句的判断表达式中,很可能出现期望外的逻辑完全不一样的程序。因此,编程时必须特别小心。下面的范例讨论了这种错误的危险,并讨论一种防范这种错误的措施。 6.2 switch语句 switch语句是C语言中选择结构的另一个常用的实现方式,十分适用于多路选择的实现。本小节将讨论switch结构的使用和break语句在swi
显示全部