《C语言程序设计ppt课件-第3章-选择结构.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计ppt课件-第3章-选择结构.ppt(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语语言程序言程序设计设计第第3章章 选择结构选择结构2本章主要本章主要内内容容 1.表达式表达式 2. if语语句句 3. switch语语句句 4. 选择结构选择结构的嵌套的嵌套 5. 选择结构选择结构的的应应用用选择结构选择结构在解决大量的实际问题时,常常需要根据不同的在解决大量的实际问题时,常常需要根据不同的情况或条件,制定出不同的解决方案或对策。情况或条件,制定出不同的解决方案或对策。 4选择结构选择结构选择结构是通过对条件选择结构是通过对条件的判断来选择执行不同的判断来选择执行不同的程序语句。的程序语句。 C语言中是用语言中是用if语句或语句或switch语句来构成选择结构的。语句
2、来构成选择结构的。if语句可用于构成两路或多路选择结构;语句可用于构成两路或多路选择结构;switch语句能语句能方便地构成多路选择结构。方便地构成多路选择结构。一个程序若具有了判断和选择功一个程序若具有了判断和选择功能,就具备了最基本的智能。能,就具备了最基本的智能。 53.1 表达式条件条件是以表达式的形式来表示的是以表达式的形式来表示的表达式表达式是用运算符和括号将运算对象连接起来的式是用运算符和括号将运算对象连接起来的式子,运算对象可以是常量、变量、函数、表达式等子,运算对象可以是常量、变量、函数、表达式等 第第2章中已经介绍了算术表达式、赋值表达式和章中已经介绍了算术表达式、赋值表达
3、式和逗号表达式,逗号表达式,本章本章将介绍将介绍关系表达式关系表达式、逻辑表达式逻辑表达式和和条件表达式条件表达式。关系表达式:关系表达式: 2+5=a & ch=z条件表达式条件表达式: xy?x:y6关系运算符关系运算符 关系运算符关系运算符: : 、= 、 =、 =、 !=!= 结合性为:结合性为:左结合左结合 优先级为:优先级为: 、= 、= = = = 、!= != 优先级相同(高)优先级相同(高) 优先级相同(低)优先级相同(低) 关系表达式的值有逻辑真和逻辑假。当表达式成关系表达式的值有逻辑真和逻辑假。当表达式成立时值为立时值为“真真”,用整数,用整数“1 1”表示;当表达式不表
4、示;当表达式不成立时值为成立时值为“假假”,用整数,用整数“0 0”表示表示 C C中无逻辑型数据,常用整型变量存放逻辑值中无逻辑型数据,常用整型变量存放逻辑值运算符运算符含义含义关系表达式实例关系表达式实例结果结果小于小于“abcd”abd”1=小于等于小于等于2+5大于大于Xy0=大于等于大于等于A=91=等于等于g=G0!=不等于不等于53!=107关系表达式举例关系表达式举例例例 设设a=a= 4 4 ,b=,b= f f ,判断下列关系表达式的值,判断下列关系表达式的值 A A B B 相当于:相当于:656665b ab 相当于:相当于: 4 4 f f 或或5210252102,
5、值为假,值为假 F F =b =b 相当于:相当于:70=10270=102,值为假,值为假注意:注意:进行相等比较时一定要用双等号进行相等比较时一定要用双等号“=”,因,因为为C C语言中的单个等号是赋值运算符。语言中的单个等号是赋值运算符。8逻辑运算符逻辑运算符逻辑运算符:逻辑运算符:!(!(非非) )、&(&(与与) )、|(|(或或) )优先次序:优先次序: 高高 低低结合性:结合性:右结合右结合 左结合左结合左结合左结合 运算规则:运算规则:运算符运算符含义含义逻辑表达式实例逻辑表达式实例结果结果&逻辑与逻辑与21 & 5-31|逻辑或逻辑或2=9 | 00!逻辑非逻辑非!(6*2)
6、0 逻辑表达式的值为逻辑真或逻辑假逻辑表达式的值为逻辑真或逻辑假9逻辑表达式的应用逻辑表达式的应用例例 设设a=1a=1,b=ab=a,c=3.0c=3.0,d=0d=0,e=3e=3,chch=A=A,判断下列逻辑表达式的值:判断下列逻辑表达式的值:!(c-b) !(c-b) 值为值为0 0 a=c | b=c a=c | b=a & =a & chch=z=A & b=A & b=0 & e=0 & e=9 判断数字字符,值为判断数字字符,值为1 1 a3-!b a3-!b 值为值为1 1 10逻辑表达式的应用逻辑表达式的应用main()main() int m1,m2,n=1; int
7、m1,m2,n=1; m1=(13) & n+; m1=(13) & n+; m2=31 | n+; m2=31 | n+; printf(m1=%d m2=%d n=%dn,m1,m2,n); printf(m1=%d m2=%d n=%dn,m1,m2,n); 在在C C的逻辑表达式的求解过程中,并不是所有的逻的逻辑表达式的求解过程中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时才执行该逻辑运算算符才能求出表达式的解时才执行该逻辑运算 程序的结果程序的结果m1=? m2=?11条件表达式条件表达式 由条件运算
8、符由条件运算符? ?和和: :把多个表达式连接起来的式子:把多个表达式连接起来的式子: e1 ? e2:e3其中:其中:e1e1、e2e2、e3e3可以是变量或表达式可以是变量或表达式 运算规则:若e1的值为真(非0值),则表达式的结果值取结果值取e2e2;否则;否则e1e1的值为假(的值为假(0 0值),值), 则表达式的结果值取则表达式的结果值取e3e3。 实例:实例:设设 a=2 a=2, ,b=4b=4, ,c=6c=6, ,求求x x和和y y的值。的值。x=ab?a:bx=aa?c:(b!=4?4:8)y=ca?c:(b!=4?4:8); ; y y的值为的值为6 6123.2if
9、3.2if语句语句ifif语句也称为条件语句,用于构成选择结构。语句也称为条件语句,用于构成选择结构。ifif是根是根据条件是否成立来控制执行不同的语句组,以完成不据条件是否成立来控制执行不同的语句组,以完成不同的功能。同的功能。条件可以是任何类型的表达式,如逻辑型,关系型,条件可以是任何类型的表达式,如逻辑型,关系型,数值型等,单个已赋过值的变量或常量也可以作为表数值型等,单个已赋过值的变量或常量也可以作为表达式的特例,如达式的特例,如x x或或5 5。if语句语句可可构成构成下列下列选择结构选择结构:13ifif语句的第一种形式语句的第一种形式- -可构成简单选择结构可构成简单选择结构if
10、if(表达式表达式) 语句组语句组执行过程:执行过程:若表达式的值为若表达式的值为真,则执行语句组;若表达真,则执行语句组;若表达式的值为假,则执行结构后式的值为假,则执行结构后的第的第1 1条语句条语句14简单选择结构的应用简单选择结构的应用#include stdio.h#include stdio.hmain()main() float sx,yw,average; float sx,yw,average; scanf(%f,%f,&sx,&yw ); scanf(%f,%f,&sx,&yw ); average=(sx+yw)/2.0; average=(sx+yw)/2.0; if(
11、average = 90) if(average = 90) printf( printf( Excellence ! nExcellence ! n );); 输入输入: :90,8090,80输出:输出:?输入输入: :96,8896,88输出:输出:?15简单选择结构的应用简单选择结构的应用例例: : 从键盘上任意输从键盘上任意输入三个整数入三个整数a,b,ca,b,c,并,并按从大到小的顺序显按从大到小的顺序显示出来示出来该算法假定程序处理后,该算法假定程序处理后,a a中放三个数中的最大值,中放三个数中的最大值,b b中放三个数中的次大值,中放三个数中的次大值,c c中放三个数中的最
12、小值中放三个数中的最小值 16ifif语句的第二种形式语句的第二种形式- -可构成两路选择结构可构成两路选择结构if(if(表达式表达式) ) 语句组语句组1 1else else 语句组语句组2 2执行过程执行过程 :若表达式的若表达式的值为真,则执行语句组值为真,则执行语句组1 1;若表达式的值为假,则;若表达式的值为假,则执行语句组执行语句组2 2。选择结构选择结构执行完成后,执行结构后执行完成后,执行结构后的第的第1 1条语句。条语句。17两路选择结构的应用两路选择结构的应用main()main() int exp; char ch; int exp; char ch; ch=getc
13、har(); ch=getchar(); exp=ch= exp=ch=a a & ch= & ch=| ch=A A & ch=& ch=a& c=A& c=a& c=A& c=0& c=0& c=9) printf( digit n); printf( digit n); elseelse ifif(c= ) (c= ) printf( space n); printf( space n); elseelse printf( printf(“ other n other n”); ); 213.3Switch3.3Switch多路选择语句多路选择语句每个常量表达式的值每个常量表达式的值(整
14、数或字符)不能(整数或字符)不能相同,次序不影响执相同,次序不影响执行结果行结果可以是整型、字符型、枚举型可以是整型、字符型、枚举型执行过程:执行过程:先计算先计算switch语句中表达式的值,再依次与语句中表达式的值,再依次与1到到n个常量表达式的值进行比较,当表达式的值与某个个常量表达式的值进行比较,当表达式的值与某个case后的常后的常量表达式的值相等时,则执行该量表达式的值相等时,则执行该case后的语句组。如果所有常后的语句组。如果所有常量表达式的值都不等于量表达式的值都不等于switch中表达式的值,则执行中表达式的值,则执行default后后的语句。的语句。break语句的功能是
15、结束语句的功能是结束switch选择结构,转去执行选择结构,转去执行结构后的结构后的第一条第一条语句。语句。22switchswitch语句的应用语句的应用例例从键盘上输入一个学生的总平均成绩(大于从键盘上输入一个学生的总平均成绩(大于0且小于且小于100),按分数段评定出成绩的相应等级,按分数段评定出成绩的相应等级,90以上为以上为A级,级,8089为为B级,级,7079为为C级,级,6069为为D级,级,59以下为以下为E级。级。问题分析:问题分析:switch语句中的表达式只能是整型或字符型,语句中的表达式只能是整型或字符型,所以所以可可用成绩的高位数字来确定其对应的分数段,而每一用成绩
16、的高位数字来确定其对应的分数段,而每一个分数段又对应个分数段又对应switch中的一路选择。可用表达式中的一路选择。可用表达式“(int)(成绩成绩/10)”计算出成绩的高位数字,其中,计算出成绩的高位数字,其中,“(int)”的功的功能是将表达式的值强制转换成整数。能是将表达式的值强制转换成整数。关键语句关键语句: :switchswitch(int)(score/10.0)(int)(score/10.0) case case 9 9: grade=A; break;: grade=A; break; case case 8 8: grade=B; break;: grade=B; bre
17、ak; case case 7 7: grade=C; break;: grade=C; break; case case 6 6: grade=D; break;: grade=D; break; case case 5 5: : case case 4 4: : case case 3 3: : case case 2 2: : case case 1 1: : case case 0 0: grade=E;: grade=E;能用能用if- else if来替换吗来替换吗?233.43.4选择结构的嵌套选择结构的嵌套当一个选择结构中又包含另一个选择结构时,称该当一个选择结构中又包含另一个
18、选择结构时,称该选择结构为嵌套的选择结构。选择结构为嵌套的选择结构。int a=1,b=3,c=5,d=4;int a=1,b=3,c=5,d=4;if(ab)if(ab)if(cd) x=1;if(cd) x=1;elseelseif(ac)if(ac)if(bd) x=2;if(by) max=x; else max=y; if(maxz) max=z; printf(n max=%dn,max) ; 程序程序27语法练习(语法练习(单选题单选题)1 1设设x x、y y和和z z是是intint型变量,且型变量,且x=3,y=4,z=5,x=3,y=4,z=5,则下面表达式中则下面表达式
19、中值为值为0 0的是的是 。A)A)x x & & y y B)x=y B)x=y C)x|y+z&y-z D)!(xy)&!z|1)C)x|y+z&y-z D)!(xy)&!z|1)2. 2. 下列表达式中,下列表达式中, 不满足不满足“当当x x的值为偶数时值为的值为偶数时值为真,为奇数时值为假真,为奇数时值为假”的要求。的要求。A)x%2=0 A)x%2=0 B)!x%2!=0 B)!x%2!=0 C)(x/2C)(x/2* *2-x)=0 D)!(x%2) 2-x)=0 D)!(x%2) 3. 3. 执行以下程序段后,变量执行以下程序段后,变量a,b,ca,b,c的值分别是的值分别是
20、int a,b,c,x=10,y=9;int a,b,c,x=10,y=9;a=(-x=y+)?-x:+y; b=x+; c=y;a=(-x=y+)?-x:+y; b=x+; c=y;A)9,9,9 B)8,8,10 C)9,10,9 D)1,11,10A)9,9,9 B)8,8,10 C)9,10,9 D)1,11,1028语法练习(语法练习(填空题填空题)4 4以下程序执行后的输出结果是以下程序执行后的输出结果是_。 main()main() int x=10,y=20 ,t=0; int x=10,y=20 ,t=0; if( if(x=yx=y) t=x; x=y; y=t;) t=x
21、; x=y; y=t; printf(%d,%dn,x,y); printf(%d,%dn,x,y); 5 5以下程序执行后的输出结果是以下程序执行后的输出结果是_。main()main() int n=0,m=1,x=2; int n=0,m=1,x=2; if(!n) x-=1;if(m) x-=2;if(x) x-=3; if(!n) x-=1;if(m) x-=2;if(x) x-=3; printf(%dn,x); printf(%dn,x); 29语法练习(语法练习(编程题编程题)6.编写一个程序,从键盘输入编写一个程序,从键盘输入1个整数,判断并输出个整数,判断并输出它是奇数还是偶数。它是奇数还是偶数。 请一位学生完成编程请一位学生完成编程30本章作业本章作业本章本章“3.6“3.6自测练习自测练习”全部全部教材教材C C语言程序设计习题与实践语言程序设计习题与实践第二部分中第第二部分中第3 3章中的:章中的:一、知识要点一、知识要点二、习题二、习题三、实验三、实验完成教学平台相应周中要求的所有作业并提交完成教学平台相应周中要求的所有作业并提交预习下一章的内容预习下一章的内容
限制150内