04-逻辑运算和判断选取控制_第1页
04-逻辑运算和判断选取控制_第2页
04-逻辑运算和判断选取控制_第3页
04-逻辑运算和判断选取控制_第4页
04-逻辑运算和判断选取控制_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1,第四章选择结构程序设计,关系运算符和关系表达式逻辑运算符和逻辑表达式if语句switch语句程序举例,上一章介绍了最简单的C程序设计,实际上是由输入语句、赋值语句、输出语句等组成的顺序结构程序。本章介绍选择结构程序设计,下章介绍循环程序设计。,2,一、关系运算符,关系运算符又称比较运算符,用来对两个值进行比较,判断比较的结果是否符合给定的条件。,如a4c(大于)=(大于或等于)=bab=ca=bc,(ca)=b(ab)=ca=(bc),6种关系运算符及其优先级,一、关系运算符,4.1关系运算符和关系表达式,4,用关系运算符将两个表达式连接起来构成的式子叫做关系表达式。其中表达式可以是算术表达式、赋值表达式、字符表达式,也可以就是关系表达式,还可以是下节要介绍的逻辑表达式。关系表达式的值是一个逻辑值,即“真”或“假”。在C语言中,“真”用1表示,“假”用0表示。,例:aba+bb+c(a=3)(b=5)ab的值为1abc的值为0b+cb)=c的值为1;,注意:关系运算符是左结合数值量比较:数字的大小字符量比较:ASCII码大小,二、关系表达式,4.1关系运算符和关系表达式,6,则!a的值为0例2:若a=3,b=4;则a则a(m=ab),0,1,12,二、逻辑表达式,4.2逻辑运算符和逻辑表达式,关系表达式和逻辑表达式用途(表示复杂的条件),例:判别某一年year是否闰年。,闰年的条件是符合下面二者之一:能被4整除,但不能被100整除。能被400整除。,(year%4=0,14,4.3if语句,一、if语句的三种形式,形式2:if(表达式)语句1else语句2,if(xy)printf(“%d”,x);elseprintf(“%d”,y);,15,4.3if语句,一、if语句的三种形式,形式3:if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3else语句n+1,16,4.3if语句,一、if语句的三种形式,.if(number5000)rate=0.15;elseif(number3000)rate=0.10;elseif(number1000)rate=0.075;elseif(number500)rate=0.05;elserate=0;cost=number*rate;.,17,4.3if语句,二、使用if语句的注意事项,三种形式的if语句后面的表达式一般为逻辑表达式或关系表达式,但也可以是其它数值类型的表达式(如整型、实型、字符型和指针型),if(3)printf(“O.K.”);if(a)printf(“O.K.”);y=0;if(y=0)printf(“O.K.”);y=0;if(!y)printf(“O.K.”);,18,4.3if语句,二、使用if语句的注意事项,如果语句i为多个操作语句,则必须用括起来成为一个复合语句。,if(r0)circle=2*3.1415926*r;area=3.1415926*r*r;,19,4.3if语句,例1输入两个实数,按从小到大输出。#includemain()floata,b,t;scanf(%f,%f,例2输入三个实数,按从小到大输出。#includemain()floata,b,c,t;scanf(%f,%f,%f,if(ab)t=a;a=b;b=t;printf(%f,%fn,a,b);,20,4.3if语句,三、if语句的嵌套,在if语句中又包含一个或多个if语句称为if语句嵌套。应该注意if与else的配对关系。从最内层开始,else总是与它上面最近的而且是未曾配对的if配对。试分析:,if()if()语句1else语句2elseif()语句3else语句4,if()if()语句1elseif()语句2else语句3,if()if()语句1elseif()语句2else语句3,21,4.3if语句,三、if语句的嵌套,例:下面实现函数的程序段哪些是正确的,哪些是错误的?,if(x=0)if(x0)y=1;elsey=0;elsey=-1;,y=-1;if(x!=0)if(x0)y=1;elsey=0;,y=0;if(x=0)if(x0)y=1;elsey=-1;,22,4.3if语句,三、条件运算符,if(ab)max=a;elsemax=b;可改为:max=(ab)?a:b;,若在if语句中,在表达式为“真”和“假”时,都只执行一个赋值语句给同一个变量赋值,则可以用简单的条件运算符处理。如:,表达式1?表达式2:表达式3,条件运算符要求三个操作对象,是C语言中唯一的三目运算符。其一般形式为:,23,4.3if语句,三、条件运算符,max=ab?a:b;max=(ab)?a:b;,条件运算符优先于赋值运算符,而低于算术运算符和关系运算符。,ab?a:b+1;ab?a:(b+1);,条件运算符的结合方向为自右向左。,ab?a:cb?a:(cb?(a=100):(b=100);,ab?printf(“%d”,a):printf(“%d”,b);,printf(“%d”,ab?a:b);,if(ab)printf(“%d”,a);elseprintf(“%d”,b);,25,4.4switch语句,一、if语句与switch语句的区别,if语句只有两个分支可供选择。switch语句可用于多个分支选择多分支选择也可以用嵌套的if语句实现,但程序冗长且可读性差。,switch(表达式)case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n+1;,26,4.4switch语句,例:根据考试成绩的等级打印出百分制分数段:switch(grade)caseA:printf(“85100n”);caseB:printf(“7084n”);caseC:printf(“6069n”);caseD:printf(“60n”);default:printf(“errorn”);,27,4.4switch语句,二、switch语句说明,switch后面括号内的“表达式”可以是整型或字符表达式,也可以是枚举型数据。新的ANSI标准允许上述表达式和case后的常量表达式为任何类型。每一个case后的常量表达式的值必须互不相同。各个case和default的出现次序不影响执行结果。,caseB:printf(“7084n”);caseB:printf(“6069n”);,caseC:printf(“6069n”);caseB:printf(“7084n”);,28,4.4switch语句,二、switch语句说明,在执行switch语句时,根据switch后面表达式的值找到匹配的入口标号,然后从此标号开始执行下去,不再进行判断。,switch(grade)caseA:printf(“85100n”);caseB:printf(“7084n”);caseC:printf(“6069n”);caseD:printf(“60n”);default:printf(“errorn”);,break;break;break;break;,29,4.4switch语句,二、switch语句说明,多个case可以共用一组执行语句。,例:判断闰年每个月的天数,switch(month)case2:printf(“thismonthhas29daysn”);break;case4:case6:case9:case11:printf(“thismonthhas30daysn”);break;default:printf(“thismonthhas31daysn”);,30,4.5程序举例,例1有一函数(见下面),写一程序,输入x,输出x和y。,#includemain()intx,y;printf(“inputx:”);scanf(%d,31,4.5程序举例,例2给出一百分制成绩,要求输出成绩等级及评语。85100为A,7084为B,6069为C,小于60为D其它为E。,#includemain()intscore;chargrade;printf(“inputscore:);scanf(%d,32,switch(grade)caseA:printf(Grade%c

温馨提示

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

评论

0/150

提交评论