C语言 分支结构程序设计.ppt_第1页
C语言 分支结构程序设计.ppt_第2页
C语言 分支结构程序设计.ppt_第3页
C语言 分支结构程序设计.ppt_第4页
C语言 分支结构程序设计.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、第2章 分支结构程序设计,Your site here,C语言教材,本章要点,C语言中有哪些关系运算和逻辑运算? 关系运算和逻辑运算的优先级如何? 如何用IF语句构成分支结构? 如何用SWITCH语句构成多分支结构?,Your site here,C语言教材,主要内容,2. 1求分段函数,2.2求两数中的最大值,2.3求付费金额,2.4输出成绩等级,2. 5输出最大值,2.6分支结构程序设计实例,1.3. 求圆的周长,2.7字母大小写转换,Your site here,C语言教材,2.1求分段函数,【例2-1】用C语言实现数学上的一个分段函数: 1 , x0 y= -1 , 其他 源程序: #

2、include void main() int y; float x; printf(Input x:n); scanf(%f,2.1.1 程序解析,Your site here,C语言教材,2.1求分段函数,if(x0) y=1; else y=-1; printf(y=%dn,y); return 0; 运行结果: Input x: 3.6 y=1,Your site here,C语言教材,2.1求分段函数,2.1.2 关系运算及其表达式,1.关系运算符 关系运算是逻辑运算中比较简单的一种,“关系运算”就是“比较运算”。即,将两个值进行比较,判断是否符合或满足给定的条件。如果符合或满足给定

3、的条件,则称关系运算的结果为“真”;如果不符合或不满足给定的条件,则称关系运算的结果为“假”。,表2-1 关系运算符,Your site here,C语言教材,2.1求分段函数,使用关系运算符时要注意以下几点: (1) 由两个字符组成的运算符之间不可加空格,用空格从中分开写就会产生语法错误。例如:a =b;是错误的,但是可以写成:a = b;在运算符的两侧增加空格会提高可读性。同样将运算符写反,例如:=、=10) pay=weight*6.5; else pay=weight*8.5; printf(“You should pay %f yuansn”,pay); ,2.3.1 程序解析,Yo

4、ur site here,C语言教材,运行结果: Please input the weight: 12 You should pay 78.000000 yuans Please input the weight: 5 You should pay 42.500000 yuans,2.3求付费金额,Your site here,C语言教材,2.3求付费金额,2.3.2 二分支结构ifelse语句,有时,我们需要在某种条件下让程序执行一个分支,否则执行另一分支。这时,可以采用ifelse语句。其语句格式如下: if(表达式) 语句1; else 语句2; 该语句的执行过程如图2-3所示。,Yo

5、ur site here,C语言教材,2.3求付费金额,源程序: #include void main() int a,b; printf(“Input two integers:n”); scanf(“%d %d”, ,Your site here,C语言教材,运行结果: Input two integers: 2 7 max=7 Input two integers: 3 10 max=10,2.3求付费金额,Your site here,C语言教材,2.3求付费金额,2.3.3ifelse语句的嵌套,if 和else子句中,可以是任意合法的C语句或语句块,如果这子句是个if语句,则构成了

6、if语句的嵌套。内嵌的if语句可以嵌套在if子句中,也可以嵌套在else子句中。嵌套的if语句有以下几种格式: 1.if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; else if(表达式m) 语句m; else 语句n; 其语义是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句n。然后继续执行后续程序。,Your site here,C语言教材,其执行过程如图2-4所示。,2.3求付费金额,Your site here,C语言教材,2.3求付费金额,【

7、例2-4】根据输入的百分制成绩(score),要求输出成绩等级(grade)A、B、C、D、E。90分以上为A,8089分为B,7079分为C,6069分为D,60分以下为E。 源程序: #include void main() int score; char grade; printf(“n Please input a score(0100):”); scanf(“%d”, ,Your site here,C语言教材,运行结果: Please input a score(0100): 91 The grade is A Please input a score(0100): 86 The

8、grade is B Please input a score(0100): 73 The grade is C Please input a score(0100): 65 The grade is D Please input a score(0100): 39 The grade is E,2.3求付费金额,Your site here,C语言教材,2.3求付费金额,【例2-5】判别键盘输入字符的类别。 源程序: #include void main() char c; printf(input a character: ); c=getchar(); if(c=0 ,Your site

9、 here,C语言教材,运行结果: Please input a character: (键盘输入“回车符”) This is a control character Please input a character: 5 This is a digit Please input a character: F This is a capital character Please input a character: f This is a small character Please input a character: = This is another character,2.3求付费金额

10、,Your site here,C语言教材,2.3求付费金额,2. if() if()语句1; else 语句2; else if()语句3; else 语句4; 应当注意if与else的配对关系。特别是if/else子句数目不一样时(if子句数量只会大于或等于else子句数量)。,Your site here,C语言教材,2.3求付费金额,【例2-6】编程实现下面函数: -1(x0) 算法1: 源程序: #include void main() int x,y; printf(“Input the x:”); scanf(“%d”,Your site here,C语言教材,if(x0) y=

11、1; printf(“The y is:%d”,y); return 0; 运行结果: Input the x:-2 The y is:-1 Input the x:0 The y is:0 Input the x:3 The y is:1,2.3求付费金额,Your site here,C语言教材,2.3求付费金额,算法2: 源程序: #include void main() int x,y; printf(“Input the x:”); scanf(“%d”, ,Your site here,C语言教材,运行结果: Input the x:-2 The y is:-1 Input the

12、 x:0 The y is:0 Input the x:3 The y is:1 在使用if语句中还应注意以下问题: (1) 在三种形式的if语句中,在if关键字之后均为表达式。 (2) 在if语句中,条件判断表达式必须用括号括起来, 在语句之后必须加分号。 (3) 在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用 括起来组成一个复合语句。但要注意的是在之后不能再加分号。,2.3求付费金额,Your site here,C语言教材,2.4 输出成绩等级,【例2-7】从键盘上输入一个百分制成绩score,按下列原则输出其等级: sco

13、re90,等级为A; 80score void main() int score, grade printf(“Input a score(0100): ”); scanf(“%d”, /*转化成switch语句中的case标号*/,2.4.1 程序解析,Your site here,C语言教材,switch (grade) case 10: case 9: printf(“grade=An”); break; case 8: printf(grade=Bn); break; case 7: printf(grade=Cn); break; case 6: printf(grade=Dn);

14、break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“grade=En”); break; default: printf(“The score is out of range!n”); return 0; ,2.4 输出成绩等级,Your site here,C语言教材,运行结果: Input a score(0100): 95 grade=A Input a score(0100): 83 grade=B Input a score(0100): 77 grade=C Input a score(0100): 61 g

15、rade=D Input a score(0100): 37 grade=E,2.4 输出成绩等级,Your site here,C语言教材,2.4 输出成绩等级,2.4.2 用switch语句实现多分支的程序结构,多分支可以使用嵌套的if语句处理,但如果分支较多,嵌套的if语句层数多,程序冗长,降低可读性。C语言提供switch语句直接处理多分支选择。其一般形式: switch(表达式) case 常量表达式1: 语句1 case 常量表达式2: 语句2 case 常量表达式n: 语句n default: 语句n+1 ,Your site here,C语言教材,2.4 输出成绩等级,说明:

16、switch括号后面的表达式,允许为任何类型。 各个常量表达式的值必须互不相同,否则出现矛盾。 各个case,default出现的顺序不影响执行结果。 执行完一个case后面的语句后,流程控制转移到下一个case中的语句继续执行。此时,“case 常量表达式”只是起到语句标号的作用,并不在此处进行条件判断。 case后面如果有多条语句,不必用括起来。 多个case可以共用一组执行语句。,Your site here,C语言教材,2.4 输出成绩等级,【例2-8】将一个星期数字转换成星期的英文名称。 源程序: #include void main() int a; printf(input in

17、teger number: ); scanf(%d, ,Your site here,C语言教材,运行结果: input integer number:3 Wednesday Thursday Friday Saturday Sunday error!,2.4 输出成绩等级,Your site here,C语言教材,2.4 输出成绩等级,2.4.3 switch语句的执行逻辑与break语句的作用,添加break语句后的switch结构如下: switch(表达式) case 常量表达式1: 语句1 break; case 常量表达式2: 语句2 break; case 常量表达式n: 语句n

18、 break; default: 语句n+1 break; ,Your site here,C语言教材,2.4 输出成绩等级,添加break语句后的例2-8源程序如下: 源程序: #include void main() int a; printf(input integer number: ); scanf(%d, ,Your site here,C语言教材,2.4 输出成绩等级,运行结果: input integer number:3 Wednesday,【例2-9】运输公司对用户计算运费。路程s越远,每公里运费越低。标准如下:,Your site here,C语言教材,2.4 输出成绩等

19、级,源程序: #include void main () int c,s; float p,w,d,f; scanf(“%f,%f,%d”,break;,Your site here,C语言教材,2.4 输出成绩等级,case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break; f=p*w*s*(1-d/100.0); printf(“freight=%15.4fn”,f) return 0; ,运行结果: 100,20,30 freight=

20、 588000.0000!,Your site here,C语言教材,2.5 输出最大值,【例2-10】输入两个数,输出其中最大值。 源程序: #include void main() float a,b, max; printf (Input 2 reals please:); scanf (%f%f, ,2.5.1 程序解析,Your site here,C语言教材,运行结果: Input 2 reals please:89 56 The max is 89.000000 Input 2 reals please:21 -9 The max is 21.000000,2.5 输出最大值,Y

21、our site here,C语言教材,2.5 输出最大值,2.5.2 条件表达式及其分支结构,如果在条件语句中,只执行单个的赋值语句时, 常可使用条件表达式来实现。不但使程序简洁,也提高了运行效率。它的一般形式为 表达式1?表达式2:表达式3 其求值规则为:若表达式1的值为真(非0),则以表达式2的值作为该条件表达式的值;否则取表达式3的值作为该条件表达式的值。,Your site here,C语言教材,2.5 输出最大值,使用条件表达式时,还应注意以下几点: 1. 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此 max=(ab)?a:b可以去掉括号而写为 max=ab

22、?a:b。 2. 条件运算符?和:是一对运算符,不能分开单独使用,是C语言中唯一的三元运算符。 3. 条件运算符的结合方向是自右至左。 4.条件表达式不能取代一般的if语句,只有在if语句中内嵌的语句为赋值语句,并且两个分支都给同一个变量赋值时才能代替if语句。,Your site here,C语言教材,2.5 输出最大值,【例2-11】要求从键盘输入一个字符,判断它是否是大写字母,如果是,将它转换成小写字母;否则,不转换。最后将结果输出。 源程序: #include void main() char ch; scanf(“%c”, ,Your site here,C语言教材,运行结果: In

23、put 2 reals please:89 56 A a b b,2.5 输出最大值,Your site here,C语言教材,2.6 分支结构程序设计实例,【例2-12】编写程序,输入3个整数,输出其中的最小值。 源程序: #include void main() int a,b,c,min; printf(input three number:n); scanf(%d%d%d, ,Your site here,C语言教材,2.6 分支结构程序设计实例,【例2-13】输入三个数x,y,z,请把这三个数由小到大输出。 源程序: #include void main() int x,y,z,t;

24、 scanf(%f%f%f, ,Your site here,C语言教材,2.6 分支结构程序设计实例,if(yz) t=y; y=z; z=t; printf(small to big: %f %f %fn,x,y,z); return 0; ,Your site here,C语言教材,2.6 分支结构程序设计实例,【例2-14】企业发放的奖金根据利润提成。利润低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高

温馨提示

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

评论

0/150

提交评论