C语言程序设计05章选择结构程序设计.ppt

上传人:wuy****n92 文档编号:70102985 上传时间:2023-01-16 格式:PPT 页数:41 大小:304.50KB
返回 下载 相关 举报
C语言程序设计05章选择结构程序设计.ppt_第1页
第1页 / 共41页
C语言程序设计05章选择结构程序设计.ppt_第2页
第2页 / 共41页
点击查看更多>>
资源描述

《C语言程序设计05章选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计05章选择结构程序设计.ppt(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1 1页页第五章第五章 选择结构程序设计选择结构程序设计5.1 5.1 关系运算符和关系表达式关系运算符和关系表达式关系运算符和关系表达式关系运算符和关系表达式 关系运算关系运算关系运算关系运算实质是一种比较简单的实质是一种比较简单的实质是一种比较简单的实质是一种比较简单的比较运算比较运算比较运算比较运算。它将两。它将两。它将两。它将两个值进行比较,判断其比

2、较的结果是否符合给定的条件,个值进行比较,判断其比较的结果是否符合给定的条件,个值进行比较,判断其比较的结果是否符合给定的条件,个值进行比较,判断其比较的结果是否符合给定的条件,其结果为其结果为其结果为其结果为真(真(真(真(1 1)或者为或者为或者为或者为假(假(假(假(0 0)。5.1.1 5.1.1 关系运算符及其优先次序关系运算符及其优先次序关系运算符及其优先次序关系运算符及其优先次序C C语言提供了语言提供了语言提供了语言提供了6 6种关系运算符:种关系运算符:种关系运算符:种关系运算符:小于小于小于小于 =大于大于大于大于 =大于或等于大于或等于大于或等于大于或等于 =等于等于等于

3、等于 !=!=不等于不等于不等于不等于 优先级相同优先级相同优先级相同优先级相同(第(第(第(第6 6级)级)级)级)优先级相同优先级相同优先级相同优先级相同(第(第(第(第7 7级)级)级)级)LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 2 2页页5.1.2 5.1.2 关系表达式关系表达式关系表达式关系表达式 用关系运算符将两个表达式(可以是算术表达式、逻用关系运算符将两个表达式(可以是算术表达式、

4、逻用关系运算符将两个表达式(可以是算术表达式、逻用关系运算符将两个表达式(可以是算术表达式、逻辑表达式、赋值表达式、字符表达式或内嵌的关系表达式)辑表达式、赋值表达式、字符表达式或内嵌的关系表达式)辑表达式、赋值表达式、字符表达式或内嵌的关系表达式)辑表达式、赋值表达式、字符表达式或内嵌的关系表达式)连接起来的式子,称为连接起来的式子,称为连接起来的式子,称为连接起来的式子,称为关系表达式关系表达式关系表达式关系表达式。下面为一些合法的关。下面为一些合法的关。下面为一些合法的关。下面为一些合法的关系表达式:系表达式:系表达式:系表达式:a+bb+ca+bb+c(a=3)(b=5)(a=3)(b

5、=5)ab ab 关系表达式的结果只有两种:关系表达式的结果只有两种:关系表达式的结果只有两种:关系表达式的结果只有两种:真或假真或假真或假真或假;在;在;在;在C C语言中,以语言中,以语言中,以语言中,以1 1代表代表代表代表“真真真真”,0 0代表代表代表代表“假假假假”。例:假设例:假设例:假设例:假设a=3,b=2,c=1a=3,b=2,c=1,则:,则:,则:,则:(ab)=c (ab)=c 结果为:表达式的值为真;结果为:表达式的值为真;结果为:表达式的值为真;结果为:表达式的值为真;d=ab d=ab 结果为:结果为:结果为:结果为:d d 的值为的值为的值为的值为1 1;f=

6、abc f=abc 结果为:结果为:结果为:结果为:f f 的值为的值为的值为的值为0 0;LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 3 3页页5.2 5.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式5.2.1 5.2.1 逻辑运算符及其优先次序逻辑运算符及其优先次序逻辑运算符及其优先次序逻辑运算符及其优先次序C C语言提供三种逻辑运算符:语言提供三种逻

7、辑运算符:语言提供三种逻辑运算符:语言提供三种逻辑运算符:(1)&逻辑与(与运算符),第逻辑与(与运算符),第11级级(2)|逻辑或(或运算符),第逻辑或(或运算符),第12级级(3)!逻辑非(非运算符),第逻辑非(非运算符),第 2级级说明:说明:1)“&”和和“|”为双目运算符,为双目运算符,“!”为单目运为单目运算符;算符;2)逻辑运算的结果只有两种:)逻辑运算的结果只有两种:真真或或假假。逻辑运。逻辑运 算的真值表详细情况见书算的真值表详细情况见书P89表表5.1。LanJ copyright LanJ copyright Monday,January 16,2023Monday,Ja

8、nuary 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 4 4页页几种已学运算符的优先次序为:几种已学运算符的优先次序为:几种已学运算符的优先次序为:几种已学运算符的优先次序为:!(高)(高)算术运算符算术运算符 关系运算符关系运算符,=,!=逻辑运算符逻辑运算符&,|赋值运算符赋值运算符 逗号运算符逗号运算符 (低)(低)LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序

9、设计语言程序设计 第第 5 5页页5.2.2 5.2.2 逻辑表达式逻辑表达式逻辑表达式逻辑表达式 C C语言编译系统在语言编译系统在语言编译系统在语言编译系统在给出逻辑运算结果给出逻辑运算结果给出逻辑运算结果给出逻辑运算结果时,以时,以时,以时,以数值数值数值数值1 1代表代表代表代表“真真真真”,以,以,以,以数值数值数值数值0 0代表代表代表代表“假假假假”。但是在。但是在。但是在。但是在判断一个量是否为判断一个量是否为判断一个量是否为判断一个量是否为“真真真真”时,以时,以时,以时,以0 0代表代表代表代表“假假假假”,以,以,以,以非非非非0 0代表代表代表代表“真真真真”。例:例:

10、例:例:1 1)若)若)若)若a=4a=4,则,则,则,则!a!a为为为为0 0;2 2)53&2|83&2|8 y&c 的值。的值。运算顺序:运算顺序:1)0&b|x y&c 2)0&b|0&c 3)0|0&c 4)0|0 5)0 LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 6 6页页说明:说明:说明:说明:对于对于对于对于“&”和和和和“|”逻辑运算符,在逻辑表达式求解过程中,逻辑运算符,在逻辑表达

11、式求解过程中,逻辑运算符,在逻辑表达式求解过程中,逻辑运算符,在逻辑表达式求解过程中,有时并不需要执行所有的逻辑运算步骤。例如:有时并不需要执行所有的逻辑运算步骤。例如:有时并不需要执行所有的逻辑运算步骤。例如:有时并不需要执行所有的逻辑运算步骤。例如:a&b&c a&b&c,如果,如果,如果,如果a a为假为假为假为假,则不再判别,则不再判别,则不再判别,则不再判别b b和和和和c c的值;的值;的值;的值;a|b|c a|b|c,如果如果如果如果a a为真为真为真为真,也不再判别,也不再判别,也不再判别,也不再判别b b和和和和c c的值。的值。的值。的值。例如:例如:例如:例如:int

12、a=3,b=4,c=5,d=6,m=7,n=8,x;int a=3,b=4,c=5,d=6,m=7,n=8,x;x=(m=ab)&(n=cd);x=(m=ab)&(n=cd);请问:程序运行后,请问:程序运行后,请问:程序运行后,请问:程序运行后,mm,n n,x x的值分别为多少?的值分别为多少?的值分别为多少?的值分别为多少?LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 7 7页页例:判断某一年是否闰

13、年。闰年的条件是符合下面两者之一:例:判断某一年是否闰年。闰年的条件是符合下面两者之一:例:判断某一年是否闰年。闰年的条件是符合下面两者之一:例:判断某一年是否闰年。闰年的条件是符合下面两者之一:(1 1)能被)能被)能被)能被4 4整除,但不能被整除,但不能被整除,但不能被整除,但不能被100100整除;整除;整除;整除;(2 2)能被)能被)能被)能被100100整除,又能被整除,又能被整除,又能被整除,又能被400400整除;整除;整除;整除;请写出逻辑表达式。请写出逻辑表达式。请写出逻辑表达式。请写出逻辑表达式。首先分析逻辑结构:首先分析逻辑结构:首先分析逻辑结构:首先分析逻辑结构:1

14、 1、条件(、条件(、条件(、条件(1 1)和条件()和条件()和条件()和条件(2 2)的关系应该是)的关系应该是)的关系应该是)的关系应该是“或或或或”;2 2、而每个条件内部应该为、而每个条件内部应该为、而每个条件内部应该为、而每个条件内部应该为“与与与与”关系;关系;关系;关系;3 3、条件(、条件(、条件(、条件(2 2)内,满足被)内,满足被)内,满足被)内,满足被400400整除的一定满足被整除的一定满足被整除的一定满足被整除的一定满足被100100整除,因此整除,因此整除,因此整除,因此只需一个逻辑表达式即可。只需一个逻辑表达式即可。只需一个逻辑表达式即可。只需一个逻辑表达式即

15、可。所以最后的逻辑表达式为:所以最后的逻辑表达式为:所以最后的逻辑表达式为:所以最后的逻辑表达式为:(year%4=0)&(year%100!=0)|(year%400=0)(year%4=0)&(year%100!=0)|(year%400=0)根据运算符的优先级关系,上式可简化为:根据运算符的优先级关系,上式可简化为:根据运算符的优先级关系,上式可简化为:根据运算符的优先级关系,上式可简化为:year%4=0&year%100!=0|year%400=0year%4=0&year%100!=0|year%400=0也可加一个也可加一个也可加一个也可加一个!来判断是否为非闰年,即:来判断是否

16、为非闰年,即:来判断是否为非闰年,即:来判断是否为非闰年,即:!(!(year%4=0&year%100!=0|year%400=0year%4=0&year%100!=0|year%400=0)由布尔代数可简化为:由布尔代数可简化为:由布尔代数可简化为:由布尔代数可简化为:year%4!=0|year%100=0&year%400!=0 year%4!=0|year%100=0&year%400!=0 LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机

17、科学系 C C语言程序设计语言程序设计 第第 8 8页页5.3 if 语句语句5.3.1 if 5.3.1 if 语句的三种形式:语句的三种形式:语句的三种形式:语句的三种形式:1.1.if (if (表达式)语句表达式)语句表达式)语句表达式)语句 执行过程,如下图:执行过程,如下图:执行过程,如下图:执行过程,如下图:表达式语句假(0)真(非0)xyxyprintf(“%d”,x)printf(“%d”,x)假(0)真(1)例如:例如:例如:例如:if(xy)printf if(xy)printf(“%d”,x);(“%d”,x);LanJ copyright LanJ copyright

18、 Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 9 9页页2.2.if (if (表达式)语句表达式)语句表达式)语句表达式)语句1 else 1 else 语句语句语句语句2 2执行过程,如右图:执行过程,如右图:执行过程,如右图:执行过程,如右图:例如:例如:例如:例如:if(xy)printf(“%d”,x);if(xy)printf(“%d”,x);else printf(“%d”,y);else printf(“%d”,y);表达式语句1假(0)真(非0

19、)语句2假(0)xyxyprintf(“%d”,x)printf(“%d”,x)真(1)printf(“%d”,y)printf(“%d”,y)LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1010页页3.3.if (if (表达式表达式表达式表达式1)1)语句语句语句语句1 1 else if(else if(表达式表达式表达式表达式2)2)语句语句语句语句2 2else if(else if(表达式表

20、达式表达式表达式3)3)语句语句语句语句3 3else if(else if(表达式表达式表达式表达式m)m)语句语句语句语句mmelse else 语句语句语句语句n n表达式1语句1假真表达式2语句2真假表达式3语句3语句4真假表达式4语句5假真else if 的后面可的后面可以没有以没有else语句语句可理解可理解为多个为多个elseelse条条件的嵌件的嵌套。套。如下图如下图:LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程

21、序设计语言程序设计 第第 1111页页例:例:例:例:if (number500)cost=0.15;if (number500)cost=0.15;else if(number300)cost=0.10;else if(number300)cost=0.10;else if(number100)cost=0.075;else if(number100)cost=0.075;else if(number50)cost=0.05;else if(number50)cost=0.05;else cost=0;else cost=0;number500number500cost=0.15cost=0

22、.15假真cost=0.10cost=0.10真假cost=0.075cost=0.075cost=0.05cost=0.05真假cost=0cost=0假真number300number300number100number100number50number50 LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1212页页说明:说明:说明:说明:1 1)在在在在if if 后面都跟有表达式,该表达式可以是后

23、面都跟有表达式,该表达式可以是后面都跟有表达式,该表达式可以是后面都跟有表达式,该表达式可以是各种类型的表达式各种类型的表达式各种类型的表达式各种类型的表达式(逻辑表逻辑表逻辑表逻辑表达式、关系表达式、赋值表达式等达式、关系表达式、赋值表达式等达式、关系表达式、赋值表达式等达式、关系表达式、赋值表达式等)或是)或是)或是)或是任意的数值类型任意的数值类型任意的数值类型任意的数值类型(整型,实型,整型,实型,整型,实型,整型,实型,字符型,指针型数据字符型,指针型数据字符型,指针型数据字符型,指针型数据)。如果表达式的值为如果表达式的值为如果表达式的值为如果表达式的值为0 0,则按,则按,则按,

24、则按“假假假假”处理;如果为非处理;如果为非处理;如果为非处理;如果为非0 0,则按,则按,则按,则按“真真真真”处理。处理。处理。处理。例如:例如:例如:例如:if(3)printf(“O.K.”);if(3)printf(“O.K.”);直接执行打印直接执行打印直接执行打印直接执行打印“O.K.”“O.K.”if(a)printf(“%d”,a);if(a)printf(“%d”,a);打印打印打印打印aa的的的的ASCIIASCII码码码码9797再如:再如:再如:再如:int a=0;int a=0;if(a=0)printf(“%d”,0);if(a=0)printf(“%d”,0)

25、;else printf(“%d”,1);else printf(“%d”,1);2 2)注意在注意在注意在注意在if if 语句第二、三形式中每个语句后都有分号语句第二、三形式中每个语句后都有分号语句第二、三形式中每个语句后都有分号语句第二、三形式中每个语句后都有分号;。if (number500)cost=0.15if (number500)cost=0.15;else if(number300)cost=0.10else if(number300)cost=0.10;else if(number100)cost=0.075else if(number100)cost=0.075;else

26、 if(number50)cost=0.05else if(number50)cost=0.05;else cost=0else cost=0;LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1313页页3)3)在在在在if if和和和和elseelse后面可以只含一个内嵌的操作语句,也可以后面可以只含一个内嵌的操作语句,也可以后面可以只含一个内嵌的操作语句,也可以后面可以只含一个内嵌的操作语句,也可以有多

27、个操作语句,此时须用花括号有多个操作语句,此时须用花括号有多个操作语句,此时须用花括号有多个操作语句,此时须用花括号“”将几个语句括将几个语句括将几个语句括将几个语句括起来成为一个起来成为一个起来成为一个起来成为一个复合语句复合语句复合语句复合语句。例:例:例:例:if(ab)if(ab)m=a;m=a;printf(“The MAX number is%d”,m);printf(“The MAX number is%d”,m);else else m=b;m=b;printf(“The MAX number is%d”,m);printf(“The MAX number is%d”,m);L

28、anJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1414页页例例例例5.15.1:输入两个实数,按代数值由小到大的次序输出这输入两个实数,按代数值由小到大的次序输出这输入两个实数,按代数值由小到大的次序输出这输入两个实数,按代数值由小到大的次序输出这两个数;两个数;两个数;两个数;分析:分析:分析:分析:这是一个简单而重要的程序,此算法用到了变量这是一个简单而重要的程序,此算法用到了变量这是一个简单而重要的程

29、序,此算法用到了变量这是一个简单而重要的程序,此算法用到了变量值的交换,要实现两变量值的交换,关键在与设值的交换,要实现两变量值的交换,关键在与设值的交换,要实现两变量值的交换,关键在与设值的交换,要实现两变量值的交换,关键在与设置一个中间变量。置一个中间变量。置一个中间变量。置一个中间变量。程序:程序:程序:程序:main()main()float a,b,t;float a,b,t;scanf(“%f,%f”,&a,&b);scanf(“%f,%f”,&a,&b);if(ab)if(ab)t=t=a a;a a=b b;b b=t;=t;printf(“%5.2f,%5.2f”,a,b);

30、printf(“%5.2f,%5.2f”,a,b);LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1515页页例例例例5.25.2 输入输入输入输入3 3个数个数个数个数a a、b b、c c,要求按由小到大的顺序输出;,要求按由小到大的顺序输出;,要求按由小到大的顺序输出;,要求按由小到大的顺序输出;分析分析分析分析:此题算法比上题稍微复杂一些。上题为两个变量比较此题算法比上题稍微复杂一些。上题为两个变

31、量比较此题算法比上题稍微复杂一些。上题为两个变量比较此题算法比上题稍微复杂一些。上题为两个变量比较大小,只需进行一次比较,而本题为三个变量,则需大小,只需进行一次比较,而本题为三个变量,则需大小,只需进行一次比较,而本题为三个变量,则需大小,只需进行一次比较,而本题为三个变量,则需进行三次比较。进行三次比较。进行三次比较。进行三次比较。其伪代码算法为:其伪代码算法为:其伪代码算法为:其伪代码算法为:if ab if ab 将将将将a a和和和和b b对换对换对换对换 (对换之后,(对换之后,(对换之后,(对换之后,a a比比比比b b小)小)小)小)if ac if ac 将将将将a a和和和

32、和c c对换对换对换对换 (对换之后,(对换之后,(对换之后,(对换之后,a a比比比比c c小,小,小,小,a a为最小)为最小)为最小)为最小)if bc if bc 将将将将b b和和和和c c对换对换对换对换 (对换之后,(对换之后,(对换之后,(对换之后,b b比比比比c c小,小,小,小,b b为次小)为次小)为次小)为次小)经过三次比较和变换后:经过三次比较和变换后:经过三次比较和变换后:经过三次比较和变换后:a a为最小值,为最小值,为最小值,为最小值,b b为次小值,为次小值,为次小值,为次小值,c c为最大值。为最大值。为最大值。为最大值。程序如下页:程序如下页:程序如下页

33、:程序如下页:LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1616页页main()main()float a,b,c,t;float a,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);scanf(“%f,%f,%f”,&a,&b,&c);if(ab)if(ab)t=a;a=b;b=t;t=a;a=b;b=t;if(ac)if(ac)t=a;a=c;c=t;t=a;a=c;c=t;if

34、(bc)if(bc)t=b;b=c;c=t;t=b;b=c;c=t;printf(“%5.2f,%5.2f,%5.2f”,a,b,c);printf(“%5.2f,%5.2f,%5.2f”,a,b,c);LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1717页页5.3.2 if 语句的嵌套语句的嵌套一般形式:一般形式:一般形式:一般形式:if()if()if()if()语句语句语句语句1 1 else e

35、lse 语句语句语句语句2 2 else else if()if()语句语句语句语句3 3 else else 语句语句语句语句4 4注意:注意:注意:注意:if if与与与与elseelse的配对关系。在没有花括符作出限定的配对关系。在没有花括符作出限定的配对关系。在没有花括符作出限定的配对关系。在没有花括符作出限定的情况下,的情况下,的情况下,的情况下,elseelse总是与它上面的总是与它上面的总是与它上面的总是与它上面的最近的最近的最近的最近的、且、且、且、且没有与没有与没有与没有与其它其它其它其它elseelse配对的配对的配对的配对的if if 配对。配对。配对。配对。LanJ c

36、opyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1818页页if()if()if()if()语句语句语句语句1 1elseelse if()if()语句语句语句语句2 2 else else 语句语句语句语句3 3if()if()if()if()语句语句语句语句1 1 elseelse if()if()语句语句语句语句2 2 else else 语句语句语句语句3 3此此if,else配对配对此此if,else配对配对

37、这部分构成第一这部分构成第一个个if 的内嵌语句的内嵌语句加上一个花括符后,限定了加上一个花括符后,限定了内嵌内嵌if 语句的范围,可避免语句的范围,可避免上述错误的出现上述错误的出现 LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 1919页页例例例例5.3 5.3 有一函数:有一函数:有一函数:有一函数:编一程序,输入一个编一程序,输入一个编一程序,输入一个编一程序,输入一个x x值,输出值,输出值,输

38、出值,输出y y值。值。值。值。算法算法算法算法a a:若若若若x0 y=-1x0 y=-1否则:若否则:若否则:若否则:若x=0 y=0 x=0 y=0 否则:否则:否则:否则:y=1 y=1输出输出输出输出y y开始输入xx=0)if(x=0)if(x0)y=1;if(x0)y=1;else y=0;else y=0;else y=-1;else y=-1;printf(“x=%d,y=%dn”,x,y);printf(“x=%d,y=%dn”,x,y);x=0Yy=-1x0YNNy=1y=0算法算法算法算法b b:输入输入输入输入x x若若若若x=0 x=0若若若若x0 y=1x0 y=

39、1 否则:否则:否则:否则:y=0y=0否则:否则:否则:否则:y=-1y=-1输出输出输出输出y y LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 2121页页错误例之一错误例之一错误例之一错误例之一的程序及流程图片段:的程序及流程图片段:的程序及流程图片段:的程序及流程图片段:(P95P95程序程序程序程序3 3 )y=-1y=-1if(x!=0)if(x!=0)if(x0)y=1;if(x0)y=1

40、;else y=0else y=0 x!=0Yy=-1x0YNNy=1y=0此程序的错误在于:此程序的错误在于:当当x=0时,使时,使 y=-1当当xb)max=a;if(ab)max=a;else max=b;else max=b;可简化为:可简化为:可简化为:可简化为:max=(ab)?a:b;max=(ab)?a:b;条件表达式的一般形式为:条件表达式的一般形式为:条件表达式的一般形式为:条件表达式的一般形式为:表达式表达式表达式表达式1 1?表达式表达式表达式表达式2 2:表达式表达式表达式表达式3 3这是这是这是这是C C语言中唯一的语言中唯一的语言中唯一的语言中唯一的三目运三目运三

41、目运三目运算(算(算(算(The ternary operatorThe ternary operator),其流程图如右图所示。其流程图如右图所示。其流程图如右图所示。其流程图如右图所示。表达式1条件表达式取表达式2的值条件表达式取表达式3的值真(非0)假(0)LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 2323页页说明:说明:说明:说明:1 1)条条条条件件件件运运运运算算算算符符符符的的的的优优优

42、优先先先先级级级级是是是是第第第第1313级级级级,只只只只高高高高于于于于赋赋赋赋值值值值运运运运算算算算符符符符和和和和逗逗逗逗号运算符号运算符号运算符号运算符。所以:所以:所以:所以:max=(ab)?a:bmax=(ab)?a:b,可以写成:,可以写成:,可以写成:,可以写成:max=ab?a:bmax=ab?a:b ab?a:b+1ab?a:b+1相当于相当于相当于相当于ab?a:(b+1)ab?a:(b+1),而不是,而不是,而不是,而不是(ab?a:b)+1(ab?a:b)+12 2)条件运算符的结合性为条件运算符的结合性为条件运算符的结合性为条件运算符的结合性为“自右向左自右向

43、左自右向左自右向左”。如:如:如:如:ab?a:cd?c:dab?a:cd?c:d相当于相当于相当于相当于ab?a:(cd?c:d)ab?a:(cd?c:d)LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 2424页页4 4)条件表达式条件表达式条件表达式条件表达式并不能完全取代并不能完全取代并不能完全取代并不能完全取代if if 语句语句语句语句。只有当。只有当。只有当。只有当if else if els

44、e 语语语语句中内嵌的语句都为句中内嵌的语句都为句中内嵌的语句都为句中内嵌的语句都为对同一变量进行赋值的语句对同一变量进行赋值的语句对同一变量进行赋值的语句对同一变量进行赋值的语句时,时,时,时,才能代替才能代替才能代替才能代替if if 语句。如:语句。如:语句。如:语句。如:if(ab)max=a;if(ab)max=a;else max=b;else max=b;5 5)条件表达式中,表达式条件表达式中,表达式条件表达式中,表达式条件表达式中,表达式1 1、2 2、3 3的类型的类型的类型的类型可以相互都不可以相互都不可以相互都不可以相互都不相同相同相同相同,而条件表达式的值的类型,而条

45、件表达式的值的类型,而条件表达式的值的类型,而条件表达式的值的类型取表达式取表达式取表达式取表达式2 2和和和和3 3中类型中类型中类型中类型较高的较高的较高的较高的。例例例例1 1:设:设:设:设x x为整型变量,有为整型变量,有为整型变量,有为整型变量,有x?a:bx?a:b 例例例例2 2:xy?1:1.5 xy?1:1.5,当,当,当,当xyxy时,表达式的值转换为时,表达式的值转换为时,表达式的值转换为时,表达式的值转换为1.01.0 LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023

46、四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 2525页页例例例例 5.4 5.4 输入一个字符,判断它是否为大写字母,如果是,将输入一个字符,判断它是否为大写字母,如果是,将输入一个字符,判断它是否为大写字母,如果是,将输入一个字符,判断它是否为大写字母,如果是,将它转换为小写字符;如果不是,不转换。然后输出最后得它转换为小写字符;如果不是,不转换。然后输出最后得它转换为小写字符;如果不是,不转换。然后输出最后得它转换为小写字符;如果不是,不转换。然后输出最后得到的字符。到的字符。到的字符。到的字符。main()main()char ch;char

47、ch;scanf(“%c”,&ch);scanf(“%c”,&ch);ch=(ch=A&ch=A&ch=ch=(ch=65&ch=&ch j)?(j+):(i+)(i j)?(j+):(i+)k+k+;程序程序程序程序B B:if(i j)if(i j)j+;j+;k+;k+;else else i+;i+;k+;k+;LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 2828页页5.4 switch语句语句

48、一般形式:一般形式:一般形式:一般形式:switch(switch(表达式表达式表达式表达式)case case 常量表达式常量表达式常量表达式常量表达式1 1:语句:语句:语句:语句1 1 case case 常量表达式常量表达式常量表达式常量表达式2 2:语句:语句:语句:语句2 2 case case 常量表达式常量表达式常量表达式常量表达式n n:语句:语句:语句:语句n n default:default:语句语句语句语句n+1n+1 流程图如右图所示。流程图如右图所示。流程图如右图所示。流程图如右图所示。表达式=常量表达式1表达式=常量表达式2表达式=常量表达式n语句1语句语句2语

49、句ndefault语句n+1表达式表达式=常量表达式常量表达式1表达式表达式=常量表达式常量表达式2语句语句2语句语句n语句语句n+1 LanJ copyright LanJ copyright Monday,January 16,2023Monday,January 16,2023 四川理工学院计算机科学系四川理工学院计算机科学系 C C语言程序设计语言程序设计 第第 2929页页例:要求按照考试成绩的等级打印出百分制分数段。例:要求按照考试成绩的等级打印出百分制分数段。例:要求按照考试成绩的等级打印出百分制分数段。例:要求按照考试成绩的等级打印出百分制分数段。switch(grade)sw

50、itch(grade)case A:printf(“85100n”);case A:printf(“85100n”);case B:printf(“7084n”);case B:printf(“7084n”);case C:printf(“6069n”);case C:printf(“6069n”);case D:printf(“60n”);case D:printf(“60n”);default:printf(“errorn”);default:printf(“errorn”);如果如果如果如果gradegrade的值等于的值等于的值等于的值等于AA,则将连续输出:,则将连续输出:,则将连续

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁