编程语言基础-C语言--第3章-分支程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章分支程序设计3.1关系表达式和逻辑表达式3.1.1关系运算关系运算就是对两个数据按它们值的大小进行比较的运算。判断它们是否符合给定条件:1.若符合,则结果为1(即“真”);2.否则结果为0(即“假”)。C语言提供了6种关系运算符,如表6-1所示。运算符含义优先级小于6=小于或等于大于=大于或等于==等于7!=不等于C语言关系运算符的优先级如下:关系运算符被分为两组不同的优先级==、!=优先级低于、=、、=关系运算符的优先级低于算术运算符。关系运算符的优先级高于赋值运算符。例如:ab+3等价于a(b+3)a=b3等价于a=(b3)a!=b3等价于a!=(b3)当相同优先级的关系运算符同时出现时,从左向右进行运算。例如:a!=b==c等价于(a!=b)==c3.1.2逻辑运算C语言有三种逻辑运算符,如表3-2所示。运算符含义优先级结合方向!逻辑非2右&&逻辑与11左||逻辑或12左说明:①逻辑运算符中,“&&”和“||”是双目运算符,要求有两个运算量;“!”是单目运算符。②下面是C语言逻辑运算符的优先级说明。1)“!”高于“&&”,“&&”高于“||”。2)“!”高于算术运算符,而“&&”和“||”低于关系运算符。③假设A和B是两个表达式,下面对逻辑运算进行说明。1)A&&B若A、B均为真,则“A&&B”值为真,否则为假。2)A||B若A、B均为假,则“A||B值”为假,否则为真。3)!A若A为真,则“!A”为假;否则为真。看下面的例子:1.(32)&&(75)值:0只有&&右面的子表达式为真2.(32)||(75)值:1只要求有一个子表达式为真3.!(32)值:1子表达式为假。④用逻辑运算符连接若干个表达式组成的式子,称逻辑表达式。因为任何类型表达式都有真假,所以逻辑运算符可以连接任何类型的数据。例如:x7&&x+y!=20等价于(x7)&&((x+y)!=20)3.2条件语句(if语句)if语句通常被称为选择语句或分支语句。它不再局限于顺序结构单一流程,而是用来对给定条件进行判定,根据其判定结果,从两种操作中选择其一。if语句用于实现分支结构,C语言提供了二种形式的if语句。3.2.1if语句一般形式:if(表达式)语句执行过程如图3-1所示。说明:1.执行if语句时,先对“表达式”进行求值,如果计算结果非0(为“真”),则执行其后的“语句”,否则跳过其后的“语句”。2.“表达式”的类型可以为任何类型的表达式。表达式语句真(非0)假(0)例3-1输入一个成绩score,如果成绩大于60,则显示“pass”,否则不显示。main(){intscore;scanf(%d,&score);if(score=60)printf(pass\n);getch();}运行结果:1.输入:65↙输出:pass2.若输入:56↙,则无输出3.2.2if__else语句格式:if(表达式)语句1;else语句2;执行过程如图3-2所示。表达式语句1语句2真(非0)假(0)例3-2:从键盘输入一个正整数,如果该数为6的倍数,就输出一个“Yes!”,否则输出一个“No!”。main(){intx;printf(请输入一个正整数:);scanf(%d,&x);if(x%6==0)printf(Yes!\n);elseprintf(No!\n);getch();}运行结果:1.请输入一个正整数:36↙Yes!2.请输入一个正整数:15↙No!3.2.3if语句的嵌套一般形式是:if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;else语句4;执行过程如图3-4所示。假表达式1语句1表达式2语句2表达式3语句3语句4假假真真真例3-3有一函数,写一程序,输入x,输出y值。x(x1)y=2x-1(1≤x10)3x-10(x≥10)main(){floatx,y;printf(请输入x的值:);scanf(%f,&x);if(x1)y=x;elseif(x10)y=2*x-1;elsey=3*x-10;printf(y值为:%.2f\n,y);getch();}3.2.4条件表达式条件运算符是三目运算符,由“?”和“:”组成,要求有三个运算对象。条件表达式的一般形式:表达式1?表达式2:表达式3执行过程如图3-6所示。计算表达式3的值表达式1计算表达式2的值真(非0)假(0)例3-5:编写一个程序,判断一个字符是否为大写英文字母,若是,则转换为小写字母。main(){charch;scanf(%c,&ch);ch=(ch='A'&&ch='Z'?ch+32:ch);printf(%c\n,ch);}3.3多分支语句(switch语句)一般形式如下:switch(表达式){case常量表达式1:语句部分1;[break;]case常量表达式2:语句部分2;[break;]┇case常量表达式n:语句部分n;[break;][default:语句部分n+1;]}switch语句的工作过程是:首先对switch语句括号中的表达式进行计算,然后依次与各case中的常量表达式的值比较,一旦匹配成功,则马上执行相应的语句部分,若遇break,结束switch语句;若均不匹配,则执行default(若有的话)后的语句部分。当程序执行break语句后,它就使程序流程跳出switch结构,并转而执行switch结构后面的第一条语句。例3-5:根据考试成绩的等级(A、B、C、D),输出“优秀”,“良好”等评语。#includestdio.hmain(){chargrade;printf(请输入成绩等级(A、B、C、D):);grade=getchar();switch(grade){case'A':printf(优秀\n);break;case'B':printf(良好\n);break;case'C':printf(及格\n);break;default:printf(不及格\n);break;}getch();}运行结果:请输入成绩等级(A、B、C、D):C↙及格执行过程grade优秀良好及格不及格‘A’‘B’C’default例3-6:在switch结构中多个case标号共用一组执行语句#includestdio.hmain(){chargrade;printf(请输入成绩等级(A、B、C、D):);grade=getchar();switch(grade){case'A':case'B':case'C':printf(及格\n);break;case'D':printf(不及格\n);break;default:printf(输入数据错误\n);}getch();}3.4分支程序设计应用实例例3-7:从键盘输入二个整数,输出其中最大者。main(){inta,b,max;printf(请输入二个整数:);scanf(%d%d,&a,&b);if(ab)max=a;elsemax=b;printf(二者中最大值为:%d,max);getch();}运行结果:1731↙二者中最大值为:31例3-8:从键盘输入二个整数,从小到大输出。方法:若第一个数较大,两者值互换。main(){inta,b,tmp;printf(输入二个整数:);scanf(%d%d,&a,&b);/*a=20,b=15*/if(ab){tmp=a;/*①tmp=20*/a=b;/*②a=15*/b=tmp;/*③b=20*/}printf(%d,%d,a,b);}例3-9:编写一个程序,判断一个字符是否为英文字母。例3-10:由半径为1的圆和半径为2的圆所围成的圆环如图3-3所示。编写程序,输入x,y,若点(x,y)在圆环内,则输出TRUE;否则输出FALSE。本章小结if语句和switch语句用于实现分支结构。分支结构的特点是语句由多条分支构成,在程序的一次运行过程中,通常只有其中一条分支的语句被执行,而其它分支上的语句被跳过。switch语句通常用于多重选择。switch语句根据表达式的值来选择执行哪个分支的语句。break语句则控制程序跳出switch结构。if结构和switch结构都有测试表达式,通常情况下,是关系表达式或逻辑表达式,但也允许为其它任何类型的表达式。任何类型的表达式,非0为真;0为假。C语言用1表示“真”,用0表示“假”。

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功