《C语言程序设计》课件4第5章_第1页
《C语言程序设计》课件4第5章_第2页
《C语言程序设计》课件4第5章_第3页
《C语言程序设计》课件4第5章_第4页
《C语言程序设计》课件4第5章_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章选择结构程序设计5.1引例5.2if语句5.3? : 运算符实现分支结构5.4switch语句5.5案例学习

5.1引例

【例5-1】输入两个数,输出其中较大的数。程序流程如图5.1所示。图5.1例5-1算法流程例5-1的源程序如下:图5.2例5-1运行结果

【例5-2】输入三角形的三条边长,求三角形面积。图5.3例5-2运行结果

5.2if语句

5.2.1单分支if语句

语句格式:

if(表达式)语句

注意:if后面的语句若为多条语句构成时,必须写成复合语句形式(即将语句用花括号括起来)。

单分支if语句的执行过程如图5.4所示。图5.4单分支选择结构

【例5-3】输入两个整数,按照由小到大的顺序输出这两个数。图5.5例5-3运行结果5.2.2双分支if语句

语句格式:

if(表达式)语句1else语句2

双分支if语句的执行过程如图5.6所示。图5.6双分支选择结构

【例5-4】从键盘上输入一个正整数,判断其奇偶性。图5.7例5-4运行结果5.2.3多分支if语句

语句格式:

if(表达式1)语句1

elseif(表达式2)语句2

elseif(表达式3)语句3

elseif(表达式m)语句m

else语句n

多分支if语句的执行过程如图5.8所示。图5.8多分支选择结构

【例5-5】有一个函数定义如下,编一程序,输入一个x值,输出y值。

算法流程图如图5.9所示。图5.9例5-5流程图根据流程图编程如下:图5.10例5-5运行结果5.2.4if语句的嵌套

在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:

【例5-6】将例5-5的阶梯函数采用if语句的嵌套格式编程。

方法一:方法二:

5.3? : 运算符实现分支结构

在例4-1中,有以下if语句:

当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理:

【例5-7】从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字母输出;否则,直接输出。图5.11例5-7运行结果

5.4switch语句

【例5-8】从键盘上输入一个百分制成绩score,按下列原则输出其等级:

score≥90,等级为A;

80≤score<90,等级为B;

70≤score<80,等级为C;

60≤score<70,等级为D;

score<60,等级为E;

score<0或score>100,等级为F。分析题意,此题加上错误输入,共有六个分支,如果采用多分支选择结构if语句,则程序如下:上面的程序冗长而且分支较多,可读性降低,不便于理解。C语言提供了switch语句直接处理多分支选择,程序如下:图5.12例5-8运行结果

1.switch语句的一般形式

2.执行过程

(1)当switch后面表达式的值与某个case后面的常量表达式的值相同时,就执行该case后面的语句(组);当执行到break语句时,跳出switch语句,转向执行switch语句的下一条,如图5.13所示。

(2)如果没有任何一个case后面的常量表达式的值与表达式的值匹配,则执行default后面的语句(组);然后,再执行switch语句的下一条。图5.13含有break语句的switch语句的执行过程

3.说明

(1) switch后面的表达式,可以是int、char和枚举型中的一种。

(2)每个case后面常量表达式的值必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一个值,有两种或两种以上的执行方案)。

(3) case后面的常量表达式仅起语句标号的作用,并不进行条件判断。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,执行过程如图5.14所示,所以必须加上break语句,以便结束switch语句。图5.14不含有break语句的switch语句的执行过程注意:如果去掉例5-8程序中的所有break语句,程序段代码如下:图5.15去掉例5-8程序中的所有break语句,且输入的成绩为75时的运行结果

(4)多个case子句,可共用同一语句(组)。

例如,在例5-8中有“case10: ”和“case9: ”共用语句“printf(”grade=A\n“);break;”,“case5:”~“case0: ”共用语句“printf(”grade=E\n“);break;”。

(5)用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实现。

5.5案例学习

【例5-9】判断由键盘上输入的整数是正数、负数还是零。图5.16例5-9运行结果

【例5-10】从键盘上输入三个整数,求其中最大值和最小值。图5.17例5-10运行结果

【例5-11】输入任意三个整数a、b、c,按从小到大的顺序输出。

算法流程图如图5.18所示。图5.18例5-11流程图根据流程图写出程序:图5.19例5-11运行结果

【例5-12】已知某公司员工的底薪为500元,某月所接工程的利润profit(整数)与利润提成的关系如下(计量单位:元),编程计算员工工资。算法设计要点:为使用switch语句,必须将利润profit与提成的关系,转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000,2000,5000,…),如果将利润profit整除1000,则:程序代码如下:图5.20例5-12运行结果

【例5-13】求一元二次方程ax2 + bx + c = 0的解(a≠0)。

算法分析:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论