版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章选择结构
5.1
关系运算符和关系表达式一.关系运算符及其优先次序优先级相同(低)x!=0不等于!=(算术运算符)优先级相同(高)i<100小于<a==bc>='a'f>3.14a<=MAX举例(赋值运算符)等于==大于等于>=大于>小于等于<=优先级名称运算符例如:c>a+b c>(a+b) a==b<c a==(b<c) a=b>c a=(b>c)二.关系表达式
1.用关系运算符将两个表达式连接起来的式子,称关系表达式。算术表达式关系表达式逻辑表达式赋值表达式字符表达式高低例:a/21+3>b(a=3)>(b=5)'a'<'b'(a>b)<(b<c)2.关系表达式的值为逻辑值例:若a=3,b=2,c=1则
a>b 表达式的值为1(a>b)==c 表达式的值为1 b+c<a 表达式的值为0 d=a>bd的值为1 f=a>b>c f的值为0关系表达式成立时(真),其值为1关系表达式不成立时(假),其值为0一.逻辑运算符及其优先次序
§5.2逻辑运算符和逻辑表达式(x>y)&&(y>z)逻辑与&&(关系运算符)(x>3)||(x<-3)逻辑或||!(a>b)逻辑非!(算术运算符)举例(赋值运算符)优先级名称运算符逻辑运算的真值表P93ab!a!ba&&ba||b真真真假假真假假假假假假假假假假真真真真真真真真二.逻辑表达式1.用逻辑运算符将表达式连接起来的式子就是逻辑表达式。算术表达式关系表达式逻辑表达式赋值表达式字符表达式
例:!aa+3&&bx¦¦y(i>3)&&(j=4)高低p93
逻辑表达式的值应该是一个逻辑量“真”或“假”。C给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但判断一个量是否为“真”时,以0代表“假”,以非0代表“真”,即将一个非零的数值认作“真”。例:a=4,b=5!a a&&ba¦¦b !a¦¦b4&&0¦¦2
值为0值为1值为1值为1值为1
逻辑运算符两侧的运算对象不但可以是0和1,或者是0和非0的整数,也可以是字符型、实型或指针型等。系统最终以0和非0来判定它们属于“真”或“假”。例如:‘c’&&’d’
值为1(因为‘c’和’d’的ASCII值都不为0,按“真”处理
)
逻辑运算的真值表P94ab!a!ba&&ba||b非0非0非0000非010000000001111111例:a&&b&&cabc在进行逻辑表达式的求解中,并不是所有的逻辑运算都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的值时,才执行该运算符。非0000非0非010例:a||b||cabc非0000非0非010对&&运算符来说,只有a≠0时,才继续执行右面的运算。对||运算符来说,只有a=0,才继续进行右面的运算。例:a=1b=2c=3d=4m=1n=1(m=a>b)&&(n=c>d)
该逻辑表达式的值为:0该逻辑表达式执行结束后m的值为:0该逻辑表达式执行结束后n的值为:15.3if语句一.if语句的三种形式
1.if(表达式)语句 例:if(grade>=60)printf(“Passed");grade>=60print"Passed"假真x>yprint“x”print“y”假真语句2语句1表达式YN2.if(表达式)语句1else
语句2例:if(x>y)printf("%d",x);elseprintf("%d",y);NN表达式1表达式2语句2表达式m语句m语句nYYNY……语句13.if(表达式1)语句1 elseif(表达式2)语句2 ……elseif(表达式m)语句m else语句n
说明:⑴if后面的“表达式”一般为逻辑表达式或关系表达式,系统对表达式的值进行判断,若为0按“假”处理,若为非0,按“真”处理。
if(x>0)printf("%f",x);elseprintf("%f",-x);各有一个分号⑵后面两种形式的if语句中,每个else前面有一个分号,不要错认为是两个语句,它们都属于同一个if语句,
else不能单独用。⑶if和else后面可以使用复合语句,即用“{}”将n个语句括起来。例:if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%6.2f",area);}elseprintf("itisnotatriangle");voidmain(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}/*复合语句*/printf("%5.2f,%5.2f",a,b);}a>byesno交换a,b的值空abt方法1:
eg5.1.输入两个实数,按由小到大次序输出。方法2:a>byesno输出b,a输出a,b
main(){floata,b;scanf("%f,%f",&a,&b);if(a>b)printf("%f,%f\n",b,a);elseprintf("%f,%f\n",a,b);}
eg5.2.输入三个数,按由小到大顺序输出。voidmain(){floata,b,c,t;scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c);}tabc341217341234173434二.if语句的嵌套在if语句中又包含一个或多个if语句称为if语句的嵌套。
if() if()语句1 else语句2 else if()语句3 else语句4内嵌if语句内嵌if语句说明:应注意if与else的对应关系,else总是与它上面最近的if配对,若if与else的数目不一致,可以加{}来确定配对关系。eg5.3:有一函数输入一个X值,输出Y值Y=-1(X<0)0(X=0)1(X>0)#include<stdio.h>voidmain(){intx,y;scanf("%d",&x);if(x<=0)if(x==0)y=0;elsey=-1;elsey=1;printf("x=%d,y=%d\n",x,y);}(p100)if(x<0)y=-1;elseif(x==0)y=0;elsey=1;y=-1;if(x!=0)if(x>0)y=1;elsey=0;结果:x=0y=-1x=-1y=0(P102图5-9)Y=-1(X<0)0(X=0)1(X>0)三、条件运算符
1.条件表达式:取表达式
2的值表达式1取表达式
3的值非00if(a>b)max=a;elsemax=b;max=(a>b)?a:b;2.执行过程:如果表达式1为真,则条件表达式取表达式2的值,否则取表达式3的值。表达式1?表达式2:表达式3⒊说明:
①条件运算符是C语言中唯一的一个三目运算符。②条件运算符优先于赋值运算符。③条件运算符的结合方向为“右结合”。例:a>b?a:c>d?c:d相当于a>b?a:(c>d?c:d)
④表达式1、2、3可以是任意类型的。(字符型,整形、实型)例:x?‘a’:’b’;x>y?1:1.5⑤”表达式2”和”表达式3”可以是赋值表达式或函数表达式。例:a>b?(a=100):(b=100);a>b?printf(“%d”,a):printf(“%d”,b)
eg5.4:输入一个字符,判断它是否为大写字母,如果是,将它转换成小写字母,如果不是,不转换。然后输出最后得到的字符。#include<stdio.h>voidmain(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z')?(ch+32):ch;printf("%c",ch);}'A'<=ch<='Z'小结:1.关系运算符:>>=<<===!=2.逻辑运算符:!&&||3.if语句的三种形式:
a)
if(表达式)语句
b)
if(表达式)语句1else语句2
c)if(表达式1)语句1
elseif(表达式2)语句2
……
else语句有default子句
switch(表达式
){case常量1:语句1;
break;case常量2:语句2;
…break;case常量n:语句n;
break;default:
语句n+1}无default子句
switch(表达式){case常量1:语句1;break;case常量2:语句2;break;
…case常量n:语句n;break;}
break语句5.4switch语句(多分支选择语句)说明:(1)switch后面括弧内的“表达式”,可以是任意类型的表达式。(2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的
case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。(3)各个case的出现次序不影响执行结果。(4)多个case可以供用一组执行语句。如:case'A':case'B':case'C':printf(">60\n");若grade='A'
,则将输出:85~10070~8460~69<60errorswitch(grade){case'A':printf("85~100\n");case'B':printf("70~84\n");case'C':printf("60~69\n");case'D':printf("<60\n");default:printf("error\n");}break;break;
break;break;若grade='A',则输出结果为:
85~100break语句可以使流程跳出switch结构,继续执行switch语句下面的语句
给一百分制成绩,要求输出成绩等级‘A’,‘B’,‘C’,‘D’,‘E’。90分以上为‘A’,80-89分为‘B’,70-79分为‘C’,60-69分为‘D’,60分以下为‘E’。(P1115.6)根据grade确定分数段xx=‘A’x=‘B’x=‘C’x=‘E’x=‘D’0876543219读入学生成绩gradegrade<0||grade>100YN输出x输入数据有误,结束
#include<stdio.h>voidmain(){intgrade;charx;scanf("%d",&grade);if((grade>100)¦¦(grade<0))printf("\ndataerror\n");else{
switch(grade/10){case10:case9:x='A';break;case8:x='B';break;case7:x='C';break;case6:x='D';break;case5:case4:case3:case2:case1:case0:x='E';}printf("等级为:%c\n",x);}}eg5-6:求方程的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年重载eVTOL在高山基站物资投送中的应用
- 福建福州市仓山区第十二中学2026年初三第二学期期末联考化学试题试卷含解析
- 2026年“十五五”数字经济核心产业占比12.5%目标与AI机遇解读
- 2026年金融大模型“预训练 后训练”两阶段架构设计指南
- 2026年数据产权与传统物权知识产权异同比较分析
- 2026年临床病例引擎循证数据引擎医患交互仿真引擎技术解析
- 2026年澎湃OS自研大模型与PC端深度集成技术架构
- 高尔夫俱乐部管理经理职位职责和素质要求概述
- 社会公益活动与组织
- 酒店服务与管理专业人员的职业能力提升的面试全解析
- 医疗行业商业秘密保护典型案例评析与启示
- 中学生用电安全 课件
- 放射护理继续教育
- 地下商场火灾应急处置预案
- 瞳孔检查课件
- 疫苗冷链管理培训课件
- 游泳救生培训课件
- DB11∕T 2447-2025 村庄雨水排除与内涝防治技术规范
- 2026年浙江经贸职业技术学院单招职业适应性考试题库及参考答案详解1套
- 2026年初级银行从业资格之初级银行业法律法规与综合能力考试题库500道附答案(夺分金卷)
- 某市生态环保局大气监测站点运维方案
评论
0/150
提交评论