




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 选择结构程序设计选择结构的作用是,根据所指定的条件是否满足,决定从给定的两组操作选择其一。在C语言中选择结构是用if语句实现的。5.1 关系运算符和关系表达式1.关系运算符实际上是比较运算符。2.C的关系运算符有: (小于) (大于) = (大于或等于) = (等于) != (不等于) 优先级相同 (低)3.关于优先次序: 前4种关系运算符(,)的优先级别相同,后两种也相同。前4种高于后两种。例如,“”优先于“”。而“”与“a+b 等效于 c(a+b) ab=c 等效于(ab)=c a=bc 等效于a=(bc 等效于a=(bc)4. 关系表达式(1)用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称为关系表达式。例如:ab, a+bb+c,(a= =3)(b= =5), ab)(b=0”的值为“真”。(3)在C中都用数值1代表“真”,用0代表“假”。如果有以下赋值表达式:假定 a=3,b=2,c=1d=ab 则d得到的值为1f=abc f得到的值为0(4)关系运算符的运算方向为:由左向右5.2 逻辑运算符和逻辑表达式1.用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。2.C提供3种逻辑运算符: & 逻辑与 | 逻辑或 ! 逻辑非逻辑运算举例如下: a & b 若a,b为真,则a & b为真。 a|b 若a,b之一为真,则a|b为真。 !a 若a为真,则!a为假。2.优先次序:(1) !(非) &(与) |(或),即“!”为三者中最高的。(2) 逻辑运算符中的“&”和“|”低于关系运算符,“!”高于算术运算符。例如: (ab) & (xy) 可写成 ab & xy (a=b) | (x=y) 可写成 a=b | x=y (!a) | (ab) 可写成 !a | ab3. 逻辑表达式 将两个关系表达式用逻辑运算符连接起来就成为一个逻辑表达式,逻辑表达式的值是一个逻辑量“真”或“假”。采取的标准是: 如果其值是0就认为是“假”,如果其值是非0就认为是“真”。例如:(1) 若a=4,则!a的值为0。因为a的值为非0,被认作“真”,对它进行“非”运算,得“假”,“假”以0代表。(2) 若a=4,b=5,则a & b的值为1。因为a和b均为非0,被认为是“真” 。(3) a,b值同前,a-b|a+b的值为1。因为a-b和a+b的值都为非零值。(4) a,b值同前,!a | b的值为1。(5) 4 & 0 | 2 的值为1。4. 对&运算符来说,只有前面的表达式为真,才继续进行右面的运算,例如:a&b&c。对| |运算符来说只有前面的表达式为假,才继续进行右面的运算,例如:a|b|c。5. 3 if语句1.if语句是用来判断所给定的条件是否满足,根据判断的结果(真或假)决定执行给出的两种操作之一。2.if语句的3种形式(1)if (条件表达式 ) 语句; if (xy) printf(“%d”,x); if(条件表达式) 复合语句; 例如:求x的绝对值#includevoid main( )int x, absx;printf(please input x=);scanf(%d,&x);absx=x;if(x0)absx=-x;printf(x=%dt|x|=%dn,x,absx);(2)if ( 条件 )语句1;else语句2;例如:求x的绝对值#includevoid main( )int x, absx;printf(please input x=);scanf(%d,&x);if(x=0)absx=x; else absx=-x;printf(x=%dt|x|=%dn,x,absx);(3)在if语句中又包含一个或多个if语句,形式为: if(表达式1) 语句1; elseif (表达式2) 语句2;else if(表达式3) 语句3;else 语句n+1;语句2,n可以是复合语句,每层的if与else配对,或者用来确定层次关系。表达式1语句1表达式2语句2表达式3语句3表达式4语句5语句4即:注意:(1)3种形式的if语句中在if后面都有表达式,一般为逻辑表达式或关系表达式。 (2)第二、第三种形式的if语句中,在每个else前面有一个分号,整个语句结束处有一个分号。 (3)else语句不能单独使用,它必须是if语句的一部分,与if配对使用。3.If语句的嵌套 在if语句中又包含一个或多个if语句的嵌套。 If() If()语句1 else语句2Else If()语句3 Else 语句4 (1)if与else的配对原则:else总是与它上面最近的且尚未配对的if配对。 (2)如果if与else的数目不一样,为实现程序设计者的企图,可以加花括号来确定配对关系。3. 条件运算符: ? : 条件运算符是C语言中唯一一个三目运算符。4. 条件表达式的一般形式: 表达式1?表达式2:表达式3例如: (ab) ? c=a:c=b c=(ab)?a:b 说明:(1)条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若为表达式1的值为0(假)则求解表达式3,此时表达式3的值就作为整个条件表达式的值。(2) 条件运算符优先于赋值运算符,低于关系运算符和算术运算符。(3)条件运算符的结合方向为“自右至左”。结合方向为“自右至左”ab?a:cd?c:d 等价于 ab?a:(cd?c:d)例如:#includevoid main() char ch; scanf(%c,&ch); ch=(ch=A&ch=Z)?(ch+32):ch; printf(%cn,ch);5.4 switch语句1.switch语句直接处理多分支选择。2.switch语句的一般形式:switch(表达式)case 常量表达式1: 语句1case 常量表达式2: 语句2default: 语句n+1说明:(1) switch后面括号内的“表达式”,可以为任何类型。(2) 当表达式的值与某一个case后面的常量表达式的值相等时,就执行case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。(3) 每一个case常量表达式的值必须互不相同;否则就会出现相互矛盾的现象。(4) 每个case和default的出现次序不影响执行结果。(5) 执行完一个case后面的语句后,流程控制转移到下一个case继续执行。例如:根据学生成绩等级打印出分数段#includevoid main() char grade; scanf(“%c”,&grade); switch(grade) case A:printf(“85100n“); break;case B:printf(“7084n“); break;case C:printf(“6069n“); break;case D:printf(“60n“); break;default: printf(“errorn“); #includevoid main() char grade; scanf(“%c”,&grade); switch(grade) case A: case B:case C:printf(“PASSn“); break;case D:printf(“FAILn“); break; default: printf(“errorn“); 5.5 程序举例运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下: s250km 没有折扣 250s500 2折扣 500s1000 5折扣 1000s2000 8折扣 2000s3000 10折扣 3000s 15折扣设每公里每吨货物的基本运费为p(price的缩写),货物重为w(wright的缩写),距离为,折扣为d(discount的缩写),则总运费f(freight的缩写)的计算公式为 f = p * w * s * (1 - d)程序如下: #include void main( )int c,s; float p,w,d,f; printf(please enter p,w,s:);scanf(“%f,%f,%d”,&p,&w,&s); if(s=3000) c=12; else c=s/250; switch (c) case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4:case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15;break
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高一物理电磁感应现象中的能量转换原理教学教案
- 科学实验室:科学实验活动教学计划
- 写人作文蜡烛老师750字(10篇)
- 时尚猫咪课件
- 时尚分销专业知识培训课件
- 读后感读闪着泪光的决定有感500字8篇
- 数据保护工具的合规性与隐私保障方案
- 我爱我温馨和谐的家550字13篇范文
- 纪检委员工作职责
- 文化娱乐行业市场趋势报告表
- 基于Java的网上书城的设计与实现
- 酒店客房验收工程项目检查表(双床房、大床房、套房)
- 开音节闭音节中元音字母的发音规律练习
- 电力设备预防性试验及维护保养方案
- 融资性担保贷款保后检查表
- 公司人力资源管理制度管理制度
- ASTM E155标准图谱(数码照片—卷Ⅰ铝合金)(课堂PPT)
- 合同转让三方协议范本
- 动物防疫与检疫课程标准
- 变电检修管理通用细则 第6分册 电流互感器检修细则
- 洁净厂房验收规范
评论
0/150
提交评论