




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学要点与重点教学要点:本章主要介绍选择结构程序设计的作用和意义。教学重点:掌握选择结构分支条件的设计与应用。第四章选择结构程序设计
选择结构是程序的3种基本结构之一。在C语言中,通常使用if语句或switch语句来实现选择结构程序设计。4.1if语句C语言提供了三种格式的if语句。它们分别是:单分支if语句、双分支if语句和多分支if语句。4.1.1单分支if语句基本格式为:if(表达式)语句;说明:①“表达式”一般为关系表达式或逻辑表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如:“if(a=8)语句;”、“if(b)语句;”都是允许的,只要表达式的值为非0,即为“真”。通常把关系表达式或逻辑表达式的值为真时,称为条件满足。②语句是“条件”满足时,处理方法的描述,可以是若干个语句。
单分支if语句执行流程:首先判断表达式的值是否为真,若表达式的值为真(非0),则执行其后的语句;否则不执行该语句。语句的控制流程如图4-1所示。图4-1单分支if语句执行流程实例:【例4.1】输入两个整数a和b,如果a小于b,则把整数a打印出来。【例4.2】文字大小写转换。输入一个字符,判别它的大小写状态,如果是小写,则将它转换成大写字母,然后输出转换后的字符。4.1.1单分支if语句4.1.2双分支if语句双分支if语句为if-else形式,基本格式为:
if(表达式)
语句块1;
else
语句块2;说明:①“表达式”一般为关系表达式或逻辑表达式。通常把关系表达式或逻辑表达式的值为真时,称为条件满足;值为假时,称为条件不满足。反之亦然。②语句块1、语句块2分别是“条件”满足或不满足时,处理方法的描述,可以是若干个语句。
双分支if语句的控制流程:双分支if语句在程序的执行过程中,首先判断“条件”,其值为真(非0)时,执行语句块1;为假(0)时执行语句块2。执行完语句块1或语句块2之后,接下来执行if后面的语句。语句的控制流程如图4-2所示。图4-2双分支if语句执行流程【例4.3】从键盘输入一个整数,判断这个数的是否大于0。4.1.2双分支if语句4.1.3多分支if语句基本格式为:if(表达式1)语句块1;elseif(表达式2)语句块2;;
……elseif(表达式m)语句块n;else语句块n+1;说明:①多分支if语句依次判断表达式的值,当某个表达式的值为真(非0)时,则执行其下面的语句,然后跳到整个if语句之外继续执行程序。②如果所有的表达式均为假,则执行语句n+1;如果所列出的条件都不满足,又没有else子句,则跳到整个if语句之外继续执行程序,不执行任何多分支if语句内的语句。
多分支if语句的控制流程:多分支if语句在程序的执行过程中,首先判断条件“表达式1”,其值为真(非0)时,执行语句块1;为假(0)时进一判断条件“表达式2”,其值为真执行语句块2,依次类推,到达判断条件“表达式n”,其值为真时,执行语句块n,为假时,执行语句块n+1。接下来执行if后面的语句。语句的控制流程如图4-3所示。图4-3多分支if语句执行流程4.1.4if语句的嵌套当if语句中的语句又是if语句时,这种情况就称为if语句的嵌套。if语句的嵌套的基本格式为:if(表达式) if(表达式)语句块1; else语句块2;else f(表达式)语句块3; else语句块4;如果嵌套的if语句是if-else形式,将会出现多个if和else的情况,要特别注意if和else的配对问题。例如:if(表达式)if(表达式)语句块1;elseif(表达式)语句块2;else语句块3;说明:在这段程序中,有三个if,两个else,其中的每个else和if的配对关系是什么?从程序的书写格式来看,是希望第一个出现的else能和第一个出现的if配对,但实际上这个else是与第二个if配对的。
4.1.4if语句的嵌套C语言规定:else总是与它前面最近的一个没有配对的if配对。如何实现上个实例中第一个else和第一个if配对呢?可以利用加花括号{}的方法来改变原来的配对关系。例如:
if(表达式) {if(表达式)语句块1;} else if(表达式)语句块2; else语句块3;
这样,{}就限定了内嵌if语句的范围,就实现了第一个出现的else和第一个出现的if配对。【例4.5】写出下面程序的运行结果【例4.6】输入两个整数x,y,z,输出其中最大的数。
4.1.5条件运算符和条件表达式(1)条件运算符条件运算符是C语言中一个特殊的运算符,由“?”和“:”组合而成。条件运算符是三目运算符,要求有3个操作对象,并且三个操作对象都是表达式。在条件语句中,若只执行单个赋值语句,常使用条件运算来表示。这样既会使程序简洁,又可以提高了运行效率。例如:
if(x>y)max=x;elsemax=y;
用条件运算可以表示为:
max=(x>y)?x:y;
执行时,先计算(x>y)的值为真还是假,若为真,则表达式取值为x;否则取值为y。(2)条件表达式其一般形式为:表达式1?表达式2:表达式3
条件运算的求值规则为:计算表达式1的值,若表达式1的值为真,则以表达式2的值作为整个条件表达式的值,否则以表达式3的值作为整个条件表达式的值。例如:max=(x>y)?x:y;①优先级条件运算符的运算优先级低于关系运算符和算术运算符,高于赋值符。因此,表达式max=(x>y)?x:y可以去掉括号,写为max=x>y?x:y,执行时意义是相同的。②结合性条件运算符的结合方向是自右至左。例如:x>y?m:z>m?z:d等价于x>y?x:(z>m?z:m)③条件表达式中,表达式1通常为关系或逻辑表达式,表达式2、3的类型可以是数值表达式、赋值表达式、函数表达式或条件表达式。4.1.5条件运算符和条件表达式4.2switch语句当对一个表达式的不同取值情况作不同处理时,用多分支if语句的程序结构显得较为杂乱,而用switch语句将使程序的结构更清晰,C语言提供了专门用于解决多分支选择问题的switch语句,用来实现多种情况选择的程序设计。4.2.1switch语句基本格式为:
switch(表达式) { case常量表达式1:语句块1; case常量表达式2:语句块2; …… case常量表达式n:语句块n; default:语句块n+1; }4.2switch语句说明:①“表达式”一般为整型变量或者字符型变量,case后面的只能是常量表达式。②switch语句的执行过程是:先求“表达式”的值,并逐个与其后的常量表达式值相比较。当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句块,在case后,允许有多个语句,可以不用{}括起来。如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。③case与其后面的常量表达式合称为case语句标号,每个case后的各常量表达式的值必须互不相同,否则会导致错误。④在关键字case和常量表达式之间一定要有空格,switch后面的括号不能省略。各个case和default的出现次序不影响执行结果。⑤多个case可以共用一组执行语句。例如:case'A':case'B': case'C':printf(">60\n");break;4.2.2switch语句的嵌套
switch语句也可以嵌套,但一般较少使用。在switch语句中,“case常量表达式”只起语句标号的作用,并不进行条件判断。当执行switch语句后,程序会根据case后面表达式的值找到匹配的入口标号,并从此处开始执行,不再进行判断。为了避免这种情况,C语言提供了break语句,专门用于跳出switch语句,break语句只有关键字break,没有参数。break语句不但可以用在switch语句中终止switch语句的执行,也可以用在循环中终止循环,要格外注意break在这里的作用。
switch语句实例:
【例4.7】生肖程序设计,用户输入出生年份,根据输入的年份来确定用户的属相,把结果打印出来。
【例4.8】设计程序,实现季节判断,用户输入1、2、3月是春季,4、
5、6月是夏季,7、8、9月是秋季,10、11、12是冬季。
【例4-9】输入平年的一个月份,输出这个月的天数。4.2switch语句4.3选择结构程序设计举例【例4.10】设计C语言程序,由键盘输入任意3个数,计算以这3个数为边长的三角形的面积。算法分析如下:设3个边为a,b,c,(1)查看输入的3个数能否组成三角形(2)计算三角形的面积【例4.12】某市规定如下用水收费标准:每户一月用水不超过6立方米时,水费按“基准费”收,每立方米2.4元;超过6立方米时,未超过部分按“基准费”收,超过部分按“调水价”收,每立方米6元。根据用户用水量,求用户的水费。【例4.13】一个数如果恰好等于除它本身外的因子和,那么这个数就称为“完数”,编写程序,求1000之内的完数。【例4.11】求一元二次方程的根。按照公式:s=(a+b+c)*0.5area=sqrt(s*(s-a)*(s-b)*(s-c))(面积公式)任务4.4.1计算个人所得税。【问题描述】
输入个人工资计算个人所得税。根据新的个
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 9840-2006饲料添加剂维生素D3微粒
- 土木工程国际标准试题及答案
- 发现茶艺师考试的潜力试题及答案
- 软件技术资格认证常见问题及答案
- 深入理解茶艺的技术创新试题及答案
- 二零二五年度实习教师与特殊教育学校合作协议书
- 二零二五年度兼职程序员聘用合同模板
- 二零二五年度果林采摘体验租赁合作协议
- 二零二五年度商务洽谈专用酒店会议室使用权合同
- 二零二五年度幼儿园品牌连锁加盟管理权转让协议
- 初中数学基于大单元的作业设计
- DL/T 5155-2016 220kV~1000kV变电站站用电设计技术规程
- 工业固体废物协同矿山地质环境修复治理项目环评报告书
- 表面粗糙度仪操作作业指导书
- 部编版小学语文五年级下册第4单元基础知识检测卷-(含答案)
- Unit 5 Understanding ideas Nature in architecture -高中英语外研版(2019)选择性必修第三册
- 王阳明心学课件
- GB/T 11982.2-2015聚氯乙烯卷材地板第2部分:同质聚氯乙烯卷材地板
- 消化性溃疡理论知识试题含答案
- 学校食堂廉政风险责任书
- 中国石油大学(华东)PPT模板
评论
0/150
提交评论