C语言实例05.ppt_第1页
C语言实例05.ppt_第2页
C语言实例05.ppt_第3页
C语言实例05.ppt_第4页
C语言实例05.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 选择结构程序设计,关系运算符有: = = !=,第五章 选择结构程序设计,逻辑运算符有: ! ,5.3 if 语句,2. if (表达式) 语句1 else 语句2,例如: if (xy) printf(%d,x); else printf(%d,y);,p,A B,真,假,N-S流程图,3. if (表达式1) 语句 1 else if (表达式2) 语句 2 else if (表达式3) 语句 3 . . else if (表达式n) 语句 n esle 语句 n+1,例如: if (x1) y=1; else if(x0) y=0.5; else if(x -1) y=-0.5;

2、 else y= -1;,只执行一个语句,注意,1. if 语句中的“表达式”可以是任何的数值类型(整型、实型、 字符型等)。 只要“表达式”的值 不等于0, 就执行后面的“语句”。 2. 在带有 else 的 if 语句中,“语句1”、“语句2”仍然以“;”结束, 不可缺少。else 是 if 语句的一部分, else 部分不能单独使用, 必须与 if 配对出现 3. 如果 if 或 else 后面的“语句”有多个操作语句时,必须用 “ ”将这些 语句括起来成为一条语句(即复合语句), 但是 之外不要加“;”。,注 意,输入两个实数,按从小到大的次序输出 。,#include void ma

3、in( ) float a,b,t; scanf(%f,%f, ,注意如何交换两个数,例 5.1,#include void main( ) float a,b,c,t ; scanf(%f,%f,%f, ,输入3个数,要求按由小到大的顺序输出。,例 5.2,在一个 if 语句中又包含一个或多个 if 语句时称为 if 语句的嵌套。 一般形式 :,else 总是与它上面的最接近的 if 相配对. 对于容易混淆的内嵌 if 语句,可以用 来限定其范围,内嵌 if 语句,内嵌 if 语句,if ( . ) if ( . ) 语句 1 else 语句 2 else if ( . ) 语句 3 els

4、e 语句 4,注意,5.3.2 if 语句的嵌套,if ( . ) if ( . ) 语句1 else 语句2 ( else 与 哪个 if 相配? ),if ( . ) if ( . ) 语句1 else 语句2 ( else 与 哪个 if 相配? ),比较:,void main( ) int x,y; scanf(%d, ,有一函数,编一个程序输入 x , 输出 y。,程序流程图:,x0 ?,真,x=0 ?,假,真,假,输出 x 输出 y,开始,输入x,例 5.3,由条件运算符 ? : 所构成的条件表达式的一般形式: 表达式1 ? 表达式2 : 表达式3 例如: ( ab ) ? a :

5、 b 就是一个条件表达式,5.3.3 条件运算符,算术运算符 高 关系运算符 逻辑运算符 条件运算符 赋值运算符 低,2. 条件运算符的优先级: 条件运算符 优先于赋值运算符, 低于关系运算符和算术运算符 。,1. 条件表达式的求解过程: 1) 求解表达式1的值 2)如果表达式1的值为真(非0), 求解“表达式2”的值作为整个条件表达式的值; 如果表达式1的值为假(等于0), 求解“表达式3”的值作为整个条件表达式的值。,3. 条件运算符的结合方向: 自右至左 ,例如:,ab?a:cd?c:d; 相当于: ab?a:(cd?c:d);,(1)只有当 if 语句中内嵌的语句为赋值语句,并且两个分

6、支 都赋给同一个变量时,才 能用条件运算符代替。 if( ab) max=a ; max= ab ? a:b ; else max=b ; (2)条件表达式中,表达式 1 的类型可以与表达式 2、 表达式 3 的类型不同。例如: ch= x ? a : b f=xy ? 1:1.5,注意:,(3) ab ? a : b+1 相当于 ab ? a : (b+1) (4) if(ab) printf(“%d”, a) ; else printf(“%d”, ab ? a : b) ; printf(“%d”, b) ;,输入一个字母,判断是否为大写字母,如果是,则 转换为小写字母,并以小写字母输出

7、。,#include void main( ) char ch ; scanf(%c, ,例 5.4,switch 语句是多分支选择语句。 if 语句只有两个分支,当遇到多分支选择时,可以用嵌套 if 语句 来处理, 但是由于需要嵌套的 if 语句层次多, 因此程序的可读性降 低。语言中的 switch 语句可直接处理多分支选择。 它的一般形式:,switch (表达式) case 常量表达式1: 语句 1 case 常量表达式2: 语句 2 . . case 常量表达式n: 语句n default : 语句 n+1 ,5.4 switch 语句,1. switch 后面括号内的“表达式”可以

8、是整型 或字符型表 达式或枚举类型数据。 2. 当“表达式”的值与某个 case 后面的常量表达式的值相 等时,就执行这个 case 后面的语句; 如果 所有的 case 中的常量表达式的值都没有与“表 达式”的值相匹配时, 就执 行 default (缺省)后面的语句。,注 意,3. 每个 case 的常量表达式的值必须互不相同,否则会产 生错误的选择。 4. 各个 case 和 default 的出现次序不影响执行的结果。,由于从对应的 case 开始,程序会自动执行后面的语句,直至结束或遇到 break语句后 跳出 switch 结构,因此每个 case 后面的语句不需要用复合语句,sw

9、itch (表达式) case 常量表达式1:语句 1; break; case 常量表达式2:语句 2; break; . . case 常量表达式n:语句 n; break; default : 语句 n+1; ,5. 如果希望 执行对应的 case语句之后,跳出 switch 结构,则 在一个 case 后面的 语句之后加一个 break 语句。 最后一个分支可以不加break语句,因为后面switc结构已结 束了。 如果执行完当前的 case语句没有break语句,则 流程继续执 行下一条case 的内容, 而并非 跳出 switch 结构。,switch( 表达式 ) case 常量

10、表达式 1 : 语句 1 ; case 常量表达式 2 : 语句 2 ; . . case 常量表达式 n : 语句 n ; default: 语句 n+1 ; ,void main( ) char grade ; scanf(%c, ,85100 7084 6069 60 errer,例如:要求按考试成绩的等级输出百分制分数段。,如没有break 语句,则将连续输出:,注意:,6. 多个 case 可以共用一组语句,. . . case A : case B : case C : printf(60); break ; . . .,当 switch 后面的表达式的值等于A 或B或C时,都执行

11、 case C: 之后的 printf(60); break; 的语句,void main( ) int year,leap; scanf(%d, ,判断某一年是否是闰年 : (1) 被4整除但不能被100整除; 或 (2) 被400整除;,5.5 程序举例,输入:1989 输出:1989 is not a leap year 输入: 2000 输出:2000 is a leap year,例 5.5,#include void main( ) int year , leap ; scanf(%d, ,程序二:,求 ax + bx + c = 0 方程的根。 (1)a=0, 不是二次方程 (2

12、 ) b*b-4*a*c=0, 有两个相等实根 (3 ) b*b-4*a*c0, 有两个不等实根 (4 ) b*b-4*a*c0, 有两个共轭复根,#include #include void main( ) float a, b, c, d, disc, x1, x2, realpart, magpart ; scanf(%f,%f,%f,2,例 5.6,else if(disc1e-6) x1=(-b+sqrt(disc)/(2*a) ; x2=(-b-sqrt(disc)/(2*a) ; printf(has distinct real roots :%8.4f and %8.4fn,x

13、1,x2) ; else realpart=-b/(2*a) ; imagpart=sqrt(-dise)/(2*a) ; printf(has complex roots : n) ; printf(%8.4f+%8.4f in,reatpart,imagpart) ; printf(%8.4f-%8.4f in,realpart,imagpart) ; ,运输公司对用户计算运费,距离(s)越远,每千米运费越低。 距离(s ) 折扣 s 250 km 没有折扣 250 =s 500 2% 500 =s 1000 5% 1000 = s 2000 8% 2000 = s 3000 10% 30

14、00 = s 15% 设每公里每吨货物的基本运费为 p (price) ; 货物重为 w (weight ) ; 距离为 s ; 折扣为 d (discount ) ; 总运费为 f (fright ) ; 则计算公式为:f=p*w*s*(1-d) ;,例 5.7,#include void main( ) int c,s ; float p,w,d ,f ; scanf(“%f%f%f”, /* 4=c8 */,令 c=s / 250 则 c 可代替 s 进行判断, s (250,500,1000,2000,3000 )- c ( 0,1, 2, 4, 8, 12 ),case 8 : /*

15、 8=12 */ f=p*w*s*(1-d) ; printf( freight=%15.4f,f) ; ,如 输入 :100 20 300 则 输出 : freight=58800.000000,#include void main( ) int magic=888 ; int guess ; scanf(%d, ,猜幻数游戏。,例 5.8,#include void main ( ) int magic=888 ; int guess ; printf(Please input the guess number :) ; scanf(%d, ,猜数并提示所猜的数比magic 数大还是小。,例 5.9,#include void main( ) char c ; printf(Please input a character:) ; c=getchar( ) ; if(c= 0 ,从键盘输入字符,将字符分类: (1)控制字符 : ASCII 码小于32 (2)数字字符 : 09 (3) 大写字母字符 : AZ (4)小写字母字符 : az (5)其它字符.,例 5.10,1. C 语言有哪些基本语句。 2. 有哪几种关系运算符和逻辑运算符。 3. 关系运算

温馨提示

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

评论

0/150

提交评论