《第四讲选择程序设计.ppt》由会员分享,可在线阅读,更多相关《第四讲选择程序设计.ppt(17页珍藏版)》请在优知文库上搜索。
1、选择条件的表示;选择条件的表示;选择的实现语句;选择的实现语句;if(条件表达式) 语句组一else 语句组二关系运算及其表达式逻辑运算及其表达式if语句switch语句重点: 根据所指定的条件是否满足,决定从给定的操作中选择其一执行 所谓“关系运算”实际上就是“比较运算”,即将两个数据进行比较,判定两个数据是否符合给定的关系。 关系运算符关系运算符1关系运算符C语言提供6种关系运算符:(小于小于), (大于大于), =(大于或等于大于或等于), =(等于等于), !=(不等于不等于)注意注意:在语言中,“等于”关系运算符是双等号“= =”,而不是单等号“= ”(赋值运算符)。注:由于语言没有
2、逻辑型数据,所以用整数由于语言没有逻辑型数据,所以用整数“”表示表示“逻辑真逻辑真”,用整数,用整数“”表示表示“逻辑逻辑假假”。关系表达式的值是逻辑值。关系表达式的值是逻辑值。 关系表达式1关系表达式的概念所谓关系表达式是指,用关系运算符将两个表达式连接起来,进行关系运算的式子。例如,下面的关系表达式都是合法的: ab,a+bc-d,(a=3)=b,(ab)= =(bc)例如,假设num1=3,num2=4,num3=5,则:(1)num1num2的值=0(2)(num1num2)!=num3的值=1(3)num1num2num3的值=1(4)(num1=0”。如果需要描述“x=0”、同时“
3、x=0) & (x10)的值为“真”,(x5)的值为“假”,!x的值为“假”。运算规则1)&当且仅当两个运算量的值都为当且仅当两个运算量的值都为“真真”时,运算结果为时,运算结果为“真真”,否则为,否则为“假假”。2) | 当且仅当两个运算量的值都为当且仅当两个运算量的值都为“假假”时,运算结果为时,运算结果为“假假”,否则为,否则为“真真”。3) ! 当运算量的值为当运算量的值为“真真”时,运算结果为时,运算结果为“假假”;当运算量的值为;当运算量的值为“假假”时,运算结果为时,运算结果为“真真”&10110000|10111010!1001与(&)或(|)非(!) 假非 真 例如,下面的表
4、达式都是逻辑表达式:(x=0) & (x=10) 、(x5) 、! (x= =0)、a+bc&b=c逻辑表达式1逻辑表达式的概念 所谓逻辑表达式是指,用逻辑运算符将1个或多个表达式连接起来,进行逻辑运算的式子。?上述表达式中也用到了关系运算符why不叫关系表达式呢? 对于一个表达式它最后一步进行的是什么运算就叫什对于一个表达式它最后一步进行的是什么运算就叫什么表达式。么表达式。例如,假设num=12,则: !num的值= ,num=1 num31的值=1。v 对于逻辑与运算,如果第一个操作数被判定为“假”,系统不再判定或求解第二操作数。v 对于逻辑或运算,如果第一个操作数被判定为“真”,系统不
5、再判定或求解第二操作数。例如,假设n1、n2、n3、n4、x、y的值分别为1、2、3、4、1、1,则求解表达式“(x=n1n2)&(y=n3n4)”后,x的值变为,而y的值不变,仍等于1。逻辑运算符两侧的操作数,除可以是和非的整数外,也可以是其它任何类型的数据,如实型、字符型等。如:a&3.5的值= 1;说明说明if语句的一般格式: if(表达式表达式) 语句组语句组1; else 语句组语句组2; 注意:(注意:(1)if语句中的语句中的“表达式表达式”必须用必须用“(”和和“)”括起括起来。来。 (2)else子句(可选)是子句(可选)是if语句的一部分,必须与语句的一部分,必须与if配对
6、使用,不能单独使用。配对使用,不能单独使用。(3)当)当if和和else下面的语句组,仅由一条语句构成下面的语句组,仅由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。时,也可不使用复合语句形式(即去掉花括号)。if语句的执行过程(1)缺省else子句时 (即:if(表达式)语句;) 该语句的功能是:首先计算表达式的值然后判断其值是否为非零(真),若为非零(真),则执行语句组。否则直接转向执行下一条。其执行过程如右图所示。表达式表达式真真语句语句假For example : 输入一个数,若x为大于10的数,则y=x+10,并输出y的值。源程序清单如下:#includemain()int
7、 x,y;printf(“n input a integer to x:”);scanf(“%d”,&x);if(x10) y=x+10;Printf(“x=%d, y=%d”,x,y);(2)指定else子句时 (即:if(表达式)语句1; else 语句2;)表达式表达式真语句语句1假语句语句2For example :判断一个数是奇数还是偶数,并把结果显示出来。#include“stdio.h”main()int x;printf(“n please input a integer to x:”);scanf(“%d”,&x);if(x%2=0)printf(“n %d is a eve
8、n number!”,x);else printf(“n %d is a odd number!”,x);1、在if语句中又完全包含了一个或多个if语句称为if语句的嵌套。2、if语句嵌套时,else子句与在它上面、距它最近、且尚未匹配的if配对一般格式为:表达式表达式1表达式表达式2表达式表达式3表达式表达式n语句语句1语句语句3语句语句n语句语句n+1语句语句2真真真真假假假假if语句的嵌套与嵌套匹配原则语句的嵌套与嵌套匹配原则if(表达式一)语句一else if(表达式二)语句二 else if(表达式三)语句三 else.For example:某年高考分数规定。600分以上入取第一本
9、,550分以上录取第二本,500分以上录取第三本,450分以上录取专科,否则不能录取。输入高考成绩,要求输出应入什么大学。#includestdio.hmain() int score;printf(n please input your score:);scanf(%d,&score);if(score=600)printf(n best you can enter university);else if(score=550)printf(n better you can enter college);else if(score=500)printf(n good you can enter
10、 third college);else if(score=450)printf(n you you can enter technological academy);else printf(n sorry you cannt enter);switch语句的一般形式:switch(表达式) case 常量表达式1:语句组1;break; case 常量表达式2:语句组2;break; . case 常量表达式:语句组n;break; default:语句组:语句组n+1;break; 前面介绍的if语句,常用于两情况的选择结构,要表示两种以上条件的选择结构,则要用if语句的嵌套形式,但如果嵌
11、套的if语句比较多时,程序可读性就差。因此,C语言提供了switch语句来直接实现多种情况的选择结构。Switch(表达式)表达式)常量表达式1常量表达式n常量表达式2常量表达式n+1语句语句1语句语句2语句语句n语句语句n+1breakbreakbreakbreakSwitch语句的下一语句语句的下一语句switch语句的一般形式:switch(表达式) case 常量表达式1:语句组1;break;case 常量表达式2:语句组2;break; .case 常量表达式:语句组n;break;default:语句组语句组n+1;break; For example : 某幼儿园只收2至6岁的
12、小孩。23岁入小班,4岁入中班,56岁入大班。输入年龄,要求输出应入什么班。Main() int age;Printf(“n input a age:”);Scanf(“%d”,&age);Switch(age)case 2: case 3: printf(“n Enter Lower class!”); break; case 4: printf(“n Enter Middle class!”); break; case 5:case 6: printf(“n Enter Higher class!”); break;default : printf(“n Cant enter!”);(1)
13、每个case后面“常量表达式”的值,必须各不相同,否则会出现相互矛盾的现象(即对表达式的同一值,有两种或两种以上的执行方案)。(2)case后面的常量表达式仅起语句标号作用,并不进行条件判断和错误检测。系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断,所以必须加上break语句,以便结束switch语句。(3)各case及default子句的先后次序,不影响程序执行结果。(4)用switch语句实现的多分支结构程序,完全可以用if语句或if语句的嵌套来实现。(课后去实现)。思考题思考题:如果去掉程序中的所有:如果去掉程序中的所有break语句,且输入的年龄为语句,且输入的年龄为2,输,输出会如何?出会如何?相关说明相关说明